<?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>230950</bug_id>
          
          <creation_ts>2021-09-29 06:00:18 -0700</creation_ts>
          <short_desc>Web Audio panner node quality deteriorates over time</short_desc>
          <delta_ts>2021-10-06 11:15:26 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230966</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227199</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231314</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ashley Gullen">ashley</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kevin_neal</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1798281</commentid>
    <comment_count>0</comment_count>
    <who name="Ashley Gullen">ashley</who>
    <bug_when>2021-09-29 06:00:18 -0700</bug_when>
    <thetext>Repro URL: https://downloads.scirra.com/labs/bugs/safaripannerquality/

Steps to reproduce: Load the URL, wait for it to finish loading, then when instructed tap the screen to initiate audio playback.
Keep the screen on (e.g. by occasionally touching the screen) and keep the audio playback going for ~5 minutes (when the displayed time reaches ~300 seconds).

Observed result: after some time, the audio quality noticeably deteriorates. This reproduces for me on an iPad Pro with Safari 15, and becomes obvious around the 300 second mark, with clear buzzing/distortion sounds around that time.

Expected result: audio playback quality to remain good throughout.

The demo uses the Web Audio AP, with panner nodes and a listener set up for positioned sounds. (You can hear that each sound is panned to match the location of the square that appears on screen simultaneously.) It appears the audio deterioration is specific to panner nodes.

This demo is made in Construct 3 and the issue was originally reported to us by a Construct 3 user: https://github.com/Scirra/Construct-3-bugs/issues/5063
They state that it did not reproduce in iOS 12, but does in iOS 14.7.1. This means it appears to be a regression. Perhaps this is related to the new standards-complaint non-prefixed Web Audio API that was new in Safari 14.1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798332</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-29 08:10:25 -0700</bug_when>
    <thetext>I see a large number of AudioBufferSourceNodes getting allocated and seemingly not be deallocated. WebKit may be leaking them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798367</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-29 09:11:19 -0700</bug_when>
    <thetext>I don&apos;t see the JS wrappers from this AudioBufferSourceNodes getting garbage collected on JS side. Is the script holding on to these AudioBufferSourceNodes somehow?

These nodes have an internal buffer so they can use a lot of memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798398</commentid>
    <comment_count>3</comment_count>
    <who name="Ashley Gullen">ashley</who>
    <bug_when>2021-09-29 09:43:37 -0700</bug_when>
    <thetext>I don&apos;t believe the script is leaking anything. We do have wrapper objects that represent a playback, and the AudioBufferSourceNodes is held in the wrapper, and the wrapper objects get reused (from a quick debug it looks like it creates about 11 and then cycles through them). But both a new playback and the onended handlers disconnect the AudioBufferSourceNode and null it out. So old nodes should be disconnected and garbaged.

AFAIK this issue only affects Safari - other browsers seem to handle it OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798415</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-29 10:00:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/83675934&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798703</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-29 17:30:24 -0700</bug_when>
    <thetext>I was wrong. This seems to be related to PannerNode automation. PannerNode processing takes longer and longer because events accumulate in the PannerNode&apos;s AudioParam&apos;s timelines.

I&apos;ll look into this. I bet we need to add logic to AudioParamTimeline to clean up events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798869</commentid>
    <comment_count>6</comment_count>
      <attachid>439738</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-30 08:03:51 -0700</bug_when>
    <thetext>Created attachment 439738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798978</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-30 12:23:51 -0700</bug_when>
    <thetext>Committed r283322 (242347@main): &lt;https://commits.webkit.org/242347@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439738.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439738</attachid>
            <date>2021-09-30 08:03:51 -0700</date>
            <delta_ts>2021-09-30 12:23:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230950-20210930080350.patch</filename>
            <type>text/plain</type>
            <size>4984</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdiZWEzYzRiOGExNDc2
M2FhNDJiN2Y3Njk3OGFmNmM2NmExNmEyOS4uMzA1MjAzNGM0NGNlOWRlNWU0OWEzOGU5ZGQxNjgy
Yjk0MWIzNzU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA5LTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1ZGlvIHBhbm5lciBu
b2RlIHF1YWxpdHkgZGV0ZXJpb3JhdGVzIG92ZXIgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwOTUwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS84MzY3NTkzND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXaGVuIHByb2ZpbGluZyB0aGUgdGVzdCBjYXNlLCBJIG5vdGljZWQgd2hhdCB3ZSB3ZXJl
IHNwZW5kaW5nIG1vc3Qgb2YgdGhlIENQVSB0aW1lCisgICAgICAgIHVuZGVyIEF1ZGlvUGFyYW1U
aW1lbGluZTo6dmFsdWVzRm9yRnJhbWVSYW5nZUltcGwoKSAvIGlzRXZlbnRDdXJyZW50KCkgY2Fs
bGVkIGZyb20KKyAgICAgICAgUGFubmVyTm9kZTo6cHJvY2VzcygpLiBUaGUgcmVhc29uIGZvciB0
aGF0IGlzIHRoYXQgdGhlIG51bWJlciBvZiBldmVudHMgaW4gdGhlCisgICAgICAgIEF1ZGlvUGFy
YW1UaW1lbGluZSB3b3VsZCBrZWVwIGdyb3dpbmcgdW5ib3VuZGVkbHkgYW5kIGl0IHdvdWxkIG1h
a2UgdGhlCisgICAgICAgIHZhbHVlc0ZvckZyYW1lUmFuZ2VJbXBsKCkgaW1wbGVtZW50YXRpb24g
bW9yZSBhbmQgbW9yZSBleHBlbnNpdmUgb3ZlciB0aW1lLCBzaW5jZQorICAgICAgICBpdCBoYXMg
dG8gaXRlcmF0ZSBvdmVyIGFsbCBldmVudHMuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUgaXNz
dWUsIHZhbHVlc0ZvckZyYW1lUmFuZ2VJbXBsKCkgbm93IGtlZXBzIHRyYWNrIG9mIHRoZSBldmVu
dHMKKyAgICAgICAgdGhhdCBpdCBoYWQgdG8gc2tpcCBiZWNhdXNlIHRoZXkgd2VyZSBpbiB0aGUg
cGFzdC4gVGhlbiwgYXQgdGhlIGVuZCBvZiB0aGUgbG9vcCwKKyAgICAgICAgaXQgcmVtb3ZlcyB0
aGUgb3V0ZGF0ZWQgZXZlbnRzIHNvIGl0IHdvbid0IGhhdmUgdG8gaXRlcmF0ZSBvdmVyIHRoZW0g
dGhlIG5leHQKKyAgICAgICAgdGltZSBhcm91bmQuIFRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0
byB3aGF0IEJsaW5rIGRvZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnJl
bW92ZU9sZEV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnZh
bHVlc0ZvckZyYW1lUmFuZ2VJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5oOgorCiAyMDIxLTA5LTMwICBFbnJpcXVlIE9jYcOxYSBHb256w6FsZXog
IDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW01TRV1bR1N0cmVhbWVyXSBBbGxvdyBp
bmZpbml0ZSBkdXJhdGlvbiBvbiBNU0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAppbmRleCA2ZDU5YjQ4NWM2NzcwMzE3
MGEwNzZlMGM1MjkxYzM2ZDhmNGJlZmIwLi5jYWNmZGEzYmViZTEwOTBlZTJkOWI1NDEzZDk2MmIw
N2Y4ZmU2ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0zMjQsNiArMzI0LDE2IEBAIHZvaWQgQXVkaW9Q
YXJhbVRpbWVsaW5lOjpyZW1vdmVDYW5jZWxsZWRFdmVudHMoc2l6ZV90IGZpcnN0RXZlbnRUb1Jl
bW92ZSkKICAgICBtX2V2ZW50cy5yZW1vdmUoZmlyc3RFdmVudFRvUmVtb3ZlLCBtX2V2ZW50cy5z
aXplKCkgLSBmaXJzdEV2ZW50VG9SZW1vdmUpOwogfQogCit2b2lkIEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6cmVtb3ZlT2xkRXZlbnRzKHNpemVfdCBldmVudENvdW50KQoreworICAgIEFTU0VSVChldmVu
dENvdW50IDw9IG1fZXZlbnRzLnNpemUoKSk7CisgICAgaWYgKG1fZXZlbnRzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQWx3YXlzIGxlYXZlIGF0IGxlYXN0IG9uZSBldmVu
dCBpbiB0aGUgbGlzdC4KKyAgICBtX2V2ZW50cy5yZW1vdmUoMCwgc3RkOjptaW4oZXZlbnRDb3Vu
dCwgbV9ldmVudHMuc2l6ZSgpIC0gMSkpOworfQorCiBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBBdWRp
b1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQmFzZUF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBmbG9hdCBtaW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUp
CiB7CiAgICAgewpAQCAtMzk3LDYgKzQwNyw3IEBAIGZsb2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6
dmFsdWVzRm9yRnJhbWVSYW5nZUltcGwoc2l6ZV90IHN0YXJ0RnJhbWUsIHNpemVfdCBlbmRGCiAg
ICAgfQogCiAgICAgZmxvYXQgdmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgc2l6ZV90IG51bWJl
ck9mU2tpcHBlZEV2ZW50cyA9IDA7CiAKICAgICAvLyBHbyB0aHJvdWdoIGVhY2ggZXZlbnQgYW5k
IHJlbmRlciB0aGUgdmFsdWUgYnVmZmVyIHdoZXJlIHRoZSB0aW1lcyBvdmVybGFwLAogICAgIC8v
IHN0b3BwaW5nIHdoZW4gd2UndmUgcmVuZGVyZWQgYWxsIHRoZSByZXF1ZXN0ZWQgdmFsdWVzLgpA
QCAtNDA4LDggKzQxOSwxMCBAQCBmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlc0ZvckZy
YW1lUmFuZ2VJbXBsKHNpemVfdCBzdGFydEZyYW1lLCBzaXplX3QgZW5kRgogICAgICAgICBhdXRv
KiBuZXh0RXZlbnQgPSBpIDwgbiAtIDEgPyAmbV9ldmVudHNbaSArIDFdIDogbnVsbHB0cjsKIAog
ICAgICAgICAvLyBXYWl0IHVudGlsIHdlIGdldCBhIG1vcmUgcmVjZW50IGV2ZW50LgotICAgICAg
ICBpZiAoIWlzRXZlbnRDdXJyZW50KCpldmVudCwgbmV4dEV2ZW50LCBjdXJyZW50RnJhbWUsIHNh
bXBsZVJhdGUpKQorICAgICAgICBpZiAoIWlzRXZlbnRDdXJyZW50KCpldmVudCwgbmV4dEV2ZW50
LCBjdXJyZW50RnJhbWUsIHNhbXBsZVJhdGUpKSB7CisgICAgICAgICAgICArK251bWJlck9mU2tp
cHBlZEV2ZW50czsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAgICAgICAg
YXV0byBuZXh0RXZlbnRUeXBlID0gbmV4dEV2ZW50ID8gc3RhdGljX2Nhc3Q8UGFyYW1FdmVudDo6
VHlwZT4obmV4dEV2ZW50LT50eXBlKCkpIDogUGFyYW1FdmVudDo6TGFzdFR5cGUgLyogdW5rbm93
biAqLzsKIApAQCAtNDgyLDYgKzQ5NSwxMCBAQCBmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZh
bHVlc0ZvckZyYW1lUmFuZ2VJbXBsKHNpemVfdCBzdGFydEZyYW1lLCBzaXplX3QgZW5kRgogICAg
ICAgICB9CiAgICAgfQogCisgICAgLy8gRHJvcCBvdXRkYXRlZCBldmVudHMgdGhhdCB3ZSBza2lw
cGVkIHNvIHdlIGRvbid0IGhhdmUgdG8gZ28gdGhyb3VnaCB0aGVtIGFnYWluIGluIHRoZSBmdXR1
cmUuCisgICAgaWYgKG51bWJlck9mU2tpcHBlZEV2ZW50cyA+IDApCisgICAgICAgIHJlbW92ZU9s
ZEV2ZW50cyhudW1iZXJPZlNraXBwZWRFdmVudHMpOworCiAgICAgLy8gSWYgdGhlcmUncyBhbnkg
dGltZSBsZWZ0IGFmdGVyIHByb2Nlc3NpbmcgdGhlIGxhc3QgZXZlbnQgdGhlbiBqdXN0IHByb3Bh
Z2F0ZSB0aGUgbGFzdCB2YWx1ZQogICAgIC8vIHRvIHRoZSBlbmQgb2YgdGhlIHZhbHVlcyBidWZm
ZXIuCiAgICAgZmlsbFdpdGhWYWx1ZSh2YWx1ZXMsIHZhbHVlLCBudW1iZXJPZlZhbHVlcywgd3Jp
dGVJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvUGFyYW1UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtVGltZWxpbmUuaAppbmRleCBjYmUwMWMwM2I1Zjk3MTRjZTZmNDhjZTVhNGFhN2NlZWUx
YzZiOTQzLi5jNDhjMWE1NWQ2Zjk1ZDAxNWE2OTk2MjIwYWQ3NTc1MTE4OTA2ZWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
LmgKQEAgLTE5MCw2ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIHJlbW92
ZUNhbmNlbGxlZEV2ZW50cyhzaXplX3QgZmlyc3RFdmVudFRvUmVtb3ZlKSBXVEZfUkVRVUlSRVNf
TE9DSyhtX2V2ZW50c0xvY2spOworICAgIHZvaWQgcmVtb3ZlT2xkRXZlbnRzKHNpemVfdCBldmVu
dENvdW50KSBXVEZfUkVRVUlSRVNfTE9DSyhtX2V2ZW50c0xvY2spOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGluc2VydEV2ZW50KFBhcmFtRXZlbnQmJikgV1RGX1JFUVVJUkVTX0xPQ0sobV9ldmVu
dHNMb2NrKTsKICAgICBmbG9hdCB2YWx1ZXNGb3JGcmFtZVJhbmdlSW1wbChzaXplX3Qgc3RhcnRG
cmFtZSwgc2l6ZV90IGVuZEZyYW1lLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGZsb2F0KiB2YWx1ZXMs
IHVuc2lnbmVkIG51bWJlck9mVmFsdWVzLCBkb3VibGUgc2FtcGxlUmF0ZSwgZG91YmxlIGNvbnRy
b2xSYXRlKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2V2ZW50c0xvY2spOwogICAgIGZsb2F0IGxpbmVh
clJhbXBBdFRpbWUoU2Vjb25kcyB0LCBmbG9hdCB2YWx1ZTEsIFNlY29uZHMgdGltZTEsIGZsb2F0
IHZhbHVlMiwgU2Vjb25kcyB0aW1lMik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>