benintechnologies(a)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
--
-- Howard Chu
CTO, Symas Corp.
http://www.symas.com
Director, Highland Sun
http://highlandsun.com/hyc/
Chief Architect, OpenLDAP
http://www.openldap.org/project/