Subject: | Core dump in t/07busy.t after test 4 (mutex and/or memory corruption) |
Starting program: /usr/bin/perl
-I/mnt/hdb3/agaran/rpm/BUILD/DBD-SQLite-1.14/lib
-I/mnt/hdb3/agaran/rpm/BUILD/DBD-SQLite-1.14/blib
-I/mnt/hdb3/agaran/rpm/BUILD/DBD-SQLite-1.14/blib/arch -w t/07*t
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1212102976 (LWP 24442)]
1..8
# Running under perl version 5.008008 for linux
# Current time local: Tue Jan 20 15:47:44 2009
# Current time GMT: Tue Jan 20 14:47:44 2009
# Using Test.pm version 1.25
[New Thread -1212458064 (LWP 24443)]
[Thread -1212458064 (LWP 24443) exited]
ok 1
ok 2
ok 3
ok 4
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1212102976 (LWP 24442)]
0xb7ee6581 in sqlite3_finalize (pStmt=0x81f7458) at sqlite3.c:47576
47576 sqlite3_mutex *mutex = v->db->mutex;
(gdb) bt
#0 0xb7ee6581 in sqlite3_finalize (pStmt=0x81f7458) at sqlite3.c:47576
#1 0xb7bc545e in sqlite_st_destroy (sth=0x81208cc, imp_sth=0x81f7b70)
at dbdimp.c:612
#2 0xb7bc1c24 in XS_DBD__SQLite__st_DESTROY (my_perl=0x804c008,
cv=0x811fdb0) at SQLite.xsi:769
#3 0xb7bdba77 in XS_DBI_dispatch () from
/usr/lib/perl5/vendor_perl/5.8.0/i686-pld-linux-thread-multi/auto/DBI/DBI.so
#4 0xb7e2ce59 in Perl_pp_entersub () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#5 0xb7dc8a49 in Perl_call_sv () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#6 0xb7dc87fc in Perl_call_sv () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#7 0xb7e35900 in Perl_sv_clear () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#8 0xb7e36140 in Perl_sv_free () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#9 0xb7e35af8 in Perl_sv_clear () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#10 0xb7e36140 in Perl_sv_free () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#11 0xb7e18502 in Perl_mg_free () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#12 0xb7e35ee6 in Perl_sv_clear () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#13 0xb7e36140 in Perl_sv_free () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#14 0xb7e3aa82 in Perl_sv_unref_flags () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#15 0xb7e34293 in Perl_sv_force_normal_flags () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#16 0xb7e54eb1 in Perl_leave_scope () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#17 0xb7e52f2c in Perl_pop_scope () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#18 0xb7e5ac4d in Perl_pp_return () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#19 0xb7e252b9 in Perl_runops_standard () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#20 0xb7dc8a2d in Perl_call_sv () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#21 0xb7dc8926 in Perl_call_sv () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#22 0xb7bd9e7c in XS_DBI_dispatch () from
/usr/lib/perl5/vendor_perl/5.8.0/i686-pld-linux-thread-multi/auto/DBI/DBI.so
#23 0xb7e2ce59 in Perl_pp_entersub () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#24 0xb7e252b9 in Perl_runops_standard () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#25 0xb7dc7e78 in perl_run () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#26 0xb7dc7ded in perl_run () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#27 0x0804937e in main ()
SQLite 3.6.10, Perl-5.8.8
tried 20+ time everytime it crashes at that point
(gdb) p v
$1 = (Vdbe *) 0x81f7458
(gdb) p *v
$2 = {db = 0x20736920, pPrev = 0x6b636f6c, pNext = 0x35286465, nOp =
1952522281, nOpAlloc = 1684169760, aOp = 0x2e706d69,
nLabel = 1768693859, nLabelAlloc = 874538350, aLabel = 0xb7003330,
apArg = 0xc9, aColName = 0xb7d79858, nCursor = -1210607528,
apCsr = 0x81f7748, nVar = 0, aVar = 0x81f7748, azVar = 0x81f7748,
okVar = 0, magic = 3053896648, nMem = 12, aMem = 0x81f7540,
nCallback = 0, cacheCtr = 1, contextStackTop = 0, contextStackDepth =
0, contextStack = 0x0, pc = 11, rc = 5, uniqueCnt = 0,
errorAction = 2, inTempTrans = 0, nResColumn = 0, azResColumn = 0x0,
zErrMsg = 0x0, pResultSet = 0x0, explain = 0 '\0',
changeCntOn = 1 '\001', expired = 0 '\0', minWriteFileFormat = 255
'˙', inVtabMethod = 0 '\0', usesStmtJournal = 0 '\0',
readOnly = 0 '\0', nChange = 0, startTime = 0, btreeMask = 1, aMutex =
{nMutex = 0, aBtree = {0x0 <repeats 11 times>}},
aCounter = {0, 0}, nSql = 0, zSql = 0x81f56b0 "đL\037\bRT INTO Blah
VALUES ( 2, 'Test2' )", openedStatement = 0}
and just repeating to see one field which looks corrupted from v struct
(gdb) p v->zSql
$3 = 0x81f56b0 "đL\037\bRT INTO Blah VALUES ( 2, 'Test2' )"
looks like 4 bytes overwritten,