<?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>35992</bug_id>
          
          <creation_ts>2010-03-10 15:30:35 -0800</creation_ts>
          <short_desc>Crash at MediaPlayer::duration()</short_desc>
          <delta_ts>2010-03-12 11:03:16 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://stewdio.org/pong/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hin-Chung Lam">hclam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>hclam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>198389</commentid>
    <comment_count>0</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-10 15:30:35 -0800</bug_when>
    <thetext>To reproduce the crash, use Chrome 5.0.342.2 dev.

1. Open http://stewdio.org/pong/
2. Click Play
3. While there is still sound playing, close the tab
4. Aw snap tab

The following stack trace is shown:
Call stack:
0x64db296d	 [chrome.dll	 - htmlmediaelement.cpp:1042]	
WebCore::HTMLMediaElement::duration()
0x64db3527	 [chrome.dll	 - htmlmediaelement.cpp:1581]	
WebCore::HTMLMediaElement::endedPlayback()
0x64db2a54	 [chrome.dll	 - htmlmediaelement.cpp:1137]	
WebCore::HTMLMediaElement::playInternal()
0x64db2a29	 [chrome.dll	 - htmlmediaelement.cpp:1128]	
WebCore::HTMLMediaElement::play(bool)
0x64f7cc52	 [chrome.dll	 - v8htmlmediaelement.cpp:322]	
WebCore::HTMLMediaElementInternal::playCallback
0x65322206	 [chrome.dll	 - builtins.cc:451]	
v8::internal::HandleApiCallHelper&lt;0&gt;
0x653224de	 [chrome.dll	 - builtins.cc:468]	
v8::internal::Builtin_HandleApiCall

The cause of failure is that:
1. Tab is closed
2. HTMLMediaElement::DocumentWillBecomeInactive() is called
3. HTMLMediaElement::m_player is clearer (set to NULL)
4. ... sometime later ...
5. A timer javascript is executed by window.setInterval()
6. The script calls audio.play() which goes into HTMLMediaElement::play()
7. null pointer exception in HTMLMediaElement::duration() when trying to call to it

The starts to happen from Chrome revision 37051 which seems to be caused by Changeset 53780 http://trac.webkit.org/changeset/53780.

The problem is that in HTMLMediaElement::ended(), the code is changed from:
   if (!m_player || m_readyState &lt; HAVE_METADATA) 
       return false; 

To

   float dur = duration(); 
   if (!m_player || isnan(dur))
       return false;

It happens that inside duration(), m_player is used without being checked.

This crash only happens after m_player is cleared by a document close and the javascript is still active, which doesn&apos;t seem to happen in WebKit but only in Chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198441</commentid>
    <comment_count>1</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-10 17:53:50 -0800</bug_when>
    <thetext>So the cause of this is as follows:

1. Page A opens a video and open a new window with Page B
2. Page B holds a reference to the video element in Page A
3. Page A closes, media engine is destroyed but HTMLMediaElement still alive
4. Page B tries to call that video element, which calls the internal m_player
5. Bang!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198457</commentid>
    <comment_count>2</comment_count>
      <attachid>50463</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-10 19:12:17 -0800</bug_when>
    <thetext>Created attachment 50463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198635</commentid>
    <comment_count>3</comment_count>
      <attachid>50463</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-11 08:12:23 -0800</bug_when>
    <thetext>Comment on attachment 50463
Patch

&gt;  float HTMLMediaElement::duration() const
&gt;  {
&gt; -    if (m_readyState &gt;= HAVE_METADATA)
&gt; +    if (m_player &amp;&amp; m_readyState &gt;= HAVE_METADATA)
&gt;          return m_player-&gt;duration();

While this is a sensible change, it shouldn&apos;t be necessary to prevent this crash because m_readyState should be HAVE_NOTHING if m_player is NULL. I haven&apos;t looked, but I suspect there are more problems waiting to be discovered when the the player has been destroyed and the state hasn&apos;t been reset.Can you please reset m_readyState and m_networkState to their default values when the player is destroyed?


&gt; Index: LayoutTests/http/tests/media/video-cancel-load.html

I would *really* like to see this test reformatted to have some structure (text in the &lt;body&gt;, &lt;script&gt; in &lt;head&gt; etc). I know that many layout tests do not do this, but I find that it is often much easier to understand what a test is supposed to do if has some structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198709</commentid>
    <comment_count>4</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-11 11:50:20 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 50463 [details])
&gt; &gt;  float HTMLMediaElement::duration() const
&gt; &gt;  {
&gt; &gt; -    if (m_readyState &gt;= HAVE_METADATA)
&gt; &gt; +    if (m_player &amp;&amp; m_readyState &gt;= HAVE_METADATA)
&gt; &gt;          return m_player-&gt;duration();
&gt; 
&gt; While this is a sensible change, it shouldn&apos;t be necessary to prevent this
&gt; crash because m_readyState should be HAVE_NOTHING if m_player is NULL. I
&gt; haven&apos;t looked, but I suspect there are more problems waiting to be discovered
&gt; when the the player has been destroyed and the state hasn&apos;t been reset.Can you
&gt; please reset m_readyState and m_networkState to their default values when the
&gt; player is destroyed?

The spec actually doesn&apos;t say that we should reset m_readyState to default value, like HAVE_NOTHING. It specifies how m_networkState should be assigned though. Though I think setting m_readyState to HAVE_NOTHING is sensible, but i wasn&apos;t sure. Any thoughts?

&gt; 
&gt; 
&gt; &gt; Index: LayoutTests/http/tests/media/video-cancel-load.html
&gt; 
&gt; I would *really* like to see this test reformatted to have some structure (text
&gt; in the &lt;body&gt;, &lt;script&gt; in &lt;head&gt; etc). I know that many layout tests do not do
&gt; this, but I find that it is often much easier to understand what a test is
&gt; supposed to do if has some structure.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198738</commentid>
    <comment_count>5</comment_count>
      <attachid>50529</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-11 12:24:45 -0800</bug_when>
    <thetext>Created attachment 50529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198739</commentid>
    <comment_count>6</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-11 12:27:59 -0800</bug_when>
    <thetext>Modified the patch and test according to Eric&apos;s comments.

I&apos;m not very sure about setting m_readyState to HAVE_NOTHING since it isn&apos;t in the spec. But testing it with existing tests doesn&apos;t seem to reveal a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198747</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-11 12:37:38 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 50463 [details] [details])
&gt; &gt; &gt;  float HTMLMediaElement::duration() const
&gt; &gt; &gt;  {
&gt; &gt; &gt; -    if (m_readyState &gt;= HAVE_METADATA)
&gt; &gt; &gt; +    if (m_player &amp;&amp; m_readyState &gt;= HAVE_METADATA)
&gt; &gt; &gt;          return m_player-&gt;duration();
&gt; &gt; 
&gt; &gt; While this is a sensible change, it shouldn&apos;t be necessary to prevent this
&gt; &gt; crash because m_readyState should be HAVE_NOTHING if m_player is NULL. I
&gt; &gt; haven&apos;t looked, but I suspect there are more problems waiting to be discovered
&gt; &gt; when the the player has been destroyed and the state hasn&apos;t been reset.Can you
&gt; &gt; please reset m_readyState and m_networkState to their default values when the
&gt; &gt; player is destroyed?
&gt; 
&gt; The spec actually doesn&apos;t say that we should reset m_readyState to default
&gt; value, like HAVE_NOTHING. It specifies how m_networkState should be assigned
&gt; though. Though I think setting m_readyState to HAVE_NOTHING is sensible, but i
&gt; wasn&apos;t sure. Any thoughts?
&gt; 
It does though, HAVE_NOTHING is defined as:

No information regarding the media resource is available. No data for the current playback position is available.

and we have not data at all if the media engine has been destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198750</commentid>
    <comment_count>8</comment_count>
      <attachid>50529</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-11 12:54:45 -0800</bug_when>
    <thetext>Comment on attachment 50529
Patch

 22     function duration()
 23     {
 24         var d = video.duration;
 25         if (count++ &gt;= 10 &amp;&amp; window.layoutTestController)
 26             layoutTestController.notifyDone();
 27     }

I should have noticed this the first time around, but what is magic about 10, what makes you certain that this will work on both fast and slow machines? Can you trigger the crash by getting the duration from an onload handler in the child document (or from a function called via settimout() called from an onload handler)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198755</commentid>
    <comment_count>9</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-11 13:02:17 -0800</bug_when>
    <thetext>The setInterval trick is to simulate the failure, but onload can work better, will change that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198765</commentid>
    <comment_count>10</comment_count>
      <attachid>50536</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-11 14:06:35 -0800</bug_when>
    <thetext>Created attachment 50536
Patch

Changed setInterval to setTimeout, onload doesn&apos;t work since it runs too quickly and the parent document hasn&apos;t changed, so allow 50ms for parent to switch to a different document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198774</commentid>
    <comment_count>11</comment_count>
      <attachid>50536</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-03-11 14:26:39 -0800</bug_when>
    <thetext>Comment on attachment 50536
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198782</commentid>
    <comment_count>12</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-03-11 14:35:55 -0800</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199137</commentid>
    <comment_count>13</comment_count>
      <attachid>50536</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-12 11:03:11 -0800</bug_when>
    <thetext>Comment on attachment 50536
Patch

Clearing flags on attachment: 50536

Committed r55917: &lt;http://trac.webkit.org/changeset/55917&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199138</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-12 11:03:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50463</attachid>
            <date>2010-03-10 19:12:17 -0800</date>
            <delta_ts>2010-03-11 12:24:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35992-20100310191216.patch</filename>
            <type>text/plain</type>
            <size>4035</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTgyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMtMTAgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
YSBjcmFzaCB3aGVuIHJlc291cmNlIGxvYWRpbmcgb2YgbWVkaWEgZWxlbWVudCBpcyBjYW5jZWxl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTky
CisKKyAgICAgICAgVXNlIG9mIEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkgYWZ0ZXIgcmVz
b3VyY2UgbG9hZGluZyB3YXMgY2FuY2VsZWQKKyAgICAgICAgd2lsbCBjYXVzZSBhIGNyYXNoLiBU
aGlzIGlzIGJlY2F1c2UgSFRNTE1lZGlhRWxlbWVudDo6bV9wbGF5ZXIgaXMgdXNlZAorICAgICAg
ICB3aGVuIE5VTEwuCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2Vs
LWxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKToKKyAgICAgICAgQXZvaWQg
Y2FsbGluZyB0byBtX3BsYXllciB3aGVuIGl0IGlzIG51bGwuCisKIDIwMTAtMDMtMTAgIEdhdmlu
IEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLCBHZW9mZnJleSBHYXJlbiwgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3OCw3ICsxMDc4
LDcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6c3RhcnRUaW1lKCkgY29ucwogCiBmbG9hdCBI
VE1MTWVkaWFFbGVtZW50OjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVhZHlTdGF0
ZSA+PSBIQVZFX01FVEFEQVRBKQorICAgIGlmIChtX3BsYXllciAmJiBtX3JlYWR5U3RhdGUgPj0g
SEFWRV9NRVRBREFUQSkKICAgICAgICAgcmV0dXJuIG1fcGxheWVyLT5kdXJhdGlvbigpOwogCiAg
ICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1NTgyNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDEwLTAzLTEwICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSFRN
TE1lZGlhRWxlbWVudCBjcmFzaCB3aGVuIGl0IGlzIHVzZWQgYWZ0ZXIgcmVzb3VyY2UgbG9hZGlu
ZyBpcyBjYW5jZWxlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM1OTkyCisKKyAgICAgICAgQWRkaW5nIGEgdGVzdCB0byBhY2Nlc3MgdGhlIGR1cmF0
aW9uIHByb3BlcnR5IG9mIGEgdmlkZW8gZWxlbWVudCBhZnRlcgorICAgICAgICByZXNvdXJjZSBs
b2FkaW5nIHdhcyBjYW5jZWxlZC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8t
Y2FuY2VsLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21l
ZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLmh0bWw6IEFkZGVkLgorCiAyMDEwLTAzLTEwICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2VsLWxvYWQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2Vs
LWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9tZWRpYS92aWRlby1jYW5jZWwtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEgQEAKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS92aWRlby1jYW5j
ZWwtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEv
dmlkZW8tY2FuY2VsLWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvdmlkZW8tY2FuY2VsLWxvYWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MCBAQAorQWNjZXNzIGEgdmlkZW8gZWxlbWVudCB3aXRoIHJlc291cmNlIGxvYWRpbmcgY2Fu
Y2VsZWQuCisKK0lmIHRoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIGl0IHdpbGwgdGVybWluYXRlIHdp
dGggYSBibGFuayBwYWdlLgorCis8c2NyaXB0IHNyYz0uLi8uLi8uLi9tZWRpYS9tZWRpYS1maWxl
LmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vbWVkaWEvdmlkZW8tdGVzdC5qcz48
L3NjcmlwdD4KKzx2aWRlbyBjb250cm9scyBpZD0idmlkZW8iPjwvdmlkZW8+CisKKzwhLS0gQmVn
aW4gY2hpbGQgY29udGVudCAtLT4KKzx0ZXh0YXJlYSBpZD0iY2hpbGRfY29udGVudCIgc3R5bGU9
ImRpc3BsYXk6IG5vbmU7Ij4KKzxzY3JpcHQ+Cit2YXIgdmlkZW8gPSB3aW5kb3cub3BlbmVyLnZp
ZGVvOwordmFyIGNvdW50ID0gMDsKKworZnVuY3Rpb24gZHVyYXRpb24oKQoreworICAgIHZhciBk
ID0gdmlkZW8uZHVyYXRpb247CisgICAgaWYgKGNvdW50KysgPj0gMTAgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7Cit9CisKK3dpbmRvdy5zZXRJbnRlcnZhbCgiZHVyYXRpb24oKSIsIDIwKTsKK3dpbmRvdy5v
cGVuZXIuYmxhbmsoKTsKKzwvc2NyaXB0PgorPC90ZXh0YXJlYT4KKzwhLS0gRW5kIGNoaWxkIGNv
bnRlbnQgLS0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKK30KKwordmFy
IHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIik7Cit2YXIgZmlsZSA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgInJlc291cmNlcy90ZXN0Iik7CisKK3ZpZGVvLmFkZEV2ZW50
TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIiwgZnVuY3Rpb24gbWFpbigpCit7CisgICAgdmFyIHdp
biA9IHdpbmRvdy5vcGVuKCIiLCAiY2hpbGQiKTsKKyAgICB2YXIgZG9jID0gd2luLmRvY3VtZW50
OworICAgIGRvYy5vcGVuKCk7CisgICAgZG9jLndyaXRlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjaGlsZF9jb250ZW50IikudmFsdWUpOworICAgIGRvYy5jbG9zZSgpOworfSk7Cit2aWRlby5z
cmMgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL21lZGlhL3ZpZGVvLXRocm90dGxlZC1sb2FkLmNn
aT90aHJvdHRsZT0yMCZuYW1lPSIgKyBmaWxlOworCitmdW5jdGlvbiBibGFuaygpCit7CisgICAg
bG9jYXRpb24uaHJlZiA9ICJhYm91dDpibGFuayI7Cit9Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50529</attachid>
            <date>2010-03-11 12:24:45 -0800</date>
            <delta_ts>2010-03-11 14:06:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35992-20100311122443.patch</filename>
            <type>text/plain</type>
            <size>5017</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTg1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMTEgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
YSBjcmFzaCB3aGVuIHJlc291cmNlIGxvYWRpbmcgb2YgbWVkaWEgZWxlbWVudCBpcyBjYW5jZWxl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTky
CisKKyAgICAgICAgVXNlIG9mIEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkgYWZ0ZXIgcmVz
b3VyY2UgbG9hZGluZyB3YXMgY2FuY2VsZWQKKyAgICAgICAgd2lsbCBjYXVzZSBhIGNyYXNoLiBU
aGlzIGlzIGJlY2F1c2UgSFRNTE1lZGlhRWxlbWVudDo6bV9wbGF5ZXIgaXMgdXNlZAorICAgICAg
ICB3aGVuIE5VTEwuCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2Vs
LWxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKToKKyAgICAgICAgQXZvaWQg
Y2FsbGluZyB0byBtX3BsYXllciB3aGVuIGl0IGlzIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZCk6CisgICAgICAgIFNldCBtX3JlYWR5
U3RhdGUgdG8gSEFWRV9OT1RISU5HLgorCiAyMDEwLTAzLTExICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4aW5nIEdUSy4gTm8gcmV2aWV3LgpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzgsNyArMTA3
OCw3IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnN0YXJ0VGltZSgpIGNvbnMKIAogZmxvYXQg
SFRNTE1lZGlhRWxlbWVudDo6ZHVyYXRpb24oKSBjb25zdAogewotICAgIGlmIChtX3JlYWR5U3Rh
dGUgPj0gSEFWRV9NRVRBREFUQSkKKyAgICBpZiAobV9wbGF5ZXIgJiYgbV9yZWFkeVN0YXRlID49
IEhBVkVfTUVUQURBVEEpCiAgICAgICAgIHJldHVybiBtX3BsYXllci0+ZHVyYXRpb24oKTsKIAog
ICAgIHJldHVybiBudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOwpAQCAtMTc4NSw2
ICsxNzg1LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZAogCiAg
ICAgLy8gNyAtIEFib3J0IHRoZSBvdmVyYWxsIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0u
CiAgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IDA7CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIHN0
ZXAgaXNuJ3QgaW4gdGhlIHNwZWMgYnV0IGl0IGlzIHNlbnNpYmxlIHRvIHJlc2V0IG1fcmVhZHlT
dGF0ZSBzaW5jZSBtX3BsYXllciBpcyBnb25lLgorICAgIG1fcmVhZHlTdGF0ZSA9IEhBVkVfTk9U
SElORzsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFj
dGl2ZSgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTg1MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTAzLTExICBBbHBoYSBMYW0g
IDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCBjcmFzaCB3aGVuIGl0IGlzIHVzZWQgYWZ0
ZXIgcmVzb3VyY2UgbG9hZGluZyBpcyBjYW5jZWxlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTkyCisKKyAgICAgICAgQWRkaW5nIGEgdGVzdCB0
byBhY2Nlc3MgdGhlIGR1cmF0aW9uIHByb3BlcnR5IG9mIGEgdmlkZW8gZWxlbWVudCBhZnRlcgor
ICAgICAgICByZXNvdXJjZSBsb2FkaW5nIHdhcyBjYW5jZWxlZC4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvbWVkaWEvdmlkZW8tY2FuY2VsLWxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLmh0bWw6IEFkZGVkLgorCiAy
MDEwLTAzLTExICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2Vs
LWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2VsLWxvYWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNh
bmNlbC1sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKzxodG1sPgorPGhl
YWQ+CisgIDx0aXRsZT5DYW5jZWwgbG9hZGluZyBhIHZpZGVvIGZpbGUgYW5kIGFjY2VzcyBpdHMg
cHJvcGVydGllcyBhZnRlcndhcmRzLjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgQWNjZXNz
IGEgdmlkZW8gZWxlbWVudCB3aXRoIHJlc291cmNlIGxvYWRpbmcgY2FuY2VsZWQuCisgIElmIHRo
aXMgdGVzdCBpcyBzdWNjZXNzZnVsIGl0IHdpbGwgdGVybWluYXRlIHdpdGggYSBibGFuayBwYWdl
LgorICBUaGlzIHRlc3Qgc2hvdWxkIGZpbmlzaCB3aXRob3V0IGNyYXNoaW5nLgorCisgIDxzY3Jp
cHQgc3JjPS4uLy4uLy4uL21lZGlhL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgIDxzY3JpcHQg
c3JjPS4uLy4uLy4uL21lZGlhL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgIDx2aWRlbyBjb250
cm9scyBpZD0idmlkZW8iPjwvdmlkZW8+CisKKyAgPHRleHRhcmVhIGlkPSJjaGlsZF9jb250ZW50
IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgorICA8IS0tIEJlZ2luIGNoaWxkIGNvbnRlbnQgLS0+
CisgIDwhLS0gVGhlIGZvbGxvd2luZyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBjb250ZW50IGluIHRo
ZSBkb2N1bWVudCBvZiBjaGlsZCB3aW5kb3cuIC0tPgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHZp
ZGVvID0gd2luZG93Lm9wZW5lci52aWRlbzsKKyAgICB2YXIgY291bnQgPSAwOworCisgICAgLy8g
QWNjZXNzIHRoZSBkdXJhdGlvbiBwcm9wZXJ0eSBmb3IgMTAgdGltZXMuCisgICAgZnVuY3Rpb24g
ZHVyYXRpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGQgPSB2aWRlby5kdXJhdGlvbjsKKyAgICAg
ICAgaWYgKGNvdW50KysgPj0gMTAgJiYgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAg
IHdpbmRvdy5zZXRJbnRlcnZhbCgiZHVyYXRpb24oKSIsIDIwKTsKKyAgICB3aW5kb3cub3BlbmVy
LmJsYW5rKCk7CisgICAgPC9zY3JpcHQ+CisgIDwhLS0gRW5kIGNoaWxkIGNvbnRlbnQgLS0+Cisg
IDwvdGV4dGFyZWE+CisKKyAgPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsK
KyAgfQorCisgIHZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOwor
ICB2YXIgZmlsZSA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgInJlc291cmNlcy90ZXN0Iik7CisK
KyAgLy8gT3BlbnMgYSB3aW5kb3cgYW5kIHdyaXRlcyB0aGUgY2hpbGQgY29udGVudCBpbnRvIHRo
ZSBkb2N1bWVudC4KKyAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkbWV0YWRhdGEiLCBm
dW5jdGlvbiBtYWluKCkKKyAgeworICAgICAgdmFyIHdpbiA9IHdpbmRvdy5vcGVuKCIiLCAiY2hp
bGQiKTsKKyAgICAgIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7CisgICAgICBkb2Mub3BlbigpOwor
ICAgICAgZG9jLndyaXRlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGlsZF9jb250ZW50Iiku
dmFsdWUpOworICAgICAgZG9jLmNsb3NlKCk7CisgIH0pOworICB2aWRlby5zcmMgPSAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwL21lZGlhL3ZpZGVvLXRocm90dGxlZC1sb2FkLmNnaT90aHJvdHRsZT00
MCZuYW1lPSIgKyBmaWxlOworCisgIC8vIENoYW5nZSBVUkwgb2YgdGhlIGN1cnJlbnQgcGFnZSB0
byBhIGJsYW5rIHBhZ2UuCisgIGZ1bmN0aW9uIGJsYW5rKCkKKyAgeworICAgICAgbG9jYXRpb24u
aHJlZiA9ICJhYm91dDpibGFuayI7CisgIH0KKyAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>
<flag name="review"
          id="33691"
          type_id="1"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50536</attachid>
            <date>2010-03-11 14:06:35 -0800</date>
            <delta_ts>2010-03-12 11:03:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>webkit-cancel-crash.patch</filename>
            <type>text/plain</type>
            <size>4752</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTg1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMTEgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
YSBjcmFzaCB3aGVuIHJlc291cmNlIGxvYWRpbmcgb2YgbWVkaWEgZWxlbWVudCBpcyBjYW5jZWxl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTky
CisKKyAgICAgICAgVXNlIG9mIEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkgYWZ0ZXIgcmVz
b3VyY2UgbG9hZGluZyB3YXMgY2FuY2VsZWQKKyAgICAgICAgd2lsbCBjYXVzZSBhIGNyYXNoLiBU
aGlzIGlzIGJlY2F1c2UgSFRNTE1lZGlhRWxlbWVudDo6bV9wbGF5ZXIgaXMgdXNlZAorICAgICAg
ICB3aGVuIE5VTEwuCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2Vs
LWxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKToKKyAgICAgICAgQXZvaWQg
Y2FsbGluZyB0byBtX3BsYXllciB3aGVuIGl0IGlzIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZCk6CisgICAgICAgIFNldCBtX3JlYWR5
U3RhdGUgdG8gSEFWRV9OT1RISU5HLgorCiAyMDEwLTAzLTExICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4aW5nIEdUSy4gTm8gcmV2aWV3LgpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzgsNyArMTA3
OCw3IEBACiAKIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9yZWFkeVN0YXRlID49IEhBVkVfTUVUQURBVEEpCisgICAgaWYgKG1fcGxheWVyICYm
IG1fcmVhZHlTdGF0ZSA+PSBIQVZFX01FVEFEQVRBKQogICAgICAgICByZXR1cm4gbV9wbGF5ZXIt
PmR1cmF0aW9uKCk7CiAKICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9O
YU4oKTsKQEAgLTE3ODUsNiArMTc4NSw5IEBACiAKICAgICAvLyA3IC0gQWJvcnQgdGhlIG92ZXJh
bGwgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobS4KICAgICBtX2N1cnJlbnRTb3VyY2VOb2Rl
ID0gMDsKKworICAgIC8vIFJlc2V0IG1fcmVhZHlTdGF0ZSBzaW5jZSBtX3BsYXllciBpcyBnb25l
LgorICAgIG1fcmVhZHlTdGF0ZSA9IEhBVkVfTk9USElORzsKIH0KIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNlbC1sb2FkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlk
ZW8tY2FuY2VsLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2VsLWxvYWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWNhbmNl
bC1sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLWNhbmNlbC1sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKzxo
dG1sPgorPGhlYWQ+CisgIDx0aXRsZT5DYW5jZWwgbG9hZGluZyBhIHZpZGVvIGZpbGUgYW5kIGFj
Y2VzcyBpdHMgcHJvcGVydGllcyBhZnRlcndhcmRzLjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgQWNjZXNzIGEgdmlkZW8gZWxlbWVudCB3aXRoIHJlc291cmNlIGxvYWRpbmcgY2FuY2VsZWQu
CisgIElmIHRoaXMgdGVzdCBpcyBzdWNjZXNzZnVsIGl0IHdpbGwgdGVybWluYXRlIHdpdGggYSBi
bGFuayBwYWdlLgorICBUaGlzIHRlc3Qgc2hvdWxkIGZpbmlzaCB3aXRob3V0IGNyYXNoaW5nLgor
CisgIDxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+Cisg
IDxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgIDx2
aWRlbyBjb250cm9scyBpZD0idmlkZW8iPjwvdmlkZW8+CisKKyAgPHRleHRhcmVhIGlkPSJjaGls
ZF9jb250ZW50IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgorICA8IS0tIEJlZ2luIGNoaWxkIGNv
bnRlbnQgLS0+CisgIDwhLS0gVGhlIGZvbGxvd2luZyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBjb250
ZW50IGluIHRoZSBkb2N1bWVudCBvZiBjaGlsZCB3aW5kb3cuIC0tPgorICAgIDxzY3JpcHQ+Cisg
ICAgdmFyIHZpZGVvID0gd2luZG93Lm9wZW5lci52aWRlbzsKKyAgICB3aW5kb3cuc2V0VGltZW91
dChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBkID0gdmlkZW8uZHVyYXRpb247CisgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfSwgNTApOworICAgIHdpbmRvdy5vcGVuZXIu
YmxhbmsoKTsKKyAgICA8L3NjcmlwdD4KKyAgPCEtLSBFbmQgY2hpbGQgY29udGVudCAtLT4KKyAg
PC90ZXh0YXJlYT4KKworICA8c2NyaXB0PgorICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOwor
ICB9CisKKyAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvIik7Cisg
IHZhciBmaWxlID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAicmVzb3VyY2VzL3Rlc3QiKTsKKwor
ICAvLyBPcGVucyBhIHdpbmRvdyBhbmQgd3JpdGVzIHRoZSBjaGlsZCBjb250ZW50IGludG8gdGhl
IGRvY3VtZW50LgorICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWRtZXRhZGF0YSIsIGZ1
bmN0aW9uIG1haW4oKQorICB7CisgICAgICB2YXIgd2luID0gd2luZG93Lm9wZW4oIiIsICJjaGls
ZCIpOworICAgICAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDsKKyAgICAgIGRvYy5vcGVuKCk7Cisg
ICAgICBkb2Mud3JpdGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoaWxkX2NvbnRlbnQiKS52
YWx1ZSk7CisgICAgICBkb2MuY2xvc2UoKTsKKyAgfSk7CisgIHZpZGVvLnNyYyA9ICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbWVkaWEvdmlkZW8tdGhyb3R0bGVkLWxvYWQuY2dpP3Rocm90dGxlPTQw
Jm5hbWU9IiArIGZpbGU7CisKKyAgLy8gQ2hhbmdlIFVSTCBvZiB0aGUgY3VycmVudCBwYWdlIHRv
IGEgYmxhbmsgcGFnZS4KKyAgZnVuY3Rpb24gYmxhbmsoKQorICB7CisgICAgICBsb2NhdGlvbi5o
cmVmID0gImFib3V0OmJsYW5rIjsKKyAgfQorICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1ODUyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMtMTEgIEFscGhhIExhbSAgPGhjbGFt
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGNyYXNoIHdoZW4gaXQgaXMgdXNlZCBhZnRlciByZXNv
dXJjZSBsb2FkaW5nIGlzIGNhbmNlbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzU5OTIKKworICAgICAgICBBZGRpbmcgYSB0ZXN0IHRvIGFjY2Vz
cyB0aGUgZHVyYXRpb24gcHJvcGVydHkgb2YgYSB2aWRlbyBlbGVtZW50IGFmdGVyCisgICAgICAg
IHJlc291cmNlIGxvYWRpbmcgd2FzIGNhbmNlbGVkLgorCisgICAgICAgICogaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1jYW5jZWwtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbWVkaWEvdmlkZW8tY2FuY2VsLWxvYWQuaHRtbDogQWRkZWQuCisKIDIwMTAtMDMt
MTEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGgK
</data>

          </attachment>
      

    </bug>

</bugzilla>