Dan Kennedy wrote: > On 03/31/2012 04:04 PM, Yuriy Kaminskiy wrote: >> 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 >> >> Seems always reproducible. > > Thanks for reporting this. > > These tests are run with valgrind as part of the release process. > But this error only shows up when you build with SQLITE_OMIT_LOOKASIDE > (or disable the lookaside allocator some other way). I think this is > probably better - perhaps we should disable lookaside when running > valgrind tests during release testing too.
Yep, I usually prefer lookaside allocator enabled, just disabled it for better valgrind interaction. [But there are some major SQLITE_OMIT_LOOKASIDE users in the wild - IIRC, debian, ubuntu and firefox ships sqlite3 with SQLITE_OMIT_LOOKASIDE] >> 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). > > The patch looks correct and safe to me. The only possible problem > is that the modification adds (a tiny amount of) code to one of > the most performance sensitive functions in the library. > > I think the reason this hasn't shown up before is that Mem.z is > not valid unless either the MEM_Str or MEM_Blob flag is set on > the memory cell. So accessing it when these flags are both clear > is a bug in sqlite3VdbeMemGrow(). The bug is only triggered when > the 'preserve' argument to sqlite3VdbeMemGrow() is true. > > And the only place where sqlite3VdbeMemGrow() is called with > the preserve flag set to true and a memory cell that does not > have either the MEM_Str or MEM_Blob is from the code to do > EXPLAIN listing of trigger programs. > > This fix changes the EXPLAIN listing code so that it doesn't do > that: > > http://www.sqlite.org/src/info/c9342ca581?sbs=0 Thank you! That's certainly better. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users