> If you, or someone, has something like valgrind handy (or any other
> tool that would help with malloc/threads debugging) that would be a
> big help.
Here's the valgrind -v output... I didn't do --trace-pthreads=all ... (way too much output)
I also lowered the $threads = 10 to $threads = 2 in the test script. I'd say it happens > 70% of the time for me.
HTH
[see attached]
-- END ------------------------------------------------------ Philip M. Gollucci ([EMAIL PROTECTED]) 301.254.5198 Consultant / http://p6m7g8.net/Resume/resume.shtml Senior Developer / Liquidity Services, Inc. http://www.liquidityservicesinc.com
==92812== Memcheck, a memory error detector for x86-linux. ==92812== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward. ==92812== Using valgrind-2.1.0, a program supervision framework for x86-linux. ==92812== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward. ==92812== Valgrind library directory: /usr/local/lib/valgrind ==92812== Command line ==92812== /home/pgollucci/dev/inst/perl/5.9.3-i/bin/perl ==92812== t/05thrclone.t ==92812== Startup, with flags: ==92812== -v ==92812== Reading syms from /usr/home/pgollucci/dev/inst/perl/5.9.3-i/bin/perl5.9.3 (0x8048000) ==92812== Reading syms from /libexec/ld-elf.so.1 (0x3C000000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /libexec/ld-elf.so.1 (0xB0000000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /lib/libc.so.6 (0xB002B000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /usr/local/lib/valgrind/vgskin_memcheck.so (0xB010B000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /usr/local/lib/valgrind/stage2 (0xB8000000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading suppressions file: /usr/local/lib/valgrind/default.supp ==92812== Estimated CPU clock rate is 958 MHz ==92812== REDIRECT soname:libc.so.6(__GI___errno_location) to soname:libpthread.so.0(__errno_location) ==92812== REDIRECT soname:libc.so.6(__errno_location) to soname:libpthread.so.0(__errno_location) ==92812== REDIRECT soname:libc.so.6(__GI___h_errno_location) to soname:libpthread.so.0(__h_errno_location) ==92812== REDIRECT soname:libc.so.6(__h_errno_location) to soname:libpthread.so.0(__h_errno_location) ==92812== REDIRECT soname:libc.so.6(__GI___res_state) to soname:libpthread.so.0(__res_state) ==92812== REDIRECT soname:libc.so.6(__res_state) to soname:libpthread.so.0(__res_state) ==92812== REDIRECT soname:libc.so.6(stpcpy) to *vgpreload_memcheck.so*(stpcpy) ==92812== REDIRECT soname:libc.so.6(strnlen) to *vgpreload_memcheck.so*(strnlen) ==92812== REDIRECT soname:ld-linux.so.2(stpcpy) to *vgpreload_memcheck.so*(stpcpy) ==92812== REDIRECT soname:ld-linux.so.2(strchr) to *vgpreload_memcheck.so*(strchr) ==92812== ==92812== Reading syms from /usr/local/lib/valgrind/vg_inject.so (0x3C02D000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /usr/local/lib/valgrind/vgpreload_memcheck.so (0x3C030000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /home/pgollucci/dev/inst/perl/5.9.3-i/lib/perl5/5.9.3/mach/CORE/libperl.so (0x3C040000) ==92812== Reading syms from /lib/libm.so.3 (0x3C1C9000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /lib/libcrypt.so.2 (0x3C1DE000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /lib/libutil.so.4 (0x3C1F7000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /usr/local/lib/valgrind/libpthread.so.1 (0x3C204000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /lib/libc.so.6 (0x3C222000) ==92812== object doesn't have a symbol table ==92812== object doesn't have any debug info ==92812== Reading syms from /home/pgollucci/dev/inst/perl/5.9.3-i/lib/perl5/5.9.3/mach/auto/threads/threads.so (0x3C3FB000) ==92812== Reading syms from /home/pgollucci/dev/inst/perl/5.9.3-i/lib/perl5/5.9.3/mach/auto/threads/shared/shared.so (0x3C403000) ==92812== Reading syms from /home/pgollucci/dev/inst/perl/5.9.3-i/lib/perl5/site_perl/5.9.3/mach/auto/DBI/DBI.so (0x3C412000) ==92812== Reading syms from /home/pgollucci/dev/inst/perl/5.9.3-i/lib/perl5/5.9.3/mach/auto/List/Util/Util.so (0x3C43B000) 1..11 ok 1 - ... assignment of neat_maxlen was successful ok 2 - The object isa DBI::db ok 3 - ... DBI::neat_maxlen still holding its value ok 4 - The object isa DBI::db ok 5 - ... new $dbh is not the same instance as $dbh_parent ok 6 - ... the Driver has one Kid ==92812== Conditional jump or move depends on uninitialised value(s) ==92812== at 0x3C10F615: Perl_sv_dup (sv.c:10747) ==92812== by 0x3C3FF1D8: Perl_ithread_join (threads.xs:634) ==92812== by 0x3C3FFCAE: XS_threads_join (threads.xs:728) ==92812== by 0x3C0F593B: Perl_pp_entersub (pp_hot.c:2816) ==92812== ==92812== Conditional jump or move depends on uninitialised value(s) ==92812== at 0x3C10F615: Perl_sv_dup (sv.c:10747) ==92812== by 0x3C110907: Perl_sv_dup (sv.c:10958) ==92812== by 0x3C3FF1D8: Perl_ithread_join (threads.xs:634) ==92812== by 0x3C3FFCAE: XS_threads_join (threads.xs:728) ok 7 - ... DBI::neat_maxlen still holding its value ok 8 - The object isa DBI::db ok 9 - ... new $dbh is not the same instance as $dbh_parent ok 10 - ... the Driver has one Kid ok 11 - ... all tests have passed ==92812== warning: Valgrind's pthread_cond_destroy is incomplete ==92812== (it doesn't check if the cond is waited on) ==92812== your program may misbehave as a result ==92812== warning: Valgrind's pthread_cond_destroy is incomplete ==92812== (it doesn't check if the cond is waited on) ==92812== your program may misbehave as a result ==92812== warning: Valgrind's pthread_cond_destroy is incomplete ==92812== (it doesn't check if the cond is waited on) ==92812== your program may misbehave as a result ==92812== ==92812== ERROR SUMMARY: 4 errors from 2 contexts (suppressed: 0 from 0) ==92812== ==92812== 2 errors in context 1 of 2: ==92812== Conditional jump or move depends on uninitialised value(s) ==92812== at 0x3C10F615: Perl_sv_dup (sv.c:10747) ==92812== by 0x3C110907: Perl_sv_dup (sv.c:10958) ==92812== by 0x3C3FF1D8: Perl_ithread_join (threads.xs:634) ==92812== by 0x3C3FFCAE: XS_threads_join (threads.xs:728) ==92812== ==92812== 2 errors in context 2 of 2: ==92812== Conditional jump or move depends on uninitialised value(s) ==92812== at 0x3C10F615: Perl_sv_dup (sv.c:10747) ==92812== by 0x3C3FF1D8: Perl_ithread_join (threads.xs:634) ==92812== by 0x3C3FFCAE: XS_threads_join (threads.xs:728) ==92812== by 0x3C0F593B: Perl_pp_entersub (pp_hot.c:2816) ==92812== IN SUMMARY: 4 errors from 2 contexts (suppressed: 0 from 0) ==92812== ==92812== malloc/free: in use at exit: 2856 bytes in 11 blocks. ==92812== malloc/free: 6917 allocs, 6906 frees, 275822 bytes allocated. ==92812== --92812-- TT/TC: 0 tc sectors discarded. --92812-- 26487 chainings, 0 unchainings. --92812-- translate: new 27642 (537662 -> 7367041; ratio 137:10) --92812-- discard 0 (0 -> 0; ratio 0:10). --92812-- dispatch: 55400000 jumps (bb entries), of which 7232789 (13%) were unchained. --92812-- 2011/1210991 major/minor sched events. 69172 tt_fast misses. --92812-- reg-alloc: 5502 t-req-spill, 1339171+28009 orig+spill uis, 144142 total-reg-r. --92812-- sanity: 1803 cheap, 73 expensive checks. --92812-- ccalls: 165286 C calls, 52% saves+restores avoided (509310 bytes) --92812-- 210788 args, avg 0.89 setup instrs each (42902 bytes) --92812-- 0% clear the stack (495858 bytes) --92812-- 74129 retvals, 28% of reg-reg movs avoided (41212 bytes)
