[Date Prev][Date Next] [Chronological] [Thread] [Top]

"back-perl" plugin and "external" Perl modules (ITS#3371)



Full_Name: Alain Knaff
Version: 2.2.6 and 2.2.17
OS: SuSE Linux 9.1
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (83.99.53.91)


When calling external Perl modules (such as DBI, IPC::Open2, or even
IO::Socket::INET) from a back-perl module, openldap segfaults.

The behavior has been observed with the following perl modules:

 DBI & DBD::MySql => as soon as I do a $sth->execute
 IPC::Open2 => as soon as I do open2
 IO::Socket::INET => as soon as I do new IO::Socket::INET(...)

Even some builtin Perl functions, such as open with pipe
(open($fd,"/bin/ls|")) show a similar problem.

Suspecting yet another screwup by SuSE, I downloaded openldap 2.2.17
source directly from www.openldap.org, and compiled it myself, but the
problem also occurs with the newer, un-SuSE-fied version (2.2.17).

Below is a gdb stacktrace when the problem happens (in this case
triggered by a new IO::Socket::INET)

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 32771 (LWP 16035)]
0x401f4747 in PerlIO_default_layers ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
(gdb)
(gdb) bt
#0  0x401f4747 in PerlIO_default_layers ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#1  0x401f6fe5 in PerlIO_resolve_layers ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#2  0x401f67ea in PerlIO_openn ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#3  0x401f6c3c in PerlIO_fdopen ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#4  0x401cbd1e in Perl_pp_socket ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#5  0x40185709 in Perl_runops_standard ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#6  0x401b723f in S_docatch ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#7  0x40185709 in Perl_runops_standard ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#8  0x401248f9 in S_call_body ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#9  0x4012540c in Perl_call_sv ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#10 0x40125fd4 in Perl_call_method ()
   from /usr/lib/perl5/5.8.3/i586-linux-thread-multi/CORE/libperl.so
#11 0x080c00b8 in perl_back_search (op=0x83a7d38, rs=0xbf5ff8b4) at 
search.c:60
#12 0x0806abc9 in do_search (op=0x83a7d38, rs=0xbf5ff8b4) at search.c:412
#13 0x0806974f in connection_operation (ctx=0xbf5ff934, arg_v=0x83a7d38)
    at connection.c:1079
#14 0x080fc81c in ldap_int_thread_pool_wrapper (xpool=0x816b9b8) at 
tpool.c:467
#15 0x40265201 in pthread_start_thread () from /lib/libpthread.so.0
#16 0x4026527f in pthread_start_thread_event () from /lib/libpthread.so.0
#17 0x40517ffa in clone () from /lib/libc.so.6