Bug 23459

Summary: Workers are not properly terminated if execution hasn't begun yet
Product: WebKit Reporter: Alexey Proskuryakov <ap>
Component: WebCore Misc.Assignee: Alexey Proskuryakov <ap>
Status: RESOLVED FIXED    
Severity: Normal    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
proposed patch
darin: review+
Alternative patch oliver: review+

Description Alexey Proskuryakov 2009-01-21 12:01:25 PST
If Worker.terminate() is called before the worker thread has begun execution, it cannot forbid script execution. So, evaluating the script source can result in the thread entering a loop forever, taking 100% of processor (core) time.
Comment 1 Alexey Proskuryakov 2009-01-21 12:04:20 PST
Created attachment 26900 [details]
proposed patch
Comment 2 Darin Adler 2009-01-21 13:46:11 PST
Comment on attachment 26900 [details]
proposed patch

r=me
Comment 3 Alexey Proskuryakov 2009-01-22 00:27:04 PST
Created attachment 26924 [details]
Alternative patch

I changed my mind - I now think it's better to go through the normal code path, to avoid getting out of sync in the future. It's slightly less efficient, but this use case is definitely not something to optimize for.
Comment 4 Alexey Proskuryakov 2009-01-23 06:51:15 PST
Committed revision 40159.