valgrind ./testfixture test/trigger7.test Note: line numbers below are off-by-2.
trigger7-2.1... Ok trigger7-2.2...==11533== Invalid read of size 1 ==11533== at 0x401FD90: memcpy (mc_replace_strmem.c:482) ==11533== by 0x8098EE2: sqlite3VdbeMemGrow (vdbemem.c:90) ==11533== by 0x80CD503: sqlite3VdbeList (vdbeaux.c:1240) ==11533== by 0x80CD968: sqlite3_step (vdbeapi.c:407) ==11533== by 0x8077181: dbEvalStep (tclsqlite.c:1425) ==11533== by 0x8079905: DbObjCmd (tclsqlite.c:2275) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40AA7E8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40A866C: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x4067EA0: TclEvalObjEx (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40F0B09: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== Address 0x4f4f6c3 is 3 bytes inside a block of size 32 free'd ==11533== at 0x401D79C: free (vg_replace_malloc.c:325) ==11533== by 0x807C0BA: sqlite3_free (malloc.c:473) ==11533== by 0x808CAE2: releaseMemArray (vdbeaux.c:1091) ==11533== by 0x80C96A0: sqlite3VdbeHalt (vdbeaux.c:1643) ==11533== by 0x80C9F94: sqlite3VdbeReset (vdbeaux.c:2344) ==11533== by 0x80CA085: sqlite3_reset (vdbeapi.c:102) ==11533== by 0x80771A8: dbEvalStep (tclsqlite.c:1432) ==11533== by 0x8079905: DbObjCmd (tclsqlite.c:2275) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40AA7E8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40A866C: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x4067EA0: TclEvalObjEx (in /usr/lib/libtcl8.5.so.0) ==11533== ==11533== Invalid read of size 1 ==11533== at 0x401FD98: memcpy (mc_replace_strmem.c:482) ==11533== by 0x8098EE2: sqlite3VdbeMemGrow (vdbemem.c:90) ==11533== by 0x80CD503: sqlite3VdbeList (vdbeaux.c:1240) ==11533== by 0x80CD968: sqlite3_step (vdbeapi.c:407) ==11533== by 0x8077181: dbEvalStep (tclsqlite.c:1425) ==11533== by 0x8079905: DbObjCmd (tclsqlite.c:2275) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40AA7E8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40A866C: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x4067EA0: TclEvalObjEx (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40F0B09: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== Address 0x4f4f6c2 is 2 bytes inside a block of size 32 free'd ==11533== at 0x401D79C: free (vg_replace_malloc.c:325) ==11533== by 0x807C0BA: sqlite3_free (malloc.c:473) ==11533== by 0x808CAE2: releaseMemArray (vdbeaux.c:1091) ==11533== by 0x80C96A0: sqlite3VdbeHalt (vdbeaux.c:1643) ==11533== by 0x80C9F94: sqlite3VdbeReset (vdbeaux.c:2344) ==11533== by 0x80CA085: sqlite3_reset (vdbeapi.c:102) ==11533== by 0x80771A8: dbEvalStep (tclsqlite.c:1432) ==11533== by 0x8079905: DbObjCmd (tclsqlite.c:2275) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40AA7E8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40A866C: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x4067EA0: TclEvalObjEx (in /usr/lib/libtcl8.5.so.0) ==11533== ==11533== Invalid read of size 1 ==11533== at 0x401FD9F: memcpy (mc_replace_strmem.c:482) ==11533== by 0x8098EE2: sqlite3VdbeMemGrow (vdbemem.c:90) ==11533== by 0x80CD503: sqlite3VdbeList (vdbeaux.c:1240) ==11533== by 0x80CD968: sqlite3_step (vdbeapi.c:407) ==11533== by 0x8077181: dbEvalStep (tclsqlite.c:1425) ==11533== by 0x8079905: DbObjCmd (tclsqlite.c:2275) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40AA7E8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40A866C: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x4067EA0: TclEvalObjEx (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40F0B09: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== Address 0x4f4f6c1 is 1 bytes inside a block of size 32 free'd ==11533== at 0x401D79C: free (vg_replace_malloc.c:325) ==11533== by 0x807C0BA: sqlite3_free (malloc.c:473) ==11533== by 0x808CAE2: releaseMemArray (vdbeaux.c:1091) ==11533== by 0x80C96A0: sqlite3VdbeHalt (vdbeaux.c:1643) ==11533== by 0x80C9F94: sqlite3VdbeReset (vdbeaux.c:2344) ==11533== by 0x80CA085: sqlite3_reset (vdbeapi.c:102) ==11533== by 0x80771A8: dbEvalStep (tclsqlite.c:1432) ==11533== by 0x8079905: DbObjCmd (tclsqlite.c:2275) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40AA7E8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40A866C: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x4067EA0: TclEvalObjEx (in /usr/lib/libtcl8.5.so.0) ==11533== ==11533== Invalid read of size 1 ==11533== at 0x401FDA6: memcpy (mc_replace_strmem.c:482) ==11533== by 0x8098EE2: sqlite3VdbeMemGrow (vdbemem.c:90) ==11533== by 0x80CD503: sqlite3VdbeList (vdbeaux.c:1240) ==11533== by 0x80CD968: sqlite3_step (vdbeapi.c:407) ==11533== by 0x8077181: dbEvalStep (tclsqlite.c:1425) ==11533== by 0x8079905: DbObjCmd (tclsqlite.c:2275) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40AA7E8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40A866C: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x4067EA0: TclEvalObjEx (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40F0B09: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== Address 0x4f4f6c0 is 0 bytes inside a block of size 32 free'd ==11533== at 0x401D79C: free (vg_replace_malloc.c:325) ==11533== by 0x807C0BA: sqlite3_free (malloc.c:473) ==11533== by 0x808CAE2: releaseMemArray (vdbeaux.c:1091) ==11533== by 0x80C96A0: sqlite3VdbeHalt (vdbeaux.c:1643) ==11533== by 0x80C9F94: sqlite3VdbeReset (vdbeaux.c:2344) ==11533== by 0x80CA085: sqlite3_reset (vdbeapi.c:102) ==11533== by 0x80771A8: dbEvalStep (tclsqlite.c:1432) ==11533== by 0x8079905: DbObjCmd (tclsqlite.c:2275) ==11533== by 0x40668D8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40AA7E8: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x40A866C: ??? (in /usr/lib/libtcl8.5.so.0) ==11533== by 0x4067EA0: TclEvalObjEx (in /usr/lib/libtcl8.5.so.0) ==11533== Ok trigger7-2.3... Ok [...] Seems always reproducible. Compiled with OPT_FEATURE_FLAGS = -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 -DSQLITE_ENABLE_STAT3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_OMIT_LOOKASIDE=1 i386/linux It seems patch below fixes it (but I'm not sure if it is correct/sufficient; codepath seems common, why it is only triggered by this test is not clear). Index: sqlite3-3.7.11/src/vdbeaux.c =================================================================== --- sqlite3-3.7.11.orig/src/vdbeaux.c 2012-03-31 10:04:37.000000000 +0400 +++ sqlite3-3.7.11/src/vdbeaux.c 2012-03-31 10:04:52.000000000 +0400 @@ -1092,6 +1092,7 @@ static void releaseMemArray(Mem *p, int }else if( p->zMalloc ){ sqlite3DbFree(db, p->zMalloc); p->zMalloc = 0; + p->z = 0; } p->flags = MEM_Invalid; _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users