Доброго времени суток.
Использую threads
Порождаю новый трид $NET_THREAD=threads->create("netdaemon");
В процессе работы может возникнуть необходимость завершить трид....Делаю это посылкой ему сигнала INT.
$NET_THREAD->kill('INT');
$NET_THREAD->join;
В триде в свою очередь определен обработчик сигнала
$SIG{INT}=sub
{
$socket->close;
unlink NETDAEMONSOCK;
threads->exit();
};
.... и запустить его заново
$NET_THREAD=threads->create("netdaemon");
И все снова начинает работать. Но если завершается главный(материнский) процесс, делает он это со следующим сообщением:
*** glibc detected *** /usr/bin/perl: double free or corruption (!prev): 0x0a8b21a8 ***
======= Backtrace: =========
/lib/libc.so.6[0x8b6e71]
/lib/libc.so.6(cfree+0x90)[0x8ba4b0]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(Perl_safesysfree+0x21)[0x5e6aae1]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(Perl_pregfree+0x4b)[0x5e56a9b]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(perl_destruct+0xd07)[0x5e203c7]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/threads/threads.so[0x1d23bb]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/threads/threads.so(XS_threads_join+0x49c)[0x1d2e6c]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(Perl_pp_entersub+0x40d)[0x5e8043d]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(Perl_runops_standard+0x1f)[0x5e7989f]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so[0x5e19ffe]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(Perl_call_sv+0x5e6)[0x5e1e806]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(Perl_sighandler+0x228)[0x5e6cb58]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(Perl_despatch_signals+0xb7)[0x5e6c8f7]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(Perl_runops_standard+0x38)[0x5e798b8]
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so(perl_run+0x2ee)[0x5e1f10e]
/usr/bin/perl(main+0x13e)[0x804921e]
/lib/libc.so.6(__libc_start_main+0xe0)[0x864f90]
/usr/bin/perl[0x8049021]
======= Memory map: ========
00110000-00111000 r-xp 00110000 00:00 0 [vdso]
00111000-00113000 r-xp 00000000 08:06 58885 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/PerlIO/scalar/scalar.so
00113000-00114000 rwxp 00001000 08:06 58885 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/PerlIO/scalar/scalar.so
00114000-00133000 r-xp 00000000 08:06 640729 /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBI/DBI.so
00133000-00134000 rwxp 0001e000 08:06 640729 /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBI/DBI.so
00134000-0013d000 r-xp 00000000 08:06 649186 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/List/Util/Util.so
0013d000-0013e000 rwxp 00008000 08:06 649186 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/List/Util/Util.so
0013e000-00141000 r-xp 00000000 08:06 58712 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Fcntl/Fcntl.so
00141000-00142000 rwxp 00002000 08:06 58712 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Fcntl/Fcntl.so
00142000-00148000 r-xp 00000000 08:06 679494 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Time/HiRes/HiRes.so
00148000-00149000 rwxp 00005000 08:06 679494 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Time/HiRes/HiRes.so
00149000-0014c000 r-xp 00000000 08:06 58696 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Digest/MD5/MD5.so
0014c000-0014d000 rwxp 00003000 08:06 58696 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Digest/MD5/MD5.so
0014d000-00151000 r-xp 00000000 08:06 679640 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/IO/IO.so
00151000-00152000 rwxp 00003000 08:06 679640 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/IO/IO.so
00152000-00157000 r-xp 00000000 08:06 58888 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Socket/Socket.so
00157000-00158000 rwxp 00004000 08:06 58888 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/Socket/Socket.so
00158000-00167000 r-xp 00000000 08:06 679773 /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/WWW/Curl/Curl.so
00167000-00168000 rwxp 0000f000 08:06 679773 /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/WWW/Curl/Curl.so
00168000-001a8000 r-xp 00000000 08:06 604138 /usr/lib/libcurl.so.4.0.0
001a8000-001a9000 rwxp 00040000 08:06 604138 /usr/lib/libcurl.so.4.0.0
001a9000-001ab000 r-xp 00000000 08:06 10268 /usr/lib/gconv/KOI8-R.so
001ab000-001ad000 rwxp 00001000 08:06 10268 /usr/lib/gconv/KOI8-R.so
001ad000-001c9000 r-xp 00000000 08:06 58726 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/POSIX/POSIX.so
001c9000-001ca000 rwxp 0001b000 08:06 58726 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/POSIX/POSIX.so
001ca000-001cd000 r-xp 00000000 08:06 630801 /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Device/SerialPort/SerialPort.so
001cd000-001ce000 rwxp 00002000 08:06 630801 /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Device/SerialPort/SerialPort.so
001ce000-001d8000 r-xp 00000000 08:06 58923 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/threads/threads.so
001d8000-001d9000 rwxp 00009000 08:06 58923 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/threads/threads.so
001d9000-001e2000 r-xp 00000000 08:06 58922 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/threads/shared/shared.so
001e2000-001e3000 rwxp 00009000 08:06 58922 /usr/lib/perl5/5.8.8/i386-linux-thread-multi/auto/threads/shared/shared.so
001e3000-001f5000 r-xp 00000000 08:06 649093 /usr/lib/perl5/site_perl/5.8.8/i386-lАварийный останов
В чем может быть проблема?