Full_Name: Russ Allbery Version: 2.3.35 OS: Debian URL: Submission from: (NULL) (171.66.157.14)
While investigating another issue with back_perl, I tried to use the SampleLDAP.pm module that comes with the OpenLDAP source. I added the following to my slapd.conf:
moduleload back_perl
# ...
database perl suffix "o=AnyOrg,c=US" perlModulePath /home/eagle/SampleLDAP.pm perlModule SampleLDAP
The result of slapd -d 1 is: ... WARNING: No dynamic config support for database perl. config_build_entry: "olcDatabase={2}perl" backend_startup_one: starting "dc=Stanford,dc=EDU" bdb_db_open: unclean shutdown detected; attempting recovery. bdb_db_open: dbenv_open(/var/lib/ldap) backend_startup_one: starting "o=AnyOrg,c=US" Can't call method "init" on an undefined value.
I suspect the code in perl_back_db_open where it does:
dSP; ENTER; SAVETMPS;
PUSHMARK(sp); XPUSHs( perl_back->pb_obj_ref );
PUTBACK;
#ifdef PERL_IS_5_6 count = call_method("init", G_SCALAR); #else count = perl_call_method("init", G_SCALAR); #endif
The error message is consistent with perl_back->pb_obj_ref being an undefined value. Why it's undefined, though, I'm not sure.
See also http://www.openldap.org/lists/openldap-software/200705/msg00126.html