RESOLVED FIXED 225881
Make sure SQLiteStatement objects get destroyed before the database is closed
https://bugs.webkit.org/show_bug.cgi?id=225881
Summary Make sure SQLiteStatement objects get destroyed before the database is closed
Chris Dumez
Reported 2021-05-17 12:59:11 PDT
Make sure SQLiteStatement objects get destroyed before the database is closed. There are 2 issues with destroying a SQLiteStatement after a database is closed: 1. The underlying call to close the sqlite database will fail if the database still has statements and we will leak the database. 2. SQLiteStatement has a reference to the database so it cannot outlive the SQLiteDatabase.
Attachments
Patch (7.74 KB, patch)
2021-05-17 13:47 PDT, Chris Dumez
no flags
Patch (9.15 KB, patch)
2021-05-17 20:58 PDT, Chris Dumez
no flags
Patch (9.09 KB, patch)
2021-05-18 07:37 PDT, Chris Dumez
no flags
Chris Dumez
Comment 1 2021-05-17 13:47:35 PDT
Chris Dumez
Comment 2 2021-05-17 20:58:58 PDT
Darin Adler
Comment 3 2021-05-17 23:07:01 PDT
Comment on attachment 428910 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=428910&action=review > Source/WebCore/platform/sql/SQLiteDatabase.cpp:225 > + ASSERT_WITH_MESSAGE(!m_statementCount, "All SQLiteTransaction objects should be destroyed before closing the database"); "should" -> "must" > Source/WebCore/platform/sql/SQLiteDatabase.cpp:727 > +void SQLiteDatabase::incrementStatementCount() > +{ > +#if ASSERT_ENABLED > + ++m_statementCount; > +#endif > +} > + > +void SQLiteDatabase::decrementStatementCount() > +{ > +#if ASSERT_ENABLED > + ASSERT(m_statementCount); > + --m_statementCount; > +#endif > +} When asserts are disabled you’d want this empty function inlined. Can we put these in the header?
Chris Dumez
Comment 4 2021-05-18 07:37:07 PDT
EWS
Comment 5 2021-05-18 08:35:10 PDT
Committed r277653 (237859@main): <https://commits.webkit.org/237859@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 428935 [details].
Radar WebKit Bug Importer
Comment 6 2021-05-18 08:36:22 PDT
Note You need to log in before you can comment on or make changes to this bug.