<?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>72698</bug_id>
          
          <creation_ts>2011-11-18 00:53:31 -0800</creation_ts>
          <short_desc>Audio object garbage collection is incorrect (media/audio-garbage-collect.html test is flaky)</short_desc>
          <delta_ts>2013-10-11 03:16:36 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82537</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dieter</cc>
    
    <cc>enal</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ggaren</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>slewis</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>505582</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-18 00:53:31 -0800</bug_when>
    <thetext>There are two issues:

- the test should wait for &quot;seeked&quot; before setting element to play
- even by fixing the first issue the test remains flaky because of the test just before, it seems, audio-delete-while-step-button-clicked.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505585</commentid>
    <comment_count>1</comment_count>
      <attachid>115760</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-18 01:00:20 -0800</bug_when>
    <thetext>Created attachment 115760
proposed patch

Not setting r flag because of the second issue mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505589</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-18 01:05:37 -0800</bug_when>
    <thetext>Marked flaky in http://trac.webkit.org/changeset/100733</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507188</commentid>
    <comment_count>3</comment_count>
    <who name="Eugene Nalimov">enal</who>
    <bug_when>2011-11-21 13:49:38 -0800</bug_when>
    <thetext>According to

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.htm

it is perfectly Ok to run play() on audio object immediately after setting its currentTime. E.g. there is example on that page that contains

  function playSound(id) {
    sfx.currentTime = sounds.getCueById(id).startTime;
    sfx.play();
  }

So I don&apos;t believe flakiness is caused by calling play() after setting currentTime -- and you still see flakiness when you apply your patch.

Can the test somehow fail because of the previous test failure? Are they using the same browser instance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507440</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-22 00:32:50 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; According to
&gt; 
&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.htm
&gt; 
&gt; it is perfectly Ok to run play() on audio object immediately after setting its currentTime. E.g. there is example on that page that contains
&gt; 
&gt;   function playSound(id) {
&gt;     sfx.currentTime = sounds.getCueById(id).startTime;
&gt;     sfx.play();
&gt;   }
&gt; 
&gt; So I don&apos;t believe flakiness is caused by calling play() after setting currentTime

Right, indeed!

&gt; -- and you still see flakiness when you apply your patch.
&gt; 
&gt; Can the test somehow fail because of the previous test failure? Are they using the same browser instance?

Well yes, a single WebView is used per instance of DRT. We currently limit NRWT to one worker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571811</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-06 06:52:19 -0800</bug_when>
    <thetext>I dedicated some hours to this issue today... Here are my findings:

- test executed standalone: works
- test executed after a video test: works
- test executed after an audio test: times out

If I replace:

var a = new Audio(audioFile);

with:

setSrcByTagName(&quot;audio&quot;, findMediaFile(&quot;audio&quot;, &quot;content/silence&quot;));
var a = document.getElementById(&apos;audio&apos;);

(and a &lt;audio id=&quot;audio&quot;/&gt; element in the body).

And:

a = null;

with:

a.parentNode.removeChild(a);

The test passes in all cases. Could this be a JSC-related issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571880</commentid>
    <comment_count>6</comment_count>
    <who name="Eugene Nalimov">enal</who>
    <bug_when>2012-03-06 08:26:20 -0800</bug_when>
    <thetext>When you got rid of
  a = null;
you are avoiding situation test is checking -- variable &quot;a&quot; still contains reference to audio object, so it would not be garbage collected regardless of its status. Test checks that audio object cannot be collected while it is playing even if there is no reference to it left.

When you are saying &quot;JSC&quot; do you mean JS interpreter/JIT-ter used in Safari? Or is the test flaky with Chromium as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571889</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-06 08:51:54 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; When you got rid of
&gt;   a = null;
&gt; you are avoiding situation test is checking -- variable &quot;a&quot; still contains reference to audio object, so it would not be garbage collected regardless of its status. Test checks that audio object cannot be collected while it is playing even if there is no reference to it left.
&gt; 

Alright.

&gt; When you are saying &quot;JSC&quot; do you mean JS interpreter/JIT-ter used in Safari? Or is the test flaky with Chromium as well?

This issue happens on the GTK port of WebKit, which uses JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571899</commentid>
    <comment_count>8</comment_count>
    <who name="Eugene Nalimov">enal</who>
    <bug_when>2012-03-06 09:09:28 -0800</bug_when>
    <thetext>Then my guess would be that JSC/GTK contains bug similar to v8 one I fixed.

I had to fix 2 different bugs in V8:
* One in HTMLAudioElement, it was not &quot;active&quot; object (i.e. object that can have some hidden activity, meaning that it cannot be collected before it finishes that activity).
* Second bug was is v8 bindings, code handling active objects was not designed to work with active objects derived from &quot;Node&quot;.

For details please see
https://bugs.webkit.org/show_bug.cgi?id=66878
https://bugs.webkit.org/show_bug.cgi?id=70421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572824</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-07 05:33:25 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Then my guess would be that JSC/GTK contains bug similar to v8 one I fixed.
&gt; 
&gt; I had to fix 2 different bugs in V8:
&gt; * One in HTMLAudioElement, it was not &quot;active&quot; object (i.e. object that can have some hidden activity, meaning that it cannot be collected before it finishes that activity).
&gt; * Second bug was is v8 bindings, code handling active objects was not designed to work with active objects derived from &quot;Node&quot;.
&gt; 
&gt; For details please see
&gt; https://bugs.webkit.org/show_bug.cgi?id=66878
&gt; https://bugs.webkit.org/show_bug.cgi?id=70421

I think this is indeed a bug in the JSC bindings, patch incoming. Thanks a lot for the hints Eugene.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572831</commentid>
    <comment_count>10</comment_count>
      <attachid>130608</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-07 05:51:50 -0800</bug_when>
    <thetext>Created attachment 130608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572897</commentid>
    <comment_count>11</comment_count>
      <attachid>130608</attachid>
    <who name="Eugene Nalimov">enal</who>
    <bug_when>2012-03-07 08:22:38 -0800</bug_when>
    <thetext>Comment on attachment 130608
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=130608&amp;action=review

&gt; Source/WebCore/bindings/js/JSNodeCustom.cpp:119
&gt; +            if (!static_cast&lt;HTMLAudioElement*&gt;(node)-&gt;hasPendingActivity())

hasPendingActivity() is definitely better than paused(), but why it matters for that particular case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572909</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-07 08:37:54 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 130608 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130608&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSNodeCustom.cpp:119
&gt; &gt; +            if (!static_cast&lt;HTMLAudioElement*&gt;(node)-&gt;hasPendingActivity())
&gt; 
&gt; hasPendingActivity() is definitely better than paused(), but why it matters for that particular case?

Because the media element ends up paused and thus without this patch prevents the garbage collection to succeed (I think).

HTMLAudioElement::hasPendingActivity() first checks isPlaying(), which is false.

So it seems that witch this patch the correct code path is used during the test and it doesn&apos;t time out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572920</commentid>
    <comment_count>13</comment_count>
    <who name="Eugene Nalimov">enal</who>
    <bug_when>2012-03-07 08:48:29 -0800</bug_when>
    <thetext>LGTM, but I don&apos;t know how to make it official, and I don&apos;t have commit rights...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572950</commentid>
    <comment_count>14</comment_count>
      <attachid>130608</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-03-07 09:20:28 -0800</bug_when>
    <thetext>Comment on attachment 130608
Patch

r=me since this does what the image element is already doing and fixes the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572955</commentid>
    <comment_count>15</comment_count>
      <attachid>130608</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-07 09:27:32 -0800</bug_when>
    <thetext>Comment on attachment 130608
Patch

Clearing flags on attachment: 130608

Committed r110064: &lt;http://trac.webkit.org/changeset/110064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572957</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-07 09:27:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590217</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-28 11:56:20 -0700</bug_when>
    <thetext>This has caused a serious regression, bug 82421.

Bugs with [platform] prefixes should never have patches that change cross platform code.

This is because most core developers don&apos;t look at such bugs, so they effectively get less scrutiny. Please be very careful to only use the [GTK] prefix when you expect that the issue is purely port specific, and remove the prefix if it turns out to be cross platform.

Also, you should have CC&apos;ed folks working on media elements, and on JavaScriptCore bindings. This code has been looked at many times in the past, so there may be subtle consequences to changes like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590308</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-03-28 12:52:46 -0700</bug_when>
    <thetext>&gt; Bugs with [platform] prefixes should never have patches that change cross platform code.

Eugene, Philippe, Xan, a number of bad things happened here:

(1) As Alexey mentioned, you marked this patch as a [platform] bug, when it&apos;s not.

(2) Eugene asserted without evidence that &quot;hasPendingActivity() is definitely better than paused()&quot;, and didn&apos;t consult any media experts or anyone in the SVN blame list for this code about his assertion.

(3) Nobody tested that, after this change, audio elements could still be garbage collected.

(4) Xan r+-ed this patch despite all the above problems.

Please use better judgement in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590323</commentid>
    <comment_count>19</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-28 13:08:58 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (1) As Alexey mentioned, you marked this patch as a [platform] bug, when it&apos;s not.

It is often the case that a bug will start out to be platform-specific (in this case it was some GTK+ tests showing flakiness) and later gradually turn into a platform-independent bug. People, by nature, are forgetful or busy or tired or overwhelmed with work, so often forget to remove tags like &quot;[GTK].&quot;

I think there are some avenues for improving this situation though:

1. People could make sure to add themsevles to a watchlist for files they care about, which will CC them automatically.
2. check-webkit-style could be taught to look out for patches that contain strings like &quot;[GTK]&quot;  and change files outside of the platform-specific directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590678</commentid>
    <comment_count>20</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2012-03-28 18:03:30 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/projects/webkit/changeset/112483.  Reopening this bug.

Eric&apos;s comments from https://bugs.webkit.org/show_bug.cgi?id=82421

Comment #9 From Eric Carlson 2012-03-28 17:41:24 PST (-) [reply]
(In reply to comment #6)
&gt; I think it would be even better just to revert http://trac.webkit.org/projects/webkit/changeset/110064 and consult Eric and Jer about what the best fix is. It&apos;s not clear that HTMLAudioElement::hasPendingActivity is the right test for GC.

HTMLAudioElement::hasPendingActivity is definitely NOT the correct test. The reason that we care about this is that the spec says when a media element can be collected:

    Media elements that are potentially playing while not in a Document 
    must not play any video, but should play any audio component. Media 
    elements must not stop playing just because all references to them 
    have been removed; only once a media element is in a state where 
    no further audio could ever be played by that element may the 
    element be garbage collected.

and &quot;potentially playing&quot; is defined as:

    A media element is said to be potentially playing when its paused 
    attribute is false, the element has not ended playback, playback has 
    not stopped due to errors, the element either has no current media 
    controller or has a current media controller but is not blocked on its 
    media controller, and the element is not a blocked media element.

As it happens, we have HTMLMediaElement::potentiallyPlaying because &quot;potentially playing&quot; is used in other parts of the media element spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591943</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-30 01:14:12 -0700</bug_when>
    <thetext>I&apos;m so sorry for all the trouble caused. I&apos;ll use better judgement in the future, especially about bug title tags CC&apos;ed people.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930737</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-18 14:03:32 -0700</bug_when>
    <thetext>*** Bug 117555 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932192</commentid>
    <comment_count>23</comment_count>
      <attachid>212365</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-23 10:48:28 -0700</bug_when>
    <thetext>Created attachment 212365
non-working fix

Attaching my unsuccessful cut at fixing this.

Changed WebCore to use potentiallyPlaying, and made the test more strict - currently it&apos;s pretty much ineffective, as it only calls gc() when a pointer is almost certain to be on the stack anyway. Looks like issues with Audio garbage collection are deeper yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932196</commentid>
    <comment_count>24</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-23 10:56:33 -0700</bug_when>
    <thetext>Skipped the test in &lt;http://trac.webkit.org/r156280&gt;.

&lt;rdar://problem/15056308&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115760</attachid>
            <date>2011-11-18 01:00:20 -0800</date>
            <delta_ts>2012-03-07 05:51:33 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001-proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>2088</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3ODA0YjU0NmYwZmEyODRhZTRiNjI2YTgzZjAxNThmOGE3YTdiODU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBGcmksIDE4IE5vdiAyMDExIDA5OjU2OjE1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
cHJvcG9zZWQgcGF0Y2gKCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICA5ICsrKysrKysrKwogTGF5b3V0VGVzdHMvbWVkaWEvYXVkaW8tZ2FyYmFn
ZS1jb2xsZWN0Lmh0bWwgfCAgIDEzICsrKysrKystLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTYg
aW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzlhMWZlMS4uZWFiNzI0MSAx
MDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTExLTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBtZWRpYS9hdWRpby1nYXJiYWdlLWNv
bGxlY3QuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzI2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIG1lZGlhL2F1ZGlvLWdhcmJhZ2UtY29sbGVjdC5odG1sOiBSZWZhY3RvcmVk
IHRvIHdhaXQgb24gc2Vla2VkIGV2ZW50LgorCiAyMDExLTExLTE3ICBHYWJvciBMb2tpICA8bG9r
aUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gUkVHUkVTU0lPTihyMTAwNTEwKTogRW5hYmxl
IDggQml0IFN0cmluZ3MgaW4gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL2F1ZGlvLWdhcmJhZ2UtY29sbGVjdC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvYXVk
aW8tZ2FyYmFnZS1jb2xsZWN0Lmh0bWwKaW5kZXggNzIxOGY2MC4uMmZhYzA2YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvbWVkaWEvYXVkaW8tZ2FyYmFnZS1jb2xsZWN0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvYXVkaW8tZ2FyYmFnZS1jb2xsZWN0Lmh0bWwKQEAgLTMzLDE1ICszMywx
NyBAQCBmdW5jdGlvbiBzdGFydCgpIHsKICAgICB2YXIgbnVtX3BsYXllZCA9IDA7CiAgICAgdmFy
IGF1ZGlvRmlsZSA9IGZpbmRNZWRpYUZpbGUoImF1ZGlvIiwgImNvbnRlbnQvc2lsZW5jZSIpOwog
ICAgIHZhciBhID0gbmV3IEF1ZGlvKGF1ZGlvRmlsZSk7CisgICAgYS5hZGRFdmVudExpc3RlbmVy
KCdzZWVrZWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYS5wbGF5KCk7CisgICAgICAgIGlmIChu
dW1fcGxheWVkID09IHBsYXlfdGltZXMgLSAxKSB7CisgICAgICAgICAgICBhID0gbnVsbDsKKyAg
ICAgICAgICAgIGdjKCk7CisgICAgICAgIH0KKyAgICB9KTsKICAgICBhLmFkZEV2ZW50TGlzdGVu
ZXIoJ2VuZGVkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIG51bV9wbGF5ZWQgKys7CiAgICAgICAg
IGlmIChudW1fcGxheWVkIDwgcGxheV90aW1lcykgewogICAgICAgICAgICAgYS5jdXJyZW50VGlt
ZSA9IGEuZHVyYXRpb24gLSAwLjM1OwotICAgICAgICAgICAgYS5wbGF5KCk7Ci0gICAgICAgICAg
ICBpZiAobnVtX3BsYXllZCA9PSBwbGF5X3RpbWVzIC0gMSkgewotICAgICAgICAgICAgICAgIGEg
PSBudWxsOwotICAgICAgICAgICAgICAgIGdjKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBudW1fcGxheWVycyAtLTsKICAgICAgICAgICAgIGlmIChudW1f
cGxheWVycyA9PSAwKQpAQCAtNTIsNyArNTQsNiBAQCBmdW5jdGlvbiBzdGFydCgpIHsKICAgICB9
KTsKICAgICBhLmFkZEV2ZW50TGlzdGVuZXIoJ2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24oKSB7
CiAgICAgICAgIGEuY3VycmVudFRpbWUgPSBhLmR1cmF0aW9uIC0gMC4zNTsKLSAgICAgICAgYS5w
bGF5KCk7CiAgICAgfSk7CiB9CiAKLS0gCjEuNy44LnJjMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130608</attachid>
            <date>2012-03-07 05:51:50 -0800</date>
            <delta_ts>2013-09-23 10:48:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72698-20120307145148.patch</filename>
            <type>text/plain</type>
            <size>3132</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5ZjEwZTUzMTMwNjQ1
NDdkMmUwNTY5YTg3MmI4NjU0OGI5YjRkMS4uNmVmMmU0N2YwNjZiNjdkOGFiNzg5ZDFhNmM4ODAw
YjVhZDJjNmYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTA3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBtZWRp
YS9hdWRpby1nYXJiYWdlLWNvbGxlY3QuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsIDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
aW5zdGVhZCBvZiA6OnBhdXNlZCgpIHdoZW4gY2hlY2tpbmcgaWYKKyAgICAgICAgdGhlIGF1ZGlv
IGVsZW1lbnQgaXMgc3RpbGwgYWN0aXZlLiBUaGlzIGlzIHNpbWlsYXIgdG8gd2hhdCB0aGUKKyAg
ICAgICAgaW1hZ2UgZWxlbWVudCAoYW5vdGhlciBBY3RpdmVET01PYmplY3QgaW1wbGVtZW50YXRp
b24pIGRvZXMganVzdAorICAgICAgICBhYm92ZS4gVGhpcyBjb250cmlidXRlcyB0byBmaXhpbmcg
dGhlIGF1ZGlvLWdhcmJhZ2UtY29sbGVjdC5odG1sCisgICAgICAgIHRlc3QuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZWFj
aGFibGVGcm9tRE9NKToKKwogMjAxMi0wMy0wNyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYlNvY2tldF0gU2hvdWxkIHJhaXNlIFNZTlRBWF9F
UlIgd2hlbiBtZXNzYWdlIGNvbnRhaW5zIHVucGFpcmVkIHN1cnJvZ2F0ZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IDdjZGQ1ZmNlN2Y2ODYyMDQz
N2MzYTBmMzQ5NDJmYzY0YWYzNjY1ZWQuLjdkMDBjMDk5ZGM5MGY5NDQzMDhmMjA0MDdlNzQ0Y2M0
MmI5OWI5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21E
T00oSlNOb2RlKiBqc05vZGUsIE5vZGUqIG5vZGUsIFNsb3RWaXNpdG9yJiB2CiAgICAgICAgIH0K
ICAgICAjaWYgRU5BQkxFKFZJREVPKQogICAgICAgICBlbHNlIGlmIChub2RlLT5oYXNUYWdOYW1l
KGF1ZGlvVGFnKSkgewotICAgICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxIVE1MQXVkaW9FbGVt
ZW50Kj4obm9kZSktPnBhdXNlZCgpKQorICAgICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxIVE1M
QXVkaW9FbGVtZW50Kj4obm9kZSktPmhhc1BlbmRpbmdBY3Rpdml0eSgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjZmNjk5ODVm
NjIwOTdhMGM2NjBjYmM3ODg0Nzk0MjE0M2U3NDQwZS4uMjIzZTY4ZTRhMDE0MmMzOGUzZmY2NTI3
ODRlYTIzNjJhNjcwMWZmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAzLTA3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBtZWRp
YS9hdWRpby1nYXJiYWdlLWNvbGxlY3QuaHRtbCBpcyBmbGFreQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0
aW9ucy50eHQ6IHRlc3QgaXMgbm8gbG9uZ2VyIGZsYWt5LgorCiAyMDEyLTAzLTA3ICBLZW5pY2hp
IElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbV2ViU29ja2V0XSBT
aG91bGQgcmFpc2UgU1lOVEFYX0VSUiB3aGVuIG1lc3NhZ2UgY29udGFpbnMgdW5wYWlyZWQgc3Vy
cm9nYXRlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKaW5kZXggYjY5OWFiOGI2ZDAzNDUwYmIzZjJmNjdhNzBjYWU4OGQ5ZjcyOGY3OC4uMjNiMjE3
YWZjYzBhMWY0NTQzNWYxM2MwNTdlYjJiY2MxMGEyZjNjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC02OCw3ICs2OCw2IEBAIEJVR1dL
NzE2NTUgOiBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2ZyYW1lc2V0LWZsYXR0ZW5pbmctc2ltcGxl
Lmh0bWwgPSBQQVNTIFRFWFQKIEJVR1dLODAxMjkgOiBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2Zy
YW1lc2V0LWZsYXR0ZW5pbmctYWR2YW5jZWQuaHRtbCA9IFBBU1MgVEVYVAogQlVHV0s4MDEyOSA6
IGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvZnJhbWVzZXQtZmxhdHRlbmluZy1zdWJmcmFtZXNldHMu
aHRtbCA9IFBBU1MgVEVYVAogCi1CVUdXSzcyNjk4IDogbWVkaWEvYXVkaW8tZ2FyYmFnZS1jb2xs
ZWN0Lmh0bWwgPSBQQVNTIFRFWFQKIEJVR1dLNzk3NjAgOiBtZWRpYS92aWRlby1wb3N0ZXItYmxv
Y2tlZC1ieS13aWxsc2VuZHJlcXVlc3QuaHRtbCA9IFBBU1MgVEVYVAogCiBCVUdXSzcyNjk0IDog
ZmFzdC9jYW52YXMvY2FudmFzLWxpbmVXaWR0aC5odG1sID0gUEFTUyBUSU1FT1VUIFRFWFQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212365</attachid>
            <date>2013-09-23 10:48:28 -0700</date>
            <delta_ts>2013-09-23 10:48:28 -0700</delta_ts>
            <desc>non-working fix</desc>
            <filename>AudioGarbageCollect.txt</filename>
            <type>text/plain</type>
            <size>2842</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2
aXNpb24gMTU2MjczKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1JlYWNoYWJsZUZyb21ET00oSlMKICAgICAgICAgfQogICAgICNpZiBFTkFCTEUoVklERU8p
CiAgICAgICAgIGVsc2UgaWYgKGlzSFRNTEF1ZGlvRWxlbWVudChub2RlKSkgewotICAgICAgICAg
ICAgaWYgKCF0b0hUTUxBdWRpb0VsZW1lbnQobm9kZSktPnBhdXNlZCgpKQorICAgICAgICAgICAg
aWYgKHRvSFRNTEF1ZGlvRWxlbWVudChub2RlKS0+cG90ZW50aWFsbHlQbGF5aW5nKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxNTYyNzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTYxLDYgKzE2MSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7CiAg
ICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBwYXVzZWQoKSBjb25zdDsKKyAg
ICBib29sIHBvdGVudGlhbGx5UGxheWluZygpIGNvbnN0OwogICAgIGRvdWJsZSBkZWZhdWx0UGxh
eWJhY2tSYXRlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJs
ZSk7CiAgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0OwpAQCAtNTc3LDcgKzU3OCw2IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZVZvbHVtZSgpOwogICAgIHZvaWQgdXBkYXRlUGxh
eVN0YXRlKCk7Ci0gICAgYm9vbCBwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdDsKICAgICBib29s
IGVuZGVkUGxheWJhY2soKSBjb25zdDsKICAgICBib29sIHN0b3BwZWREdWVUb0Vycm9ycygpIGNv
bnN0OwogICAgIGJvb2wgcGF1c2VkRm9yVXNlckludGVyYWN0aW9uKCkgY29uc3Q7CkluZGV4OiBM
YXlvdXRUZXN0cy9tZWRpYS9hdWRpby1nYXJiYWdlLWNvbGxlY3QuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS9hdWRpby1nYXJiYWdlLWNvbGxlY3QuaHRtbAkocmV2aXNpb24g
MTU2MjczKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvYXVkaW8tZ2FyYmFnZS1jb2xsZWN0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDM2ICsyNCwzNSBAQCB2YXIgcGxheV90aW1lcyA9IDU7CiAK
IGZ1bmN0aW9uIGZpbmlzaCgpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
IikuaW5uZXJUZXh0ID0gIlBBU1MiOwotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfQogfQogCiBmdW5jdGlvbiBzdGFydCgpIHsKICAgICB2YXIgbnVtX3BsYXllZCA9IDA7
CiAgICAgdmFyIGF1ZGlvRmlsZSA9IGZpbmRNZWRpYUZpbGUoImF1ZGlvIiwgImNvbnRlbnQvc2ls
ZW5jZSIpOwotICAgIHZhciBhID0gbmV3IEF1ZGlvKGF1ZGlvRmlsZSk7Ci0gICAgYS5hZGRFdmVu
dExpc3RlbmVyKCdlbmRlZCcsIGZ1bmN0aW9uKCkgewotICAgICAgICBudW1fcGxheWVkICsrOwor
ICAgIHZhciBhdWRpbyA9IG5ldyBBdWRpbyhhdWRpb0ZpbGUpOworICAgIGF1ZGlvLmFkZEV2ZW50
TGlzdGVuZXIoJ2VuZGVkJywgZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIHZhciBhID0gZXZ0LnRh
cmdldDsKKyAgICAgICAgKytudW1fcGxheWVkOwogICAgICAgICBpZiAobnVtX3BsYXllZCA8IHBs
YXlfdGltZXMpIHsKICAgICAgICAgICAgIGEuY3VycmVudFRpbWUgPSBhLmR1cmF0aW9uIC0gMC4z
NTsKICAgICAgICAgICAgIGEucGxheSgpOwotICAgICAgICAgICAgaWYgKG51bV9wbGF5ZWQgPT0g
cGxheV90aW1lcyAtIDEpIHsKLSAgICAgICAgICAgICAgICBhID0gbnVsbDsKLSAgICAgICAgICAg
ICAgICBnYygpOwotICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bnVtX3BsYXllcnMgLS07CisgICAgICAgICAgICAtLW51bV9wbGF5ZXJzOwogICAgICAgICAgICAg
aWYgKG51bV9wbGF5ZXJzID09IDApCiAgICAgICAgICAgICAgICAgc3RhcnQoKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBmaW5pc2goKTsKICAgICAgICAgfQogICAgIH0pOwot
ICAgIGEuYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsKKyAg
ICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uKGV2dCkg
eworICAgICAgICB2YXIgYSA9IGV2dC50YXJnZXQ7CiAgICAgICAgIGEuY3VycmVudFRpbWUgPSBh
LmR1cmF0aW9uIC0gMC4zNTsKICAgICAgICAgYS5wbGF5KCk7CiAgICAgfSk7CisgICAgYXVkaW8g
PSBudWxsOworICAgIHNldEludGVydmFsKGdjLCAxMCk7CiB9CiAKIHN0YXJ0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>