Hi there,I've been following the sqlsmith work and wanted to jump in and try it out. I took Peter's idea and tried building postgres with the flags suggested but it was hard to get anything working.
I'm on commit 85e5e222b1dd02f135a8c3bf387d0d6d88e669bd (Tue Aug 4 14:55:32 2015 -0400) Configure arguments:./configure --prefix=$HOME/pkg CC=clang CFLAGS='-O1 -g -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls' --enable-cassert I had to make a simple leak suppression file: $ cat leak.supp leak:save_ps_display_args leak:__GI___strdup $ export LSAN_OPTIONS=suppressions=leak.supp And then I could run postgres. After 50,000 queries, I'm left with the following report: queries: 50514 AST stats (avg): height = 7.29877 nodes = 37.8156 296 ERROR: canceling statement due to statement timeout 166 ERROR: invalid regular expression: quantifier operand invalid 26 ERROR: could not determine which collation to use for string comparison 23 ERROR: cannot compare arrays of different element types 12 ERROR: invalid regular expression: brackets [] not balanced 5 ERROR: cache lookup failed for index 2619 2 ERROR: invalid regular expression: parentheses () not balanced error rate: 0.0104921 AddressSanitizer didn't fire except for the suppressed leaks. The suppressed leaks were only hit at the beginning: ----------------------------------------------------- Suppressions used: count bytes template 1 520 save_ps_display_args 1 10 __GI___strdup ----------------------------------------------------- sqlsmith is a cool little piece of kit and I see a lot of room for on going work (performance bumps for more queries per second; more db back ends; different fuzzers). Yours,Ewan Higgs From: Peter Geoghegan <p...@heroku.com> To: Andreas Seltenreich <seltenre...@gmx.de> Cc: Pg Hackers <pgsql-hackers@postgresql.org> Sent: Sunday, 2 August 2015, 10:39 Subject: Re: [HACKERS] [sqlsmith] Failed assertion in joinrels.c On Fri, Jul 31, 2015 at 5:56 PM, Andreas Seltenreich <seltenre...@gmx.de> wrote: > sqlsmith triggered the following assertion in master (c188204). Thanks for writing sqlsmith. It seems like a great tool. I wonder, are you just running the tool with assertions enabled when PostgreSQL is built? If so, it might make sense to make various problems more readily detected. As you may know, Clang has a pretty decent option called AddressSanitizer that can detect memory errors as they occur with an overhead that is not excessive. One might use the following configure arguments when building PostgreSQL to use AddressSanitizer: ./configure CC=clang CFLAGS='-O1 -g -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls' --enable-cassert Of course, it remains to be seen if this pays for itself. Apparently the tool has about a 2x overhead [1]. I'm really not sure that you'll find any more bugs this way, but it's certainly possible that you'll find a lot more. Given your success in finding bugs without using AddressSanitizer, introducing it may be premature. [1] http://clang.llvm.org/docs/AddressSanitizer.html#introduction -- Peter Geoghegan -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers