https://bugzilla.redhat.com/show_bug.cgi?id=1054061 Bug ID: 1054061 Summary: Segfault in Perl_gv_fetchpvn_flags when trying to initialize back_perl openldap backend Product: Red Hat Enterprise Linux 7 Version: 7.0 Component: perl Assignee: perl-maint-list@xxxxxxxxxx Reporter: jsynacek@xxxxxxxxxx QA Contact: qe-baseos-apps@xxxxxxxxxx CC: cweyl@xxxxxxxxxxxxxxx, hyc@xxxxxxxxx, iarnell@xxxxxxxxx, jplesnik@xxxxxxxxxx, kasal@xxxxxx, lkundrak@xxxxx, mmaslano@xxxxxxxxxx, perl-devel@xxxxxxxxxxxxxxxxxxxxxxx, ppisar@xxxxxxxxxx, psabata@xxxxxxxxxx, rc040203@xxxxxxxxxx, tcallawa@xxxxxxxxxx Depends On: 967719 Group: devel External Bug ID: OpenLDAP ITS 7573 +++ This bug was initially created as a clone of Bug #967719 +++ Description of problem: When trying to initialize back_perl, a segfault occurs deep in perl itself. Version-Release number of selected component (if applicable): perl-5.16.3-264.fc19.x86_64 openldap-2.4.35-4.fc19.x86_64 How reproducible: Almost always. Steps to Reproduce: 1. Install fresh F19 2. If you try the reproducer here, all goes well 3. yum install perl-A* (I have no idea why I needed to do this to get it to segfault) 4. Try reproducer 5. Observe the segfault 6. From now on, reproducer works *without* producing any segfaults. I had to reboot the machine to be able to reproduce the issue again. Note on how to use the reproducer: 1. Unpack 2. Run go.sh (warning: it will wipe your /var/lib/ldap/* and your /etc/openldap/*, so don't run if you use openldap in production) This will run slapd in debug mode, so you will need another console to run the rest. 3. Run try.sh 4. If you want to repeat, go to 2. You can modify go.sh to run slapd through a debugger. However, you will probably need to set LD_PRELOAD=/usr/lib64/perl5/CORE/libperl.so to be able to run try.sh. Actual results: Perl segfaults. Expected results: The back_perl gets initialized without any problems. Additional info: This also happens on my production F18, but it happens always. It looks like it might have something to do with Bug 960048. --- Additional comment from Jan Synacek on 2013-05-28 08:53:11 CEST --- Note that in the frame #3, the my_perl variable changes from a (probably valid) pointer to 0x0. --- Additional comment from Petr Pisar on 2013-07-03 14:38:09 CEST --- What's expected output on the client site? I have patched perl so that it links all XS modules to libperl.so explicitly in my private F20 machine, and I do not get any segfaults. Instead I just get an error message from the second command: $ sh try.sh SASL/EXTERNAL authentication started SASL username: gidNumber=500+uidNumber=500,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=module,cn=config" ldap_add: Insufficient access (50) SASL/EXTERNAL authentication started SASL username: gidNumber=500+uidNumber=500,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "olcDatabase=perl,cn=config" ldap_add: Invalid syntax (21) additional info: objectClass: value #1 invalid per syntax I guess this is how to should work. If this is the real fix, than this issue will be fixed in F20. --- Additional comment from Jan Synacek on 2013-07-03 14:57:38 CEST --- All LDAP operations should succeed without any errors. You don't have sufficient access rights to modify the LDAP database. Running the script as root should do it. You should see something like this: # ./try.sh 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" SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "olcDatabase=perl,cn=config" ldap_result: Can't contact LDAP server (-1) The last line indicates the termination (you can see that slapd segfaulted in the console where you ran go.sh). Expected output would look like the one above minus the 'ldap_result: ...' line. Plus there may be one additional 'adding new entry' line. --- Additional comment from Petr Pisar on 2013-07-03 16:07:01 CEST --- I run it as a non-root. I get much better results as a root: # ./try.sh 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" SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "olcDatabase=perl,cn=config" adding new entry "dc=perl-example,dc=com" However the server sometimes segfaults as you reported. --- Additional comment from Jan Synacek on 2013-07-04 07:54:23 CEST --- (In reply to Petr Pisar from comment #4) > I run it as a non-root. I get much better results as a root: Yes, that's how the output is supposed to look. > However the server sometimes segfaults as you reported. Ok, it's strange that it segfaults only sometimes. Does this mean that you can reproduce it even with all the perl modules linked to libperl.so explicitly? --- Additional comment from Petr Pisar on 2013-07-04 09:07:56 CEST --- I recompiled only modules in perl binary package and openldap for the test. Not yet all modules that exist. I also reverted the RTLD_GLOBAL patch and checked slapd does not crashes on linkage error. So the test does not use any not-yet-rebuild modules. I conclude this issue is independent on the linking bug #960048. But we will see more after rebuilding everything. --- Additional comment from Fedora Admin XMLRPC Client on 2013-08-12 13:50:07 CEST --- This package has changed ownership in the Fedora Package Database. Reassigning to the new owner of this component. --- Additional comment from Howard Chu on 2013-10-13 02:20:16 CEST --- Please also followup to OpenLDAP ITS#7573 with any conclusions you reach, thanks. --- Additional comment from Jan Synacek on 2013-10-16 08:13:38 CEST --- This problem still occurs in F20. Referenced Bugs: https://bugzilla.redhat.com/show_bug.cgi?id=967719 [Bug 967719] Segfault in Perl_gv_fetchpvn_flags when trying to initialize back_perl openldap backend -- You are receiving this mail because: You are on the CC list for the bug. Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=RTtoq7IB5n&a=cc_unsubscribe -- Fedora Extras Perl SIG http://www.fedoraproject.org/wiki/Extras/SIGs/Perl perl-devel mailing list perl-devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/perl-devel