SQLite

View Ticket
Login
Ticket Hash: c2432ef9089ee73bd0d3885576c0e1f6b1ad02e9
Title: Assertion fault due to column cache malfunction
Status: Fixed Type: Code_Defect
Severity: Critical Priority: Immediate
Subsystem: Unknown Resolution: Fixed
Last Modified: 2018-06-11 18:07:17
Version Found In:
User Comments:
drh added on 2018-06-11 11:14:57:

The following SQL causes an assertion fault in SQLite 3.19.0 and later:

CREATE TABLE t1(a INTEGER PRIMARY KEY,b UNIQUE);
CREATE INDEX x1 ON t1(-b=b);
INSERT INTO t1 VALUES(1,5),(6,2);
REPLACE INTO t1 SELECT b,0 FROM t1;

The assertion faults begin with check-in [e6e36b288fdf2]. However, further analysis suggests that that check-in merely exposed the problem and is not the actual cause of the problem. The underlying problem appears to be that the column-cache is attempting to reuse the value of a register that was never initialized to that column in the first place.

This fault was found by OSSFuzz.