Hi all, for lack of a general list, I decided to send this to this list. I am not sure if it is not well outside the scope of this list, if so, I apologize.
My smallish test case is as follows (beware potential GMail linebreaks..): #!/usr/bin/perl use strict; use warnings; use threads; use RPC::XML; use RPC::XML::Server; my $findserver = RPC::XML::Server->new(host => '0.0.0.0', port => '9000'); my @signature= ('struct struct'); $findserver->add_method({ name => 'request_info', signature => [EMAIL PROTECTED], code => \&request_info }); $findserver->server_loop(); sub request_info { my $thread = threads->new(\&sleeper); $thread->join; } sub sleeper { sleep 2; } When sending an XMLRPC request with request_info to this server, Perl will die the hard way once you join() the thread. From the looks of it, Expat may be at fault. Alternatively, RPC::XML::Server might be to blame. Please do not go into threads-hate mode, I know there are issues with it, but I never encountered something like this. If you still feel the need to tell me how bad threads are, please provide a viable scenario where I dispatch a dozen workers that need to return output to the master, at some point. Although my example is blocking, the real code is not and I can not afford to block while waiting on a process. I am thankful for all input you guys and gals can give, Richard debian% ./data_center_info_server.pl $VAR1 = { 'request' => { 'parameters' => { 'vlans' => [ '98', '99' ] }, 'request_type' => 'find_switch_ports_by_vlan_ids' }, 'password' => 'VV1tIEJA8wh2oziKJA2U9W9T2GjnFp0Gjla3l1Vw7E1piWoTk5' }; key cs01.nb8.stgt : is NOT joinable key cs01.nb8.stgt : is being joined Scalars leaked: -32 XXX XXX *** glibc detected *** /usr/bin/perl: munmap_chunk(): invalid pointer: 0x08cd4aa8 *** ======= Backtrace: ========= /lib/libc.so.6(cfree+0x1bc)[0xb7e7ca1c] /usr/lib/perl5/auto/XML/Parser/Expat/Expat.so(XS_XML__Parser__Expat_ParserFree+0x105)[0xb7d8e4c5] /usr/bin/perl(Perl_pp_entersub+0x3c1)[0x80bdad1] /usr/bin/perl(Perl_runops_standard+0x19)[0x80bc3a9] /usr/bin/perl[0x80626be] /usr/bin/perl(Perl_call_sv+0x5ae)[0x80632ee] /usr/bin/perl(Perl_sv_clear+0x74)[0x80c9c24] /usr/bin/perl(Perl_sv_free+0x75)[0x80ca415] /usr/bin/perl(Perl_leave_scope+0xaff)[0x80e931f] /usr/bin/perl(Perl_pop_scope+0x2c)[0x80e93ec] /usr/bin/perl(Perl_pp_return+0x275)[0x80f2685] /usr/bin/perl(Perl_runops_standard+0x19)[0x80bc3a9] /usr/bin/perl(perl_run+0x2fd)[0x8063bfd] /usr/bin/perl(main+0x111)[0x805ffd1] /lib/libc.so.6(__libc_start_main+0xe0)[0xb7e25050] /usr/bin/perl[0x805fe31] ======= Memory map: ======== 08048000-08148000 r-xp 00000000 08:01 46157035 /usr/bin/perl 08148000-0814c000 rw-p 000ff000 08:01 46157035 /usr/bin/perl 0814c000-08e31000 rw-p 0814c000 00:00 0 [heap] b73ff000-b7400000 ---p b73ff000 00:00 0 b7400000-b7bff000 rw-p b7400000 00:00 0 b7c0f000-b7c19000 r-xp 00000000 08:01 21018756 /lib/libgcc_s.so.1 b7c19000-b7c1a000 rw-p 00009000 08:01 21018756 /lib/libgcc_s.so.1 b7c20000-b7c23000 r-xp 00000000 08:01 46137750 /usr/lib/perl/5.8.8/auto/Fcntl/Fcntl.so b7c23000-b7c24000 rw-p 00002000 08:01 46137750 /usr/lib/perl/5.8.8/auto/Fcntl/Fcntl.so b7c24000-b7c4a000 r-xp 00000000 08:01 25198090 /usr/local/lib/perl/5.8.8/auto/Compress/Raw/Zlib/Zlib.so b7c4a000-b7c4b000 rw-p 00025000 08:01 25198090 /usr/local/lib/perl/5.8.8/auto/Compress/Raw/Zlib/Zlib.so b7c4b000-b7c4f000 r-xp 00000000 08:01 54546494 /usr/lib/perl/5.8.8/auto/File/Glob/Glob.so b7c4f000-b7c50000 rw-p 00004000 08:01 54546494 /usr/lib/perl/5.8.8/auto/File/Glob/Glob.so b7c50000-b7c59000 r-xp 00000000 08:01 21761 /usr/local/lib/perl/5.8.8/auto/List/Util/Util.so b7c59000-b7c5a000 rw-p 00008000 08:01 21761 /usr/local/lib/perl/5.8.8/auto/List/Util/Util.so b7c5a000-b7d3b000 r-xp 00000000 08:01 29401736 /usr/lib/libdb-4.3.so b7d3b000-b7d3e000 rw-p 000e0000 08:01 29401736 /usr/lib/libdb-4.3.so b7d3e000-b7d47000 r-xp 00000000 08:01 20977916 /lib/libnss_files-2.6.1.so b7d47000-b7d49000 rw-p 00008000 08:01 20977916 /lib/libnss_files-2.6.1.so b7d49000-b7d4d000 r-xp 00000000 08:01 29458226 /usr/lib/libnss_db-2.2.3.so b7d4d000-b7d4e000 rw-p 00003000 08:01 29458226 /usr/lib/libnss_db-2.2.3.so b7d4e000-b7d55000 r-xp 00000000 08:01 25166304 /usr/lib/perl/5.8.8/auto/Data/Dumper/Dumper.so b7d55000-b7d56000 rw-p 00007000 08:01 25166304 /usr/lib/perl/5.8.8/auto/Data/Dumper/Dumper.so b7d56000-b7d74000 r-xp 00000000 08:01 29401664 /usr/lib/libexpat.so.1.0.0 b7d74000-b7d76000 rw-p 0001d000 08:01 29401664 /usr/lib/libexpat.so.1.0.0 b7d79000-b7d7b000 r-xp 00000000 08:01 50369940 /usr/lib/perl/5.8.8/auto/Sys/Hostname/Hostname.so b7d7b000-b7d7c000 rw-p 00001000 08:01 50369940 /usr/lib/perl/5.8.8/auto/Sys/Hostname/Hostname.so b7d7c000-b7d93000 r-xp 00000000 08:01 62927454 /usr/lib/perl5/auto/XML/Parser/Expat/Expat.so b7d93000-b7d94000 rw-p 00017000 08:01 62927454 /usr/lib/perl5/auto/XML/Parser/Expat/Expat.so b7d94000-b7d98000 r-xp 00000000 08:01 58732184 /usr/lib/perl/5.8.8/auto/IO/IO.so b7d98000-b7d99000 rw-p 00003000 08:01 58732184 /usr/lib/perl/5.8.8/auto/IO/IO.so b7d99000-b7db4000 r-xp 00000000 08:01 4202642 /usr/lib/perl/5.8.8/auto/POSIX/POSIX.so b7db4000-b7db5000 rw-p 0001a000 08:01 4202642 /usr/lib/perl/5.8.8/auto/POSIX/POSIX.so b7db5000-b7dbe000 r-xp 00000000 08:01 29885000 /usr/local/lib/perl/5.8.8/auto/threads/threads.so b7dbe000-b7dbf000 rw-p 00009000 08:01 29885000 /usr/local/lib/perl/5.8.8/auto/threads/threads.so b7dbf000-b7de1000 rw-p b7dbf000 00:00 0 b7de1000-b7de6000 r-xp 00000000 08:01 20977909 /lib/libcrypt-2.6.1.so b7de6000-b7de8000 rw-p 00004000 08:01 20977909 /lib/libcrypt-2.6.1.so b7de8000-b7e0f000 rw-p b7de8000 00:00 0 b7e0f000-b7f51000 r-xp 00000000 08:01 20977907 /lib/libc-2.6.1.so b7f51000-b7f52000 r--p 00142000 08:01 20977907 /lib/libc-2.6.1.so b7f52000-b7f54000 rw-p 00143000 08:01 20977907 /lib/libc-2.6.1.so b7f54000-b7f58000 rw-p b7f54000 00:00 0 b7f58000-b7f6b000 r-xp 00000000 08:01 20977921 /lib/libpthread-2.6.1.so b7f6b000-b7f6d000 rw-p 00012000 08:01 20977921 /lib/libpthread-2.6.1.so b7f6d000-b7f6f000 rw-p b7f6d000 00:00 0 b7f6f000-b7f93000 r-xp 00000000 08:01 20977911 /lib/libm-2.6.1.so b7f93000-b7f95000 rw-p 00023000 08:01 20977911 /lib/libm-2.6.1.so b7f95000-b7f97000 r-xp 00000000 08:01 20977910 /lib/libdl-2.6.1.so b7f97000-b7f99000 rw-p 00001000 08:01 20977910 /lib/libdl-2.6.1.so b7f99000-b7f9e000 r-xp 00000000 08:01 8409949 /usr/lib/perl/5.8.8/auto/Socket/Socket.so b7f9e000-b7f9f000 rw-p 00004000 08:01 8409949 /usr/lib/perl/5.8.8/auto/Socket/Socket.so b7f9f000-b7fa1000 rw-p b7f9f000 00:00 0 b7fa1000-b7fbd000 r-xp 00000000 08:01 20977904 /lib/ld-2.6.1.so b7fbd000-b7fbf000 rw-p 0001b000 08:01 20977904 /lib/ld-2.6.1.so bffa4000-bffba000 rw-p bffa4000 00:00 0 [stack] bfffe000-bffff000 r-xp bfffe000 00:00 0 zsh: abort ./data_center_info_server.pl debian% gentoo# ./xml-rpc_vs_threads.pl Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/5.8.8/i686-linux-thread-multi/Scalar/Util.pm line 30. Scalars leaked: -30 Odd number of elements in hash assignment at /usr/lib/perl5/site_perl/5.8.8/RPC/XML.pm line 517. *** glibc detected *** /usr/bin/perl: munmap_chunk(): invalid pointer: 0x087e5988 *** ======= Backtrace: ========= /lib/libc.so.6[0xb7da79b0] /usr/bin/perl(Perl_safesysfree+0x21)[0x80b8bf1] /usr/lib/perl5/vendor_perl/5.8.8/i686-linux-thread-multi/auto/XML/Parser/Expat/Expat.so(XS_XML__Parser__Expat_ParserFree+0x102)[0xb7d0d0c2] /usr/bin/perl(Perl_pp_entersub+0x43b)[0x80cb12b] /usr/bin/perl(Perl_runops_standard+0x29)[0x80c9819] /usr/bin/perl(Perl_call_sv+0x61b)[0x80633ab] /usr/bin/perl(Perl_sv_clear+0x87)[0x80d7247] /usr/bin/perl(Perl_sv_free+0x83)[0x80d7b93] /usr/bin/perl(Perl_sv_unref_flags+0x55)[0x80d7cb5] /usr/bin/perl(Perl_sv_force_normal_flags+0x1d9)[0x80d80b9] /usr/bin/perl(Perl_leave_scope+0xc56)[0x80fa886] /usr/bin/perl(Perl_pop_scope+0x33)[0x80fa963] /usr/bin/perl(Perl_pp_return+0x333)[0x8104af3] /usr/bin/perl(Perl_runops_standard+0x29)[0x80c9819] /usr/bin/perl(perl_run+0x12b)[0x8063b0b] /usr/bin/perl(main+0x13e)[0x806055e] /lib/libc.so.6(__libc_start_main+0xd8)[0xb7d59878] /usr/bin/perl[0x8060391] ======= Memory map: ======== 08048000-08163000 r-xp 00000000 09:03 201643038 /usr/bin/perl5.8.8 08163000-08167000 rw-p 0011b000 09:03 201643038 /usr/bin/perl5.8.8 08167000-0886f000 rw-p 08167000 00:00 0 [heap] b7494000-b7495000 ---p b7494000 00:00 0 b7495000-b7c95000 rw-p b7495000 00:00 0 b7ca6000-b7cb0000 r-xp 00000000 09:03 33555057 /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/libgcc_s.so.1 b7cb0000-b7cb1000 rw-p 00009000 09:03 33555057 /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/libgcc_s.so.1 b7cb6000-b7cbf000 r-xp 00000000 09:03 134608618 /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/List/Util/Util.so b7cbf000-b7cc0000 rw-p 00008000 09:03 134608618 /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/List/Util/Util.so b7cc0000-b7cc8000 r-xp 00000000 09:03 134810776 /lib/libnss_files-2.4.so b7cc8000-b7cca000 rw-p 00007000 09:03 134810776 /lib/libnss_files-2.4.so b7ccc000-b7cce000 r-xp 00000000 09:03 201642945 /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/Sys/Hostname/Hostname.so b7cce000-b7ccf000 rw-p 00001000 09:03 201642945 /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/Sys/Hostname/Hostname.so b7ccf000-b7cd4000 r-xp 00000000 09:03 100992515 /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/Socket/Socket.so b7cd4000-b7cd5000 rw-p 00004000 09:03 100992515 /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/Socket/Socket.so b7cd5000-b7cfc000 r-xp 00000000 09:03 235026781 /usr/lib/libexpat.so.1.5.2 b7cfc000-b7cfe000 rw-p 00027000 09:03 235026781 /usr/lib/libexpat.so.1.5.2 b7cfe000-b7d16000 r-xp 00000000 09:03 335547350 /usr/lib/perl5/vendor_perl/5.8.8/i686-linux-thread-multi/auto/XML/Parser/Expat/Expat.so b7d16000-b7d17000 rw-p 00017000 09:03 335547350 /usr/lib/perl5/vendor_perl/5.8.8/i686-linux-thread-multi/auto/XML/Parser/Expat/Expat.so b7d17000-b7d21000 r-xp 00000000 09:03 403141504 /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/threads/threads.so b7d21000-b7d22000 rw-p 00009000 09:03 403141504 /usr/lib/perl5/5.8.8/i686-linux-thread-multi/auto/threads/threads.so b7d22000-b7d44000 rw-p b7d22000 00:00 0 b7d44000-b7e5d000 r-xp 00000000 09:03 134810792 /lib/libc-2.4.so b7e5d000-b7e5f000 r--p 00118000 09:03 134810792 /lib/libc-2.4.so b7e5f000-b7e61000 rw-p 0011a000 09:03 134810792 /lib/libc-2.4.so b7e61000-b7e64000 rw-p b7e61000 00:00 0 b7e64000-b7e66000 r-xp 00000000 09:03 134810790 /lib/libutil-2.4.so b7e66000-b7e68000 rw-p 00001000 09:03 134810790 /lib/libutil-2.4.so b7e68000-b7e6d000 r-xp 00000000 09:03 134798510 /lib/libcrypt-2.4.so b7e6d000-b7e6f000 rw-p 00004000 09:03 134798510 /lib/libcrypt-2.4.so b7e6f000-b7e96000 rw-p b7e6f000 00:00 0 b7e96000-b7eb9000 r-xp 00000000 09:03 134798506 /lib/libm-2.4.so b7eb9000-b7ebb000 rw-p 00022000 09:03 134798506 /lib/libm-2.4.so b7ebb000-b7ebd000 r-xp 00000000 09:03 134798508 /lib/libdl-2.4.so b7ebd000-b7ebf000 rw-p 00001000 09:03 134798508 /lib/libdl-2.4.so b7ebf000-b7ed0000 r-xp 00000000 09:03 134810786 /lib/libnsl-2.4.so b7ed0000-b7ed2000 rw-p 00010000 09:03 134810786 /lib/lAborted gentoo# -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/