benintechnologies@yahoo.fr wrote:
Full_Name: Ben Version: 2.4.34 OS: Debian 6.0.4 URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (41.79.217.116)
Hi,
I'm unable to set up a back-perl backend directly in cn=config mode. However, if I set it up in slapd.conf mode, and then convert it to cn=config mode, it works fine. It's not convenient, because I have to set all my perl backends up before converting to cn=config.
The crash is deep inside libperl.
It appears to affect other platforms as well: https://bugzilla.redhat.com/show_bug.cgi?id=967719
Most likey you will need to build your own libperl in order to fix this, tho at the moment I have no idea what perl configuration changes will be required.
5259e408 conn=1000 op=1 do_add ber_scanf fmt ({m) ber: 5259e408 conn=1000 op=1 do_add: dn (olcDatabase=perl,cn=config) ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt ({m{W}}) ber: ber_scanf fmt (}) ber: 5259e408 >>> dnPrettyNormal: <olcDatabase=perl,cn=config> => ldap_bv2dn(olcDatabase=perl,cn=config,0) <= ldap_bv2dn(olcDatabase=perl,cn=config)=0 => ldap_dn2bv(272) <= ldap_dn2bv(olcDatabase=perl,cn=config)=0 => ldap_dn2bv(272) <= ldap_dn2bv(olcDatabase=perl,cn=config)=0 5259e408 <<< dnPrettyNormal: <olcDatabase=perl,cn=config>, <olcDatabase=perl,cn=config> 5259e408 >>> dnPretty: <dc=mydomain,dc=org> => ldap_bv2dn(dc=mydomain,dc=org,0) <= ldap_bv2dn(dc=mydomain,dc=org)=0 => ldap_dn2bv(272) <= ldap_dn2bv(dc=mydomain,dc=org)=0 5259e408 <<< dnPretty: <dc=mydomain,dc=org> 5259e408 >>> dnNormalize: <dc=mydomain,dc=org> => ldap_bv2dn(dc=mydomain,dc=org,0) <= ldap_bv2dn(dc=mydomain,dc=org)=0 => ldap_dn2bv(272) <= ldap_dn2bv(dc=mydomain,dc=org)=0 5259e408 <<< dnNormalize: <dc=mydomain,dc=org> 5259e408 >>> dnPretty: <cn=Manager,dc=mydomain,dc=org> => ldap_bv2dn(cn=Manager,dc=mydomain,dc=org,0) <= ldap_bv2dn(cn=Manager,dc=mydomain,dc=org)=0 => ldap_dn2bv(272) <= ldap_dn2bv(cn=Manager,dc=mydomain,dc=org)=0 5259e408 <<< dnPretty: <cn=Manager,dc=mydomain,dc=org> 5259e408 >>> dnNormalize: <cn=Manager,dc=mydomain,dc=org> => ldap_bv2dn(cn=Manager,dc=mydomain,dc=org,0) <= ldap_bv2dn(cn=Manager,dc=mydomain,dc=org)=0 => ldap_dn2bv(272) <= ldap_dn2bv(cn=manager,dc=mydomain,dc=org)=0 5259e408 <<< dnNormalize: <cn=manager,dc=mydomain,dc=org> 5259e408 oc_check_required entry (olcDatabase=perl,cn=config), objectClass "olcDbPerlConfig" 5259e408 oc_check_allowed type "objectClass" 5259e408 oc_check_allowed type "olcDatabase" 5259e408 oc_check_allowed type "olcSuffix" 5259e408 oc_check_allowed type "olcAddContentAcl" 5259e408 oc_check_allowed type "olcLastMod" 5259e408 oc_check_allowed type "olcMaxDerefDepth" 5259e408 oc_check_allowed type "olcReadOnly" 5259e408 oc_check_allowed type "olcRootDN" 5259e408 oc_check_allowed type "olcRootPW" 5259e408 oc_check_allowed type "olcSyncUseSubentry" 5259e408 oc_check_allowed type "olcMonitoring" 5259e408 oc_check_allowed type "olcPerlModulePath" 5259e408 oc_check_allowed type "olcPerlModule" 5259e408 oc_check_allowed type "olcPerlFilterSearchResults" 5259e408 oc_check_allowed type "structuralObjectClass" 5259e408 >>> dnNormalize: <olcDatabase={3}perl> 5259e408 <<< dnNormalize: <olcDatabase={3}perl> 5259e408 >>> dnPrettyNormal: <dc=mydomain,dc=org> => ldap_bv2dn(dc=mydomain,dc=org,0) <= ldap_bv2dn(dc=mydomain,dc=org)=0 => ldap_dn2bv(272) <= ldap_dn2bv(dc=mydomain,dc=org)=0 => ldap_dn2bv(272) <= ldap_dn2bv(dc=mydomain,dc=org)=0 5259e408 <<< dnPrettyNormal: <dc=mydomain,dc=org>, <dc=mydomain,dc=org> 5259e408 >>> dnPrettyNormal: <cn=Manager,dc=mydomain,dc=org> => ldap_bv2dn(cn=Manager,dc=mydomain,dc=org,0) <= ldap_bv2dn(cn=Manager,dc=mydomain,dc=org)=0 => ldap_dn2bv(272) <= ldap_dn2bv(cn=Manager,dc=mydomain,dc=org)=0 => ldap_dn2bv(272) <= ldap_dn2bv(cn=manager,dc=mydomain,dc=org)=0 5259e408 <<< dnPrettyNormal: <cn=Manager,dc=mydomain,dc=org>, <cn=manager,dc=mydomain,dc=org> 5259e408 perl backend db init
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffebfff700 (LWP 20520)] 0x00007ffff74f5b7d in Perl_gv_fetchpvn_flags () from /usr/lib/libperl.so.5.14 (gdb) bt #0 0x00007ffff74f5b7d in Perl_gv_fetchpvn_flags () from /usr/lib/libperl.so.5.14 #1 0x00007ffff74ea3ed in Perl_get_hv () from /usr/lib/libperl.so.5.14 #2 0x00007ffff00a1241 in boot_Fcntl () from /usr/lib/perl/5.14/auto/Fcntl/Fcntl.so #3 0x00007ffff755982f in Perl_pp_entersub () from /usr/lib/libperl.so.5.14 #4 0x00007ffff7550cc6 in Perl_runops_standard () from /usr/lib/libperl.so.5.14 #5 0x00007ffff74ec5ee in Perl_call_sv () from /usr/lib/libperl.so.5.14 #6 0x00007ffff74ecc2d in Perl_call_list () from /usr/lib/libperl.so.5.14 #7 0x00007ffff74d6739 in ?? () from /usr/lib/libperl.so.5.14 #8 0x00007ffff74e3e11 in Perl_newATTRSUB () from /usr/lib/libperl.so.5.14 #9 0x00007ffff74e4518 in Perl_utilize () from /usr/lib/libperl.so.5.14 #10 0x00007ffff7512b3f in Perl_yyparse () from /usr/lib/libperl.so.5.14 #11 0x00007ffff758b38d in ?? () from /usr/lib/libperl.so.5.14 #12 0x00007ffff7595821 in Perl_pp_require () from /usr/lib/libperl.so.5.14 #13 0x00007ffff7550cc6 in Perl_runops_standard () from /usr/lib/libperl.so.5.14 #14 0x00007ffff74ec5ee in Perl_call_sv () from /usr/lib/libperl.so.5.14 #15 0x00007ffff74ecc2d in Perl_call_list () from /usr/lib/libperl.so.5.14 #16 0x00007ffff74d6739 in ?? () from /usr/lib/libperl.so.5.14 #17 0x00007ffff74e3e11 in Perl_newATTRSUB () from /usr/lib/libperl.so.5.14 #18 0x00007ffff74e4518 in Perl_utilize () from /usr/lib/libperl.so.5.14 #19 0x00007ffff7512b3f in Perl_yyparse () from /usr/lib/libperl.so.5.14 #20 0x00007ffff758b38d in ?? () from /usr/lib/libperl.so.5.14 #21 0x00007ffff7595821 in Perl_pp_require () from /usr/lib/libperl.so.5.14 #22 0x00007ffff7550cc6 in Perl_runops_standard () from /usr/lib/libperl.so.5.14 #23 0x00007ffff74ec5ee in Perl_call_sv () from /usr/lib/libperl.so.5.14 #24 0x00007ffff74ecc2d in Perl_call_list () from /usr/lib/libperl.so.5.14 #25 0x00007ffff74d6739 in ?? () from /usr/lib/libperl.so.5.14 #26 0x00007ffff74e3e11 in Perl_newATTRSUB () from /usr/lib/libperl.so.5.14 #27 0x00007ffff74e4518 in Perl_utilize () from /usr/lib/libperl.so.5.14 #28 0x00007ffff7512b3f in Perl_yyparse () from /usr/lib/libperl.so.5.14 #29 0x00007ffff758b38d in ?? () from /usr/lib/libperl.so.5.14 #30 0x00007ffff7596824 in Perl_pp_entereval () from /usr/lib/libperl.so.5.14 #31 0x00007ffff74ebd31 in Perl_eval_sv () from /usr/lib/libperl.so.5.14 #32 0x00007ffff74ebe84 in Perl_eval_pv () from /usr/lib/libperl.so.5.14 ---Type <return> to continue, or q <return> to quit--- #33 0x00000000005f345a in perl_cf (c=0x7fffebffd2f0) at ../../../../head/servers/slapd/back-perl/config.c:177 #34 0x0000000000442a7b in config_set_vals (Conf=0x90ed60, c=0x7fffebffd2f0) at ../../../head/servers/slapd/config.c:345 #35 0x0000000000442fcf in config_add_vals (Conf=0x90ed60, c=0x7fffebffd2f0) at ../../../head/servers/slapd/config.c:418 #36 0x0000000000443c9a in config_parse_add (ct=0x90ed60, c=0x7fffebffd2f0, valx=0) at ../../../head/servers/slapd/config.c:689 #37 0x0000000000439c1b in config_add_internal (cfb=0x9105e0, e=0xa52bb8, ca=0x7fffebffd2f0, rs=0x7fffebffe970, renum=0x7fffebffd2e8, op=0x7fffe4002670) at ../../../head/servers/slapd/bconfig.c:5439 #38 0x000000000043a83e in config_back_add (op=0x7fffe4002670, rs=0x7fffebffe970) at ../../../head/servers/slapd/bconfig.c:5666 #39 0x000000000045ba65 in fe_op_add (op=0x7fffe4002670, rs=0x7fffebffe970) at ../../../head/servers/slapd/add.c:334 #40 0x000000000045b2e2 in do_add (op=0x7fffe4002670, rs=0x7fffebffe970) at ../../../head/servers/slapd/add.c:194 #41 0x00000000004524a1 in connection_operation (ctx=0x7fffebffeb60, arg_v=0x7fffe4002670) at ../../../head/servers/slapd/connection.c:1134 #42 0x0000000000452b1b in connection_read_thread (ctx=0x7fffebffeb60, argv=<optimized out>) at ../../../head/servers/slapd/connection.c:1270 #43 0x000000000061435a in ldap_int_thread_pool_wrapper (xpool=0x9e4d00) at ../../../head/libraries/libldap_r/tpool.c:945 #44 0x00007ffff728ee9a in start_thread (arg=0x7fffebfff700) at pthread_create.c:308 #45 0x00007ffff62f6cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #46 0x0000000000000000 in ?? ()
Here's the ldif file I'm using to set up a back-perl backend in cn=config mode (it's inspired from the files I get by converting slapd.conf into cn=config with slaptest)
# Load dynamic backend modules dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/local/libexec/openldap olcModuleload: back_perl.la
# Database settings dn: olcDatabase=perl,cn=config objectClass: olcDatabaseConfig objectClass: olcDbPerlConfig olcDatabase: perl olcSuffix: dc=mydomain,dc=org olcAddContentAcl: FALSE olcLastMod: TRUE olcMaxDerefDepth: 15 olcReadOnly: FALSE olcRootDN: cn=Manager,dc=mydomain,dc=org olcRootPW:: c2VjcmV0 olcSyncUseSubentry: FALSE olcMonitoring: FALSE olcPerlModulePath: /usr/local/etc/openldap/perl olcPerlModule: SampleLDAP olcPerlFilterSearchResults: FALSE
And here's what I get when I try to load the file: ldapadd -Y EXTERNAL -H ldapi:/// -f perl-backend.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=module,cn=config" adding new entry "olcDatabase=perl,cn=config" ldap_result: Can't contact LDAP server (-1)
After that, if I start OpenLDAP I get a segmentation fault: root@ldap:/tmp# /usr/local/libexec/slapd -u openldap -g openldap -h "ldap:/// ldapi:///" -d 16383 . 51585496 perl backend db init Segmentation fault
Like I said, if I set back-perl up in slapd.conf mode and then convert it to cn=config, everything works fine.
Ben