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/


Reply via email to