Bug 17177

Summary: Storage tasks are getting lost
Product: WebKit Reporter: Alexey Proskuryakov <ap>
Component: WebCore Misc.Assignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: beidson
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Mac   
OS: OS X 10.5   
URL: http://bugs.webkit.org/attachment.cgi?id=18455

Alexey Proskuryakov
Reported 2008-02-04 14:32:01 PST
With WebCore SQL logging enabled, open <http://bugs.webkit.org/attachment.cgi?id=18455>. It runs without assertion failures now, but after a while, it just stops (it doesn't freeze Safari, but no more SQL requests are being served).
Attachments
Alexey Proskuryakov
Comment 1 2008-02-06 01:55:10 PST
The database thread loop looks like this: while (!m_terminationRequested) { m_threadMutex.unlock(); AutodrainedPool pool; LOG(StorageAPI, "Iteration of main loop for DatabaseThread %p", this); bool result; do { result = dispatchNextTaskIdentifier(); if (m_terminationRequested) break; } while(result); if (m_terminationRequested) break; pool.cycle(); m_threadMutex.lock(); m_threadCondition.wait(m_threadMutex); } It's pretty clear how the wakeup is lost - if a new task is dispatched after the inner loop has decided that it has nothing else to do, but before we're stopped on the condition, the condition is signaled in vain.
Alexey Proskuryakov
Comment 2 2008-02-07 05:19:56 PST
Alexey Proskuryakov
Comment 3 2008-02-12 11:38:45 PST
Note You need to log in before you can comment on or make changes to this bug.