Summary: | ASSERTION FAILED: m_finishedNodes.isEmpty() in AudioContext destructor | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Chris Dumez <cdumez> | ||||
Component: | Web Audio | Assignee: | Chris Dumez <cdumez> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | aakash_jain, abarth, ap, calvaris, crogers, darin, eric.carlson, ews-watchlist, ggaren, glenn, haraken, hector_i_lopez, jer.noble, Lawrence.j, loislo, philipj, pnormand, rackler, ryanhaddad, sergio, svillar | ||||
Priority: | P2 | Keywords: | InRadar | ||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Bug Depends on: | |||||||
Bug Blocks: | 212611 | ||||||
Attachments: |
|
Description
Chris Dumez
2012-12-30 09:43:22 PST
More affected tests: * webaudio/audiobuffersource-loop-points.html * webaudio/audionode-connect-order.html This is still happening. Marked webaudio/audionode-connect-order.html as flaky on mac-wk1 debug in https://trac.webkit.org/r203619 *** Bug 207915 has been marked as a duplicate of this bug. *** *** Bug 208061 has been marked as a duplicate of this bug. *** We're still seeing this intermittently on bots + EWS with at least the following tests: webaudio/audioparam-connect-audioratesignal.html webaudio/audioparam-setValueAtTime.html *** Bug 213375 has been marked as a duplicate of this bug. *** webaudio/audioparam-connect-audioratesignal.html This test is flaky crashing according to history on macOS Debug on bots and EWS. This is part of a larger group /webaudio that has been flaky crashing on EWS. History: https://results.webkit.org/?suite=layout-tests&test=webaudio%2Faudioparam-connect-audioratesignal.html&limit=50000&platform=mac&style=debug Crash log: https://ews-build.s3-us-west-2.amazonaws.com/macOS-Mojave-Debug-WK1-Tests-EWS/r405576-14837/webaudio/audioparam-connect-audioratesignal-crash-log.txt *** Bug 216151 has been marked as a duplicate of this bug. *** I am trying to reproduce. If anybody has a somewhat reliable way of reproducing, please let me know. This assertion indicates that BaseAudioContext::derefFinishedSourceNodes() was not called before the BaseAudioContext Destructor. Normally, derefFinishedSourceNodes() gets called from BaseAudioContext::handlePostRenderTasks() at the end of each render quantum. However, BaseAudioContext::handlePostRenderTasks() only calls derefFinishedSourceNodes() if tryLock() succeeds. Therefore, in case of lock contention, it is possible we end up destroying the BaseAudioContext without derefFinishedSourceNodes() having been called at the end of the last rendering. I think the right thing to do is to forcefully call derefFinishedSourceNodes() after the audio thread is gone and before the BaseAudioContext gets destroyed, likely in BaseAudioContext::uninitialize(). Created attachment 408343 [details]
Patch
Committed r266793: <https://trac.webkit.org/changeset/266793> All reviewed patches have been landed. Closing bug and clearing flags on attachment 408343 [details]. Only took me 8 years to fix this bug :o) |