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

Reply via email to