On Thu, Nov 1, 2012 at 8:49 AM, Alex Busenius <alex.busen...@gmail.com>wrote:

> Hello,
>
>
> I think I've found a bug in SQLite3, I get an assertion fault (or
> segmentation fault in release build) when running a somewhat complicated
> nested select statement:
>
>
Thank you for the test script.  The problem is recorded here:
http://www.sqlite.org/src/tktview/bfbf38e5e9956ac69f9491e5112636ff2ecef923


>
> % sqlite3 -init sqlite3-bug.sql bla.sqlite3
> -- Loading resources from sqlite3-bug.sql
> sqlite3: sqlite3.c:65666: sqlite3VdbeExec: Assertion `u.an.pC!=0' failed.
> zsh: abort      sqlite3 -init sqlite3-bug.sql bla.sqlite3
>
>
> It is 100% reproduceable. I stripped down my statement and schema I used
> to create a small example. See bottom of this mail for the content of
> sqlite3-bug.sql.
>
> I'm running 64-bit linux.
>
>
> Regards,
>
> Alex
>
>
>
>
> GDB backtrace:
> Program received signal SIGABRT, Aborted.
> 0x00007ffff7535c15 in raise () from /lib64/libc.so.6
> (gdb) bt
> #0  0x00007ffff7535c15 in raise () from /lib64/libc.so.6
> #1  0x00007ffff753708b in abort () from /lib64/libc.so.6
> #2  0x00007ffff752ec7e in __assert_fail_base () from /lib64/libc.so.6
> #3  0x00007ffff752ed22 in __assert_fail () from /lib64/libc.so.6
> #4  0x00007ffff7b997e1 in sqlite3VdbeExec () from
> /usr/lib64/libsqlite3.so.0
> #5  0x00007ffff7b70927 in sqlite3_step () from /usr/lib64/libsqlite3.so.0
> #6  0x00000000004052c4 in shell_exec.constprop.7 ()
> #7  0x0000000000405d49 in process_input ()
> #8  0x0000000000402783 in main ()
>
>
>
> Compiled using:
> ./configure --prefix=/usr --build=x86_64-pc-linux-gnu
> --host=x86_64-pc-linux-gnu --mandir=/usr/share/man
> --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
> --localstatedir=/var/lib --libdir=/usr/lib64 --disable-dependency-tracking
> --disable-static --enable-dynamic-extensions --enable-readline
> --enable-threadsafe
>
>
>
> % sqlite3 -version
> 3.7.14.1 2012-10-04 19:37:12 091570e46d04e84b67228e0bdbcd6e**1fb60c6bdb
>
>
>
> % gcc --version
> gcc (Gentoo 4.6.3 p1.6, pie-0.5.2) 4.6.3
>
>
>
> % uname -a
> Linux inspiron 3.4.11-tuxonice #1 SMP PREEMPT Sat Sep 29 18:58:19 CEST
> 2012 x86_64 Intel(R) Core(TM)2 Duo CPU P7450 @ 2.13GHz GenuineIntel
> GNU/Linux
>
>
>
> % cat ~/.sqliterc
> -- SQLite3 command line configuration
>
> .timer   ON
> .headers ON
> .mode    column
> .width   0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0 0
>
> -- vim: ft=sql
>
>
>
> % cat sqlite3-bug.sql
> -- schema
> CREATE TABLE AAA (
>    aaa_id       INTEGER PRIMARY KEY AUTOINCREMENT
> );
> CREATE TABLE RRR (
>     rrr_id      INTEGER     PRIMARY KEY AUTOINCREMENT,
>     rrr_date    INTEGER     NOT NULL,
>     rrr_aaa     INTEGER
> );
> CREATE TABLE TTT (
>     ttt_id      INTEGER PRIMARY KEY AUTOINCREMENT,
>     target_aaa  INTEGER NOT NULL,
>     source_aaa  INTEGER NOT NULL
> );
>
>
> -- insert
> insert into AAA (aaa_id)
> values (2);
>
>
> insert into TTT (ttt_id, target_aaa, source_aaa)
> values (4469, 2, 2);
> insert into TTT (ttt_id, target_aaa, source_aaa)
> values (4476, 2, 1);
>
>
> insert into RRR (rrr_id, rrr_date, rrr_aaa)
> values (0, 0, NULL);
> insert into RRR (rrr_id, rrr_date, rrr_aaa)
> values (2, 4312, 2);
>
>
> -- segfault
> SELECT i.aaa_id,
>        (SELECT sum(CASE WHEN (t.source_aaa == i.aaa_id) THEN 1 ELSE 0 END)
>         FROM TTT t
>        ) AS segfault
> FROM (SELECT curr.rrr_aaa as aaa_id
>       FROM RRR curr
>            -- you also can comment out the next line -- it causes segfault
> to happen after one row is outputted
>            INNER JOIN AAA a ON (curr.rrr_aaa = aaa_id)
>            LEFT JOIN RRR r ON (r.rrr_id <> 0 AND r.rrr_date <
> curr.rrr_date)
>       GROUP BY curr.rrr_id
>       HAVING r.rrr_date IS NULL
> ) i;
>
> .quit
> ______________________________**_________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-**bin/mailman/listinfo/sqlite-**users<http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users>
>



-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to