WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
226295
Abandon pending tasks on background thread when WebIDBServer is closed
https://bugs.webkit.org/show_bug.cgi?id=226295
Summary
Abandon pending tasks on background thread when WebIDBServer is closed
Sihui Liu
Reported
2021-05-26 14:37:43 PDT
Potential fix for
rdar://77532291
.
Attachments
Patch
(5.94 KB, patch)
2021-05-26 20:47 PDT
,
Sihui Liu
ews-feeder
: commit-queue-
Details
Formatted Diff
Diff
Patch
(5.99 KB, patch)
2021-05-26 23:02 PDT
,
Sihui Liu
no flags
Details
Formatted Diff
Diff
Patch
(6.03 KB, patch)
2021-05-27 09:06 PDT
,
Sihui Liu
ews-feeder
: commit-queue-
Details
Formatted Diff
Diff
Patch
(7.39 KB, patch)
2021-05-27 10:07 PDT
,
Sihui Liu
no flags
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
Sihui Liu
Comment 1
2021-05-26 20:47:26 PDT
Created
attachment 429839
[details]
Patch
Chris Dumez
Comment 2
2021-05-26 20:55:37 PDT
Comment on
attachment 429839
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=429839&action=review
> Source/WTF/ChangeLog:8 > + Make the wait ends with either a new message or queue being killed.
Ends -> end
> Source/WebKit/ChangeLog:9 > + tasks. We can ditch them by killing the CrossThreadQueue. For ongoing task, it can be blockd on quota check, so
Typo: blockd
> Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp:425 > + callOnMainRunLoop([protectedThis = WTFMove(protectedThis)]() mutable { });
Do we really need the mutable?
> Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp:436 > m_closeCallback();
Is it ok to call the close callback before we’ve actually asynchronously done it?
> Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.h:101 > + std::unique_ptr<WebCore::IDBServer::IDBServer> m_server WTF_GUARDED_BY_LOCK(m_serverLock);
Nice :)
Sihui Liu
Comment 3
2021-05-26 23:00:45 PDT
Comment on
attachment 429839
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=429839&action=review
>> Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp:425 >> + callOnMainRunLoop([protectedThis = WTFMove(protectedThis)]() mutable { }); > > Do we really need the mutable?
Nope
>> Source/WebKit/NetworkProcess/IndexedDB/WebIDBServer.cpp:436 >> m_closeCallback(); > > Is it ok to call the close callback before we’ve actually asynchronously done it?
Yes, this currently is just removing itself from the map of Network process and we keep the reference with CompletionCallback above.
Sihui Liu
Comment 4
2021-05-26 23:02:10 PDT
Created
attachment 429848
[details]
Patch
Sihui Liu
Comment 5
2021-05-27 09:06:03 PDT
Created
attachment 429883
[details]
Patch
Chris Dumez
Comment 6
2021-05-27 09:11:08 PDT
Comment on
attachment 429883
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=429883&action=review
> Source/WebCore/ChangeLog:9 > + abort transactions on the main thread.
Why is it safe then? There is no guarantee that SQLite is built with thread-safety support enabled or that SQLite mutexes are fully enabled at runtime.
Sihui Liu
Comment 7
2021-05-27 09:52:06 PDT
(In reply to Chris Dumez from
comment #6
)
> Comment on
attachment 429883
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=429883&action=review
> > > Source/WebCore/ChangeLog:9 > > + abort transactions on the main thread. > > Why is it safe then? There is no guarantee that SQLite is built with > thread-safety support enabled or that SQLite mutexes are fully enabled at > runtime.
Tasks on the background thread need to acquire the lock for m_server to perform database operations. They acquire the lock at start, release the lock before performing quota check (which may be blocked on waiting user permission), and acquire the lock again after it.
Sihui Liu
Comment 8
2021-05-27 10:07:03 PDT
Created
attachment 429892
[details]
Patch
Chris Dumez
Comment 9
2021-05-27 11:36:52 PDT
Comment on
attachment 429892
[details]
Patch r=me
EWS
Comment 10
2021-05-27 14:55:48 PDT
Committed
r278179
(
238222@main
): <
https://commits.webkit.org/238222@main
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 429892
[details]
.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug