<?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>80681</bug_id>
          
          <creation_ts>2012-03-09 00:05:23 -0800</creation_ts>
          <short_desc>[JSC] AudioDestinationNode event notification error on AudioContext</short_desc>
          <delta_ts>2012-12-29 08:21:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>102356</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61355</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>crogers</cc>
    
    <cc>ggaren</cc>
    
    <cc>pnormand</cc>
    
    <cc>s.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>574687</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-09 00:05:23 -0800</bug_when>
    <thetext>While working on getting the WebAudio layout tests up in the GTK port I came up with this:

#0  0xb41008b6 in WebCore::JSEventListener::jsFunction (this=0xa14eeae0, scriptExecutionContext=0xa14cf920)
    at ../../Source/WebCore/bindings/js/JSEventListener.h:84
84	        ASSERT(m_wrapper || !m_jsFunction);

#0  0xb41008b6 in WebCore::JSEventListener::jsFunction (this=0xa14eeae0, scriptExecutionContext=0xa14cf920)
    at ../../Source/WebCore/bindings/js/JSEventListener.h:84
#1  0xb410003d in WebCore::JSEventListener::handleEvent (this=0xa14eeae0, scriptExecutionContext=0xa14cf920, event=0xa141b2a8)
    at ../../Source/WebCore/bindings/js/JSEventListener.cpp:80
#2  0xb4348683 in WebCore::EventTarget::fireEventListeners (this=0x9f6351ac, event=0xa141b2a8, d=0x9f63527c, entry=...)
    at ../../Source/WebCore/dom/EventTarget.cpp:231
#3  0xb4348525 in WebCore::EventTarget::fireEventListeners (this=0x9f6351ac, event=0xa141b2a8) at ../../Source/WebCore/dom/EventTarget.cpp:198
#4  0xb43483be in WebCore::EventTarget::dispatchEvent (this=0x9f6351ac, event=...) at ../../Source/WebCore/dom/EventTarget.cpp:177
#5  0xb4a88cf9 in WebCore::AudioContext::fireCompletionEvent (this=0x9f635198) at ../../Source/WebCore/webaudio/AudioContext.cpp:778
#6  0xb4a9f583 in WebCore::OfflineAudioDestinationNode::notifyComplete (this=0x9f633020)
    at ../../Source/WebCore/webaudio/OfflineAudioDestinationNode.cpp:165
#7  0xb4a9f541 in WebCore::OfflineAudioDestinationNode::notifyCompleteDispatch (userData=0x9f633020)
    at ../../Source/WebCore/webaudio/OfflineAudioDestinationNode.cpp:159
#8  0xb7397733 in WTF::dispatchFunctionsFromMainThread () at ../../Source/JavaScriptCore/wtf/MainThread.cpp:156
#9  0xb73974a0 in WTF::timeoutFired () at ../../Source/JavaScriptCore/wtf/gtk/MainThreadGtk.cpp:43
#10 0xb321b9df in g_timeout_dispatch (source=0xa1cb5d0, callback=0xb7397489 &lt;WTF::timeoutFired(gpointer)&gt;, user_data=0x0) at gmain.c:3854
#11 0xb321ac7a in g_main_dispatch (context=0x9e0c058) at gmain.c:2510
#12 g_main_context_dispatch (context=0x9e0c058) at gmain.c:3047
#13 0xb321b085 in g_main_context_iterate (dispatch=1, block=-1289582320, context=0x9e0c058, self=&lt;optimized out&gt;) at gmain.c:3118
#14 g_main_context_iterate (context=0x9e0c058, block=-1289582320, dispatch=1, self=&lt;optimized out&gt;) at gmain.c:3055
#15 0xb321b4cb in g_main_loop_run (loop=0x9f61ab90) at gmain.c:3312
#16 0xb37e28b5 in gtk_main () at gtkmain.c:1358
#17 0x0809c471 in runTest (testPathOrURL=...) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:715
#18 0x0809bad7 in runTestingServerLoop () at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:498
#19 0x0809e74f in main (argc=2, argv=0xbf9143c4) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:1389

It seems that the AudioDestinationNode tries to notify a no longer active AudioContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575998</commentid>
    <comment_count>1</comment_count>
      <attachid>131293</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-12 01:38:30 -0700</bug_when>
    <thetext>Created attachment 131293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576000</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 01:40:21 -0700</bug_when>
    <thetext>Attachment 131293 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/webaudio/AudioContext.h:82:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594452</commentid>
    <comment_count>3</comment_count>
      <attachid>135325</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-03 07:08:04 -0700</bug_when>
    <thetext>Created attachment 135325
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594456</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-03 07:11:54 -0700</bug_when>
    <thetext>CCing Geoffrey Garren for this WebAudio/JSC issue.

If you can have a look at this patch it would be great, I had some good results with it but I wonder if the approach is correct, it&apos;s probably too naive :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594561</commentid>
    <comment_count>5</comment_count>
      <attachid>135325</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-04-03 09:39:54 -0700</bug_when>
    <thetext>Comment on attachment 135325
Proposed patch

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

&gt; Source/WebCore/Modules/webaudio/AudioContext.h:84
&gt; +        bool running(destination() ? destination()-&gt;running() : false);

WebKit style is to use &quot;=&quot; instead of constructor syntax for &quot;running&quot; here. But this probably won&apos;t matter in the end -- see below.

&gt; Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:88
&gt;          m_startedRendering = true;
&gt; +        m_running = true;
&gt;          ref(); // See corresponding deref() call in notifyCompleteDispatch().

I think &quot;m_running = false&quot; should go wherever we call &quot;deref()&quot; and destroy our audio thread, rather than in notifyComplete(). I&apos;m not familiar with this code, but from the outside it seems like some chains of function calls could cancel the audio without calling notifyComplete(), which would leave a zombie audio node.

Even better: ActiveDOMObject packages up these concepts for you. Instead of manually calling ref() and maintaining a separate boolean, you can just call &quot;setPendingActivity&quot;. That will ref() your object and cause hasPendingActivity() to start returning true. No need to keep an m_running variable, no need to override hasPendingActivity(). Then, call &quot;unsetPendingActivity&quot; wherever you stop playing and cancel the audio thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594565</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-03 09:42:48 -0700</bug_when>
    <thetext>Thanks for the review! I&apos;ll rework the patch as you advised and try to get Chris Rogers eyes on the updated patch as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798140</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-29 08:21:10 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 102356 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131293</attachid>
            <date>2012-03-12 01:38:30 -0700</date>
            <delta_ts>2012-04-03 07:08:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>5204</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0ZDg4YmVjMDUxZDY2MzEzYTgxN2Q5NzgxYWM5YWZkYTU3NTk3NDI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBNb24sIDEyIE1hciAyMDEyIDA5OjIyOjIyICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDIzICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaCAgICAgICAgICAgICB8ICAgIDcgKysrKystCiBTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgICB8ICAgIDEgKwogU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAgICAgfCAgICAzICsrCiAuLi4v
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAgICAgICB8ICAgIDIgKwog
NSBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA5MjE3M2MyLi5mNTQ5OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjggQEAKIDIw
MTItMDMtMTIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCisgICAg
ICAgIFtKU0NdIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGV2ZW50IG5vdGlmaWNhdGlvbiBlcnJvciBv
biBBdWRpb0NvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwNjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgT3ZlcnJpZGUgZGVmYXVsdCdzIEF1ZGlvQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgYW5kIHJlcG9ydAorICAgICAgICBwZW5kaW5nIGFjdGl2aXR5IHVudGlsIHRoZSBkZXN0aW5h
dGlvbiBub2RlIGNvbXBsZXRlZCByZW5kZXJpbmcuCisKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRp
b0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aGFzUGVuZGluZ0Fj
dGl2aXR5KToKKyAgICAgICAgKEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVk
aW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cnVubmluZyk6
CisgICAgICAgIChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpub3RpZnlDb21wbGV0ZSk6CisKKzIwMTItMDMt
MTIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtH
U3RyZWFtZXJdIHJ1biBBdWRpb0ZpbGVSZWFkZXIgaW4gYSBuZXN0ZWQgbG9vcAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA4MjMKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBiNDJhMDc1Li5lMDVmODAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNzksNiArNzksMTEgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0KCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgeworICAgICAgICBib29sIHJ1bm5pbmcoZGVzdGluYXRp
b24oKSA/IGRlc3RpbmF0aW9uKCktPnJ1bm5pbmcoKSA6IGZhbHNlKTsKKyAgICAgICAgcmV0dXJu
IHJ1bm5pbmcgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB9
CisKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKICAgICAKICAgICBib29sIGlzT2Zm
bGluZUNvbnRleHQoKSB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KQEAgLTkyLDcgKzk3
LDcgQEAgcHVibGljOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OyAvLyBBU1NFUlRz
IGlmIGRvY3VtZW50IG5vIGxvbmdlciBleGlzdHMuCiAgICAgYm9vbCBoYXNEb2N1bWVudCgpOwog
Ci0gICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0
aW5hdGlvbk5vZGUuZ2V0KCk7IH0KKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQogICAgIHNpemVf
dCBjdXJyZW50U2FtcGxlRnJhbWUoKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVu
dFNhbXBsZUZyYW1lKCk7IH0KICAgICBkb3VibGUgY3VycmVudFRpbWUoKSB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKTsgfQogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggNmU1MjdiYi4u
MjBkM2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiAgICAgLCBtX2N1cnJlbnRTYW1wbGVGcmFtZSgwKQorICAgICwgbV9ydW5uaW5nKGZhbHNlKQog
ewogICAgIGFkZElucHV0KGFkb3B0UHRyKG5ldyBBdWRpb05vZGVJbnB1dCh0aGlzKSkpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5k
ZXggZDA3ODMzZC4uZDUzMDVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qg
Y3VycmVudFNhbXBsZUZyYW1lKCkgeyByZXR1cm4gbV9jdXJyZW50U2FtcGxlRnJhbWU7IH0KICAg
ICBkb3VibGUgY3VycmVudFRpbWUoKSB7IHJldHVybiBjdXJyZW50U2FtcGxlRnJhbWUoKSAvIHN0
YXRpY19jYXN0PGRvdWJsZT4oc2FtcGxlUmF0ZSgpKTsgfQogCisgICAgYm9vbCBydW5uaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9ydW5uaW5nOyB9CisKICAgICB2aXJ0dWFsIHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiAyOyB9IC8vIEZJWE1FOiB1cGRhdGUgd2hlbiBt
dWx0aS1jaGFubmVsIChtb3JlIHRoYW4gc3RlcmVvKSBpcyBzdXBwb3J0ZWQKIAogICAgIHZpcnR1
YWwgdm9pZCBzdGFydFJlbmRlcmluZygpID0gMDsKQEAgLTU2LDYgKzU4LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIC8vIENvdW50cyB0aGUgbnVtYmVyIG9mIHNhbXBsZS1mcmFtZXMgcHJv
Y2Vzc2VkIGJ5IHRoZSBkZXN0aW5hdGlvbi4KICAgICBzaXplX3QgbV9jdXJyZW50U2FtcGxlRnJh
bWU7CisgICAgYm9vbCBtX3J1bm5pbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAppbmRleCBhNDBlNjA1Li4wN2Y2MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTg0
LDYgKzg0LDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVy
aW5nKCkKICAgICAKICAgICBpZiAoIW1fc3RhcnRlZFJlbmRlcmluZykgewogICAgICAgICBtX3N0
YXJ0ZWRSZW5kZXJpbmcgPSB0cnVlOworICAgICAgICBtX3J1bm5pbmcgPSB0cnVlOwogICAgICAg
ICByZWYoKTsgLy8gU2VlIGNvcnJlc3BvbmRpbmcgZGVyZWYoKSBjYWxsIGluIG5vdGlmeUNvbXBs
ZXRlRGlzcGF0Y2goKS4KICAgICAgICAgbV9yZW5kZXJUaHJlYWQgPSBjcmVhdGVUaHJlYWQoT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXJFbnRyeSwgdGhpcywgIm9mZmxpbmUgcmVu
ZGVyZXIiKTsKICAgICB9CkBAIC0xNjIsNiArMTYzLDcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGU6Om5vdGlmeUNvbXBsZXRlRGlzcGF0Y2godm9pZCogdXNlckRhdGEpCiAKIHZv
aWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpub3RpZnlDb21wbGV0ZSgpCiB7CisgICAg
bV9ydW5uaW5nID0gZmFsc2U7CiAgICAgY29udGV4dCgpLT5maXJlQ29tcGxldGlvbkV2ZW50KCk7
CiB9CiAKLS0gCjEuNy45LjE=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135325</attachid>
            <date>2012-04-03 07:08:04 -0700</date>
            <delta_ts>2012-04-03 09:39:53 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>Proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>5295</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2YzJhYmE2NmZlNTI2MTIyZTE2YTc0MzJlNGVkNTRmNjBhZGRiOTA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMgQXByIDIwMTIgMTY6MDY6MjMgKzAyMDAKU3ViamVjdDogW1BBVENIXSBQ
cm9wb3NlZCBwYXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjMgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggICAgIHwgICAgOCArKysrKystCiAuLi4v
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgICAgICB8ICAgIDEgKwog
Li4uL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAgICAgICAgfCAgICAz
ICsrCiAuLi4vd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAgICAgICB8
ICAgIDIgKwogNSBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBkMTAzYTQyLi43YzU0NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTItMDQtMDMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGV2ZW50IG5vdGlmaWNhdGlv
biBlcnJvciBvbiBBdWRpb0NvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwNjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT3ZlcnJpZGUgZGVmYXVsdCdzIEF1ZGlvQ29udGV4dDo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgYW5kIHJlcG9ydAorICAgICAgICBwZW5kaW5nIGFjdGl2aXR5IHVudGlsIHRo
ZSBkZXN0aW5hdGlvbiBub2RlIGNvbXBsZXRlZCByZW5kZXJpbmcuCisKKyAgICAgICAgKiB3ZWJh
dWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aGFz
UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAgICAgKiB3ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
cnVubmluZyk6CisgICAgICAgIChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpub3RpZnlDb21wbGV0ZSk6CisK
IDIwMTItMDMtMDUgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHU3RyZWFtZXJdIEhSVEZEYXRhYmFzZUxvYWRlciBjb25mbGljdHMgd2l0aCBBdWRp
b0ZpbGVSZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCmluZGV4IGFkYzM5ODIuLmRjMWY3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNzksNiArNzksMTIgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0KCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIGJvb2wgcnVubmluZyhkZXN0aW5h
dGlvbigpID8gZGVzdGluYXRpb24oKS0+cnVubmluZygpIDogZmFsc2UpOworICAgICAgICByZXR1
cm4gcnVubmluZyB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworICAg
IH0KKwogICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNP
ZmZsaW5lQ29udGV4dCgpIHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQpAQCAtOTIsNyAr
OTgsNyBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VS
VHMgaWYgZG9jdW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4KICAgICBib29sIGhhc0RvY3VtZW50KCk7
CiAKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uTm9kZS5nZXQoKTsgfQorICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CiAgICAgc2l6
ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLT5jdXJy
ZW50U2FtcGxlRnJhbWUoKTsgfQogICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpOyB9CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgp
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKaW5kZXggNmU1MjdiYi4uMjBkM2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVz
dGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9jdXJyZW50U2FtcGxl
RnJhbWUoMCkKKyAgICAsIG1fcnVubmluZyhmYWxzZSkKIHsKICAgICBhZGRJbnB1dChhZG9wdFB0
cihuZXcgQXVkaW9Ob2RlSW5wdXQodGhpcykpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA3NjBj
NjM4Li5mYmQ5MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAg
ICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgeyByZXR1cm4gbV9jdXJyZW50U2FtcGxlRnJh
bWU7IH0KICAgICBkb3VibGUgY3VycmVudFRpbWUoKSB7IHJldHVybiBjdXJyZW50U2FtcGxlRnJh
bWUoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oc2FtcGxlUmF0ZSgpKTsgfQogCisgICAgYm9vbCBy
dW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ydW5uaW5nOyB9CisKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiAyOyB9IC8vIEZJWE1FOiB1cGRh
dGUgd2hlbiBtdWx0aS1jaGFubmVsIChtb3JlIHRoYW4gc3RlcmVvKSBpcyBzdXBwb3J0ZWQKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFJlbmRlcmluZygpID0gMDsKQEAgLTU5LDYgKzYxLDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgLy8gQ291bnRzIHRoZSBudW1iZXIgb2Ygc2FtcGxlLWZyYW1lcyBw
cm9jZXNzZWQgYnkgdGhlIGRlc3RpbmF0aW9uLgogICAgIHNpemVfdCBtX2N1cnJlbnRTYW1wbGVG
cmFtZTsKKyAgICBib29sIG1fcnVubmluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBhNDBlNjA1Li4wN2Y2MjI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04NCw2ICs4NCw3IEBAIHZvaWQgT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZygpCiAgICAgCiAgICAgaWYgKCFt
X3N0YXJ0ZWRSZW5kZXJpbmcpIHsKICAgICAgICAgbV9zdGFydGVkUmVuZGVyaW5nID0gdHJ1ZTsK
KyAgICAgICAgbV9ydW5uaW5nID0gdHJ1ZTsKICAgICAgICAgcmVmKCk7IC8vIFNlZSBjb3JyZXNw
b25kaW5nIGRlcmVmKCkgY2FsbCBpbiBub3RpZnlDb21wbGV0ZURpc3BhdGNoKCkuCiAgICAgICAg
IG1fcmVuZGVyVGhyZWFkID0gY3JlYXRlVGhyZWFkKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6cmVuZGVyRW50cnksIHRoaXMsICJvZmZsaW5lIHJlbmRlcmVyIik7CiAgICAgfQpAQCAtMTYy
LDYgKzE2Myw3IEBAIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpub3RpZnlDb21w
bGV0ZURpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKQogCiB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6bm90aWZ5Q29tcGxldGUoKQogeworICAgIG1fcnVubmluZyA9IGZhbHNlOwogICAg
IGNvbnRleHQoKS0+ZmlyZUNvbXBsZXRpb25FdmVudCgpOwogfQogCi0tIAoxLjcuOS4x
</data>
<flag name="review"
          id="139794"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>