WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
107577
Prevent race condition during Worker shutdown
https://bugs.webkit.org/show_bug.cgi?id=107577
Summary
Prevent race condition during Worker shutdown
Joshua Bell
Reported
2013-01-22 12:06:31 PST
Prevent race condition during Worker shutdown
Attachments
Patch
(6.01 KB, patch)
2013-01-22 12:14 PST
,
Joshua Bell
no flags
Details
Formatted Diff
Diff
Patch
(5.30 KB, patch)
2013-01-22 14:50 PST
,
Joshua Bell
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Joshua Bell
Comment 1
2013-01-22 12:14:46 PST
Created
attachment 184031
[details]
Patch
Darin Adler
Comment 2
2013-01-22 14:31:38 PST
Comment on
attachment 184031
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=184031&action=review
Patch looks fine, but there are a few stylistic issues worth fixing. review- to fix those No need to have me be the one who reviews next time around.
> Source/WTF/ChangeLog:14 > + (MessageQueue): > + (WTF): > + (WTF::::appendAndKill):
All three of these lines look bogus. Please fix them if the script generates something that looks like nonsense. Per-function comments are even better.
> Source/WebCore/ChangeLog:19 > + (WorkerRunLoop):
Please remove this bogus line.
> Source/WebCore/workers/WorkerRunLoop.h:64 > + void postTask(PassOwnPtr<ScriptExecutionContext::Task>, bool terminate = false); > + void postTaskForMode(PassOwnPtr<ScriptExecutionContext::Task>, const String& mode, bool terminate = false);
I’m not sure that a boolean or enum here is superior to a separate postTaskAndTerminate function. It seems that a separate function will work just fine: void postTaskAndTerminate(PassOwnPtr<ScriptExecutionContext::Task> task) { m_messageQueue.appendAndKill(Task::create(task, defaultMode().isolatedCopy())); } No reason to touch these existing functions at all.
> Source/WebCore/workers/WorkerThread.cpp:275 > + const bool terminate = true; > + m_runLoop.postTask(WorkerThreadShutdownStartTask::create(), terminate);
This named boolean argument idiom is not what we use for things like this in WebKit; it’s too easy for it to be wrong or get out of sync with the function we are calling. Instead we use enums, which is a perfect fit here. We can and should define an enum in WorkerRunLoop.h.
Joshua Bell
Comment 3
2013-01-22 14:46:17 PST
Thanks, darin@. Seemingly contradictory advice... (In reply to
comment #2
)
> No reason to touch these existing functions at all.
vs.
> We can and should define an enum in WorkerRunLoop.h.
.. but I went with adding postTaskAndTerminate() since that seems the clearest.
Joshua Bell
Comment 4
2013-01-22 14:50:00 PST
Created
attachment 184052
[details]
Patch
Joshua Bell
Comment 5
2013-01-22 15:35:46 PST
r+ anyone?
WebKit Review Bot
Comment 6
2013-01-22 15:47:14 PST
Comment on
attachment 184052
[details]
Patch Clearing flags on attachment: 184052 Committed
r140483
: <
http://trac.webkit.org/changeset/140483
>
WebKit Review Bot
Comment 7
2013-01-22 15:47:17 PST
All reviewed patches have been landed. Closing bug.
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