Confirmed minimal reproducer for segmentation fault in Ubuntu build
(3.45.1-1ubuntu2.5)

I can still reproduce the crash on the current Ubuntu-packaged library,
while the same SQL runs correctly on the official binaries from
sqlite.org (3.45.1, https://www.sqlite.org/2024/sqlite-tools-
linux-x64-3450100.zip)

$ sqlite3 --version
3.45.1 2024-01-30 16:01:20 
e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257ccalt1 (64-bit)

$ apt list libsqlite3-0
Listing... Done
libsqlite3-0/noble-updates,noble-security,now 3.45.1-1ubuntu2.5 amd64 
[installed,automatic]
N: There is 1 additional version. Please use the '-a' switch to see it

Steps to reproduce

Save the following SQL as repro.sql and run:

$ sqlite3 :memory: < repro.sql

----
-- Minimal reproducible example for Ubuntu sqlite3 3.45.1-1ubuntu2.5 crash

CREATE TABLE BIOG_TEXT_DATA (
    c_textid   INTEGER,
    c_role_id  INTEGER,
    c_source   INTEGER
);

CREATE TABLE TEXT_CODES (
    c_textid INTEGER PRIMARY KEY,
    c_title  TEXT
);

CREATE TABLE TEXT_ROLE_CODES (
    c_role_id   INTEGER PRIMARY KEY,
    c_role_desc TEXT
);

INSERT INTO TEXT_CODES VALUES (1, 'Main');
INSERT INTO TEXT_ROLE_CODES VALUES (1, 'Author');
INSERT INTO BIOG_TEXT_DATA VALUES (1, 1, 2);

CREATE VIEW V AS
SELECT
    BIOG_TEXT_DATA.c_textid,
    TEXT_CODES.c_title,
    BIOG_TEXT_DATA.c_role_id,
    TEXT_ROLE_CODES.c_role_desc,
    BIOG_TEXT_DATA.c_source,
    TEXT_CODES_1.c_title,
    TEXT_CODES_1.c_title_chn
FROM
    TEXT_ROLE_CODES
    INNER JOIN (
        TEXT_CODES
        INNER JOIN (
            BIOG_TEXT_DATA
            LEFT JOIN TEXT_CODES AS TEXT_CODES_1
              ON BIOG_TEXT_DATA.c_source = TEXT_CODES_1.c_textid
        ) ON TEXT_CODES.c_textid = BIOG_TEXT_DATA.c_textid
    ) ON TEXT_ROLE_CODES.c_role_id = BIOG_TEXT_DATA.c_role_id;

SELECT COUNT(*) FROM V;
----

Expected result:
1

Actual result:
Segmentation fault (core dumped)

Stacktrace:

#0  __strlen_avx2_rtm () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:76
#1  0x00007ffff7efb714 in sqlite3DbStrDup () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#2  0x00007ffff7f2bf24 in ?? () from /lib/x86_64-linux-gnu/libsqlite3.so.0
#3  0x00007ffff7f551ee in sqlite3WalkSelect () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#4  0x00007ffff7f2ae9d in ?? () from /lib/x86_64-linux-gnu/libsqlite3.so.0
#5  0x00007ffff7f551ee in sqlite3WalkSelect () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#6  0x00007ffff7f2d833 in sqlite3SelectPrep () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#7  0x00007ffff7f28f6b in sqlite3ResultSetOfSelect () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#8  0x00007ffff7e874d5 in ?? () from /lib/x86_64-linux-gnu/libsqlite3.so.0
#9  0x00007ffff7f2ad09 in ?? () from /lib/x86_64-linux-gnu/libsqlite3.so.0
#10 0x00007ffff7f551ee in sqlite3WalkSelect () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#11 0x00007ffff7f2d833 in sqlite3SelectPrep () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#12 0x00007ffff7f2e908 in sqlite3Select () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#13 0x00007ffff7f049c2 in sqlite3Parser () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#14 0x00007ffff7f340d6 in sqlite3RunParser () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#15 0x00007ffff7f080d5 in ?? () from /lib/x86_64-linux-gnu/libsqlite3.so.0
#16 0x00007ffff7f0850f in ?? () from /lib/x86_64-linux-gnu/libsqlite3.so.0
#17 0x00007ffff7f085fe in sqlite3_prepare_v2 () from 
/lib/x86_64-linux-gnu/libsqlite3.so.0
#18 0x00005555555768f5 in ?? ()
#19 0x0000555555580b2b in ?? ()
#20 0x0000555555581832 in ?? ()
#21 0x00005555555873c7 in ?? ()
#22 0x000055555555fbd6 in ?? ()
#23 0x00007ffff7a2a1ca in __libc_start_call_main 
(main=main@entry=0x55555555dd70, argc=argc@entry=6, 
argv=argv@entry=0x7fffffffe1e8)
    at ../sysdeps/nptl/libc_start_call_main.h:58
#24 0x00007ffff7a2a28b in __libc_start_main_impl (main=0x55555555dd70, argc=6, 
argv=0x7fffffffe1e8, init=<optimized out>, fini=<optimized out>, 
    rtld_fini=<optimized out>, stack_end=0x7fffffffe1d8) at 
../csu/libc-start.c:360
#25 0x000055555555fd95 in ?? ()

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2087772

Title:
  crash (segfault) in libsqlite3 running multi-join query

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/sqlite3/+bug/2087772/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to