<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>105870</bug_id>
          
          <creation_ts>2012-12-30 09:43:22 -0800</creation_ts>
          <short_desc>ASSERTION FAILED: m_finishedNodes.isEmpty() in AudioContext destructor</short_desc>
          <delta_ts>2020-09-09 15:54:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>212611</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>calvaris</cc>
    
    <cc>crogers</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>haraken</cc>
    
    <cc>hector_i_lopez</cc>
    
    <cc>jer.noble</cc>
    
    <cc>Lawrence.j</cc>
    
    <cc>loislo</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rackler</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>798237</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-30 09:43:22 -0800</bug_when>
    <thetext>Several webaudio tests sometimes hit the !m_finishedNodes.size() assertion in AudioContext destructor:
crash log for WebProcess (pid &lt;unknown&gt;):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: !m_finishedNodes.size()
STDERR: /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebCore/Modules/webaudio/AudioContext.cpp(198) : virtual WebCore::AudioContext::~AudioContext()
STDERR: 1   0x7f27f144c1b6 WebCore::AudioContext::~AudioContext()
STDERR: 2   0x7f27f1474430 WebCore::OfflineAudioContext::~OfflineAudioContext()
STDERR: 3   0x7f27f1474468 WebCore::OfflineAudioContext::~OfflineAudioContext()
STDERR: 4   0x7f27f144fbcc WTF::ThreadSafeRefCounted&lt;WebCore::AudioContext&gt;::deref()
STDERR: 5   0x7f27f24235a8 WebCore::JSAudioContext::releaseImpl()
STDERR: 6   0x7f27f2443370 WebCore::JSOfflineAudioContextOwner::finalize(JSC::Handle&lt;JSC::Unknown&gt;, void*)
STDERR: 7   0x7f27eb741ac9 JSC::WeakBlock::finalize(JSC::WeakImpl*)
STDERR: 8   0x7f27eb7414bf JSC::WeakBlock::sweep()
STDERR: 9   0x7f27eb7406b6 JSC::WeakSet::sweep()
STDERR: 10  0x7f27eb738965 JSC::MarkedBlock::sweep(JSC::MarkedBlock::SweepMode)
STDERR: 11  0x7f27eb73b2d3 JSC::Sweep::operator()(JSC::MarkedBlock*)
STDERR: 12  0x7f27eb73c5f5 void JSC::MarkedAllocator::forEachBlock&lt;JSC::Sweep&gt;(JSC::Sweep&amp;)
STDERR: 13  0x7f27eb73c111 JSC::Sweep::ReturnType JSC::MarkedSpace::forEachBlock&lt;JSC::Sweep&gt;(JSC::Sweep&amp;)
STDERR: 14  0x7f27eb73b93b JSC::Sweep::ReturnType JSC::MarkedSpace::forEachBlock&lt;JSC::Sweep&gt;()
STDERR: 15  0x7f27eb73a641 JSC::MarkedSpace::sweep()
STDERR: 16  0x7f27eb729b72 JSC::Heap::collect(JSC::Heap::SweepToggle)
STDERR: 17  0x7f27eb729889 JSC::Heap::collectAllGarbage()
STDERR: 18  0x7f27f233feac
STDERR: 19  0x7f27f233ffa2 WebCore::GCController::gcTimerFired(WebCore::Timer&lt;WebCore::GCController&gt;*)
STDERR: 20  0x7f27f2340232 WebCore::Timer&lt;WebCore::GCController&gt;::fired()
STDERR: 21  0x7f27f1daf1aa WebCore::ThreadTimers::sharedTimerFiredInternal()
STDERR: 22  0x7f27f1daf0cb WebCore::ThreadTimers::sharedTimerFired()
STDERR: 23  0x7f27f286f625
STDERR: 24  0x7f27ee7dd33e _ecore_timer_expired_call
STDERR: 25  0x7f27ee7dd50b _ecore_timer_expired_timers_call
STDERR: 26  0x7f27ee7da421
STDERR: 27  0x7f27ee7daab7 ecore_main_loop_begin
STDERR: 28  0x7f27f286dee7 WebCore::RunLoop::run()
STDERR: 29  0x7f27f6353a84 WebProcessMainEfl
STDERR: 30  0x400804 main
STDERR: 31  0x7f27f53a876d __libc_start_main

At least the following tests are affected:
  webaudio/audionode-connect-order.html
  webaudio/audiobuffersource.html

It does not look specific to EFL port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997512</commentid>
    <comment_count>1</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-04-04 02:29:44 -0700</bug_when>
    <thetext>More affected tests:

* webaudio/audiobuffersource-loop-points.html
* webaudio/audionode-connect-order.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033944</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-09-08 14:16:04 -0700</bug_when>
    <thetext>This is still happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168900</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-02-27 13:29:06 -0800</bug_when>
    <thetext>rdar://problem/24740153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213758</commentid>
    <comment_count>4</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-07-22 15:09:07 -0700</bug_when>
    <thetext>Marked webaudio/audionode-connect-order.html as flaky on mac-wk1 debug in https://trac.webkit.org/r203619</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620392</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-18 15:33:58 -0800</bug_when>
    <thetext>*** Bug 207915 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621931</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-22 17:48:37 -0800</bug_when>
    <thetext>*** Bug 208061 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646735</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-04-28 16:25:35 -0700</bug_when>
    <thetext>We&apos;re still seeing this intermittently on bots + EWS with at least the following tests:
webaudio/audioparam-connect-audioratesignal.html
webaudio/audioparam-setValueAtTime.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664634</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-06-19 17:19:38 -0700</bug_when>
    <thetext>*** Bug 213375 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676578</commentid>
    <comment_count>9</comment_count>
    <who name="Hector Lopez">hector_i_lopez</who>
    <bug_when>2020-07-30 15:04:10 -0700</bug_when>
    <thetext>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&amp;test=webaudio%2Faudioparam-connect-audioratesignal.html&amp;limit=50000&amp;platform=mac&amp;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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685724</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-09-04 10:00:43 -0700</bug_when>
    <thetext>*** Bug 216151 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686985</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-09 09:02:59 -0700</bug_when>
    <thetext>I am trying to reproduce. If anybody has a somewhat reliable way of reproducing, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687014</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-09 10:08:29 -0700</bug_when>
    <thetext>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().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687046</commentid>
    <comment_count>13</comment_count>
      <attachid>408343</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-09 10:47:40 -0700</bug_when>
    <thetext>Created attachment 408343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687076</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-09 11:41:06 -0700</bug_when>
    <thetext>Committed r266793: &lt;https://trac.webkit.org/changeset/266793&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408343.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687179</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-09 15:54:47 -0700</bug_when>
    <thetext>Only took me 8 years to fix this bug :o)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408343</attachid>
            <date>2020-09-09 10:47:40 -0700</date>
            <delta_ts>2020-09-09 11:41:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105870-20200909104739.patch</filename>
            <type>text/plain</type>
            <size>2580</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UyODBhMjE2YjMwNTY0
OWU4MDRhYzc2ODgxOGU3MDU5ZjcwZTdlZS4uZmE1NTVmMGZhODM2MzA3Mjc2NzU3MWRiNDAxMjRh
OWQ2NjM2ZDU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA5LTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDog
bV9maW5pc2hlZE5vZGVzLmlzRW1wdHkoKSBpbiBBdWRpb0NvbnRleHQgZGVzdHJ1Y3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhc3NlcnRp
b24gaW5kaWNhdGVzIHRoYXQgQmFzZUF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5v
ZGVzKCkgd2FzIG5vdAorICAgICAgICBjYWxsZWQgYmVmb3JlIHRoZSBCYXNlQXVkaW9Db250ZXh0
IGRlc3RydWN0b3IuIE5vcm1hbGx5LCBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKQorICAgICAg
ICBnZXRzIGNhbGxlZCBmcm9tIEJhc2VBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNr
cygpIGF0IHRoZSBlbmQgb2YgcmVuZGluZy4KKyAgICAgICAgSG93ZXZlciwgQmFzZUF1ZGlvQ29u
dGV4dDo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgb25seSBjYWxscyBkZXJlZkZpbmlzaGVkU291
cmNlTm9kZXMoKQorICAgICAgICBpZiB0cnlMb2NrKCkgc3VjY2VlZHMuIFRoZXJlZm9yZSwgaW4g
Y2FzZSBvZiBsb2NrIGNvbnRlbnRpb24sIGl0IHdhcyBwb3NzaWJsZSB3ZSB3b3VsZAorICAgICAg
ICBlbmQgdXAgZGVzdHJveWluZyB0aGUgQmFzZUF1ZGlvQ29udGV4dCB3aXRob3V0IGRlcmVmRmlu
aXNoZWRTb3VyY2VOb2RlcygpIGhhdmluZyBiZWVuCisgICAgICAgIGNhbGxlZCBhdCB0aGUgZW5k
IG9mIHRoZSByZW5kZXJpbmcuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNzdWUsIHdlIG5v
dyBjYWxsIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpIGFmdGVyIHRoZSBhdWRpbyB0aHJlYWQg
aXMKKyAgICAgICAgZ29uZSBhbmQgYmVmb3JlIHRoZSBCYXNlQXVkaW9Db250ZXh0IGdldHMgZGVz
dHJveWVkLCBpbiBCYXNlQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgdGhhdCBhcmUgZmxha3kgY3Jh
c2hpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKToKKwog
MjAyMC0wOS0wOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0lGQ10gTGluZSBzaG91bGQgbm90IGtub3cgYWJvdXQgZmxvYXRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmNwcAppbmRleCBj
MDU0NGM5Y2UwYzNkZTQ4YTdhZGQxNDQxNzUwYTI0NjU4MGUyOTM4Li5mYWRkZWVlYWEyYjk5ZWJk
YjgzOWI3MmQwZGU1NzMxOGQ1OWNjNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTI2Nyw2ICsyNjcsMTUgQEAg
dm9pZCBCYXNlQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQogICAgICAgICBzZXRTdGF0ZShT
dGF0ZTo6Q2xvc2VkKTsKICAgICB9CiAKKyAgICB7CisgICAgICAgIEF1dG9Mb2NrZXIgbG9ja2Vy
KCp0aGlzKTsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmcm9tIGhh
bmRsZVBvc3RSZW5kZXJUYXNrcygpIGF0IHRoZSBlbmQgb2YgcmVuZGVyaW5nLgorICAgICAgICAv
LyBIb3dldmVyLCBpbiBjYXNlIG9mIGxvY2sgY29udGVudGlvbiwgdGhlIHRyeUxvY2soKSBjYWxs
IGNvdWxkIGhhdmUgZmFpbGVkIGluIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpLAorICAgICAgICAv
LyBsZWF2aW5nIG5vZGVzIGluIG1fZmluaXNoZWROb2Rlcy4gTm93IHRoYXQgdGhlIGF1ZGlvIHRo
cmVhZCBpcyBnb25lLCBtYWtlIHN1cmUgd2UgZGVyZWYgdGhvc2Ugbm9kZXMKKyAgICAgICAgLy8g
YmVmb3JlIHRoZSBCYXNlQXVkaW9Db250ZXh0IGdldHMgZGVzdHJveWVkLgorICAgICAgICBkZXJl
ZkZpbmlzaGVkU291cmNlTm9kZXMoKTsKKyAgICB9CisKICAgICAvLyBHZXQgcmlkIG9mIHRoZSBz
b3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgogICAgIGRlcmVmVW5maW5pc2hlZFNv
dXJjZU5vZGVzKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>