Message398803
> In production the error was happening after 30 minutes of so.
Great, thanks.
> The major problem is that I don't exactly know how to provoke SQLite to
> acquire an internal lock.
IIRC, you can provoke the internal SQLite lock simply by using transaction control: BEGIN (lock) => COMMIT / ROLLBACK (unlock).
> If we assume that it does acquire internal locks and other threads release
> the GIL before calling into SQLite functions that acquire an internal lock,
> then you can reason that if sqlite3_close() acquires that lock without first
> releasing the GIL a deadlock will certainly occur.
True. For the record, I'm not doubting the existence of this deadlock, nor the correctness of the proposed solution (allow threads around sqlite3_close()) :)
I'll see if I can come up with a compact repro. |
|
Date |
User |
Action |
Args |
2021-08-02 20:24:12 | erlendaasland | set | recipients:
+ erlendaasland, hydroflask |
2021-08-02 20:24:12 | erlendaasland | set | messageid: <1627935852.81.0.413208941466.issue42698@roundup.psfhosted.org> |
2021-08-02 20:24:12 | erlendaasland | link | issue42698 messages |
2021-08-02 20:24:12 | erlendaasland | create | |
|