<?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>22046</bug_id>
          
          <creation_ts>2008-11-03 03:10:18 -0800</creation_ts>
          <short_desc>Crash when looking at JS parse error in Web Inspector</short_desc>
          <delta_ts>2009-01-20 12:17:03 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.formyownamusement.com/WebKit/classCrashTest.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, NeedsReduction, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Churchward">WebKitBugzilla</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>darin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>97451</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Churchward">WebKitBugzilla</who>
    <bug_when>2008-11-03 03:10:18 -0800</bug_when>
    <thetext>The Web Inspector Console reports the use of the `class` keyword as a JavaScript parse error. Safari/WebKit crashes shortly after reporting this error.

To reproduce please see the attached URL. It has a very simple JavaScript
&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
       var class = &quot;not so nice to call one&apos;s self a class when it&apos;s not&quot;;
&lt;/script&gt;

Next bring up the Web Inspector and click through to see the parse error.
WebKit crashes shortly after.

I have tried this on several nightly builds of WebKit with the same result. (sorry I can&apos;t remember which builds exactly) My current test was on r38068 (3rd November 2008)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97452</commentid>
    <comment_count>1</comment_count>
      <attachid>24857</attachid>
    <who name="Timothy Churchward">WebKitBugzilla</who>
    <bug_when>2008-11-03 03:12:05 -0800</bug_when>
    <thetext>Created attachment 24857
Crash Test File

The attached file produces the crash in WebKit when viewing the parse error with the Web Inspector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97540</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-11-03 19:31:52 -0800</bug_when>
    <thetext>Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000003
Crashed Thread:  0

Thread 0 Crashed:
0   ???                           	0x00000003 0 + 3
1   com.apple.WebCore             	0x04b3dd82 WebCore::AnimationTimerCallback::timerFired(WebCore::Timer&lt;WebCore::AnimationTimerBase&gt;*) + 34
2   com.apple.WebCore             	0x04b40bbb WebCore::Timer&lt;WebCore::AnimationTimerBase&gt;::fired() + 43
3   com.apple.WebCore             	0x04a155c5 WebCore::TimerBase::fireTimers(double, WTF::Vector&lt;WebCore::TimerBase*, 0ul&gt; const&amp;) + 133
4   com.apple.WebCore             	0x04a15892 WebCore::TimerBase::sharedTimerFired() + 162
5   com.apple.WebCore             	0x049fbbf4 __ZN7WebCoreL10timerFiredEP16__CFRunLoopTimerPv + 68

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97541</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-11-03 19:33:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/6341828&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98616</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-13 10:03:02 -0800</bug_when>
    <thetext>May be related to 22052, which has a patch requesting review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98618</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-13 10:34:11 -0800</bug_when>
    <thetext>I can&apos;t reproduce the crash in r38371</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98648</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2008-11-13 13:56:24 -0800</bug_when>
    <thetext>This only reproduces on the release build, perhaps because it has different timing or different GC behavior. I understand the bug and am making a patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98653</commentid>
    <comment_count>7</comment_count>
      <attachid>25137</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2008-11-13 14:32:44 -0800</bug_when>
    <thetext>Created attachment 25137
Patch to fix bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98676</commentid>
    <comment_count>8</comment_count>
      <attachid>25137</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-13 16:21:29 -0800</bug_when>
    <thetext>Comment on attachment 25137
Patch to fix bug

&gt;  void AnimationBase::animationTimerCallbackFired(const AtomicString&amp; eventType, double elapsedTime)
&gt;  {
&gt; +    // We have to make sure to keep a ref to the this pointer, because it could get destroyed
&gt; +    // during an animation callback that might get called.
&gt; +    RefPtr&lt;AnimationBase&gt; retainer(this);
&gt; +    
&gt;      ASSERT(m_object-&gt;document() &amp;&amp; !m_object-&gt;document()-&gt;inPageCache());

We typically call these &quot;protector&quot;. I suspect the &quot;retain&quot; term may be familiar to ObjC programmers and not others.

I hate to have any of these -- it&apos;s so tricky to know when you should or should not use one, but I think it&apos;s fine to have this one here.

Can we construct a test case to demonstrate the failure case here? It seems like we should be able to regression-test this.

&gt;      // Set start time on all animations waiting for it
&gt;      AnimationNameMap::const_iterator end = m_keyframeAnimations.end();
&gt;      for (AnimationNameMap::const_iterator it = m_keyframeAnimations.begin(); it != end; ++it) {
&gt; -        KeyframeAnimation* anim = it-&gt;second.get();
&gt; -        if (anim &amp;&amp; anim-&gt;waitingForStartTime())
&gt; -            anim-&gt;updateStateMachine(AnimationBase::AnimationStateInputStartTimeSet, t);
&gt; +        // We have to make sure to keep a ref to the animation pointer, because it could get destroyed
&gt; +        // during an animation callback that might get called.
&gt; +        RefPtr&lt;KeyframeAnimation&gt; animation = it-&gt;second;
&gt; +        if (animation &amp;&amp; animation-&gt;waitingForStartTime())
&gt; +            animation-&gt;updateStateMachine(AnimationBase::AnimationStateInputStartTimeSet, t);
&gt;      }
&gt;  }

I see two possibilities:

    1) There&apos;s no way the m_keyframeAnimations map could be modified inside the updateStateMachine function. In this case, there&apos;s no need for a local RefPtr because the value in the map is already a RefPtr.

    2) The m_keyframeAnimations map could be modified by an animation callback. In this case we have a potentially-crashing bug, because HashMap does not support iterating it while it&apos;s modified and we could end up with an infinite loop, accessing deallocated memory, or some other equally bad problem.

Either way, putting the animation into a RefPtr is not the fix.

&gt;      // Set the start time for given property transition
&gt;      CSSPropertyTransitionsMap::const_iterator end = m_transitions.end();
&gt;      for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != end; ++it) {
&gt; -        ImplicitAnimation* anim = it-&gt;second.get();
&gt; -        if (anim &amp;&amp; anim-&gt;waitingForStartTime() &amp;&amp; anim-&gt;animatingProperty() == property)
&gt; -            anim-&gt;updateStateMachine(AnimationBase::AnimationStateInputStartTimeSet, t);
&gt; +        // We have to make sure to keep a ref to the animation pointer, because it could get destroyed
&gt; +        // during an animation callback that might get called.
&gt; +        RefPtr&lt;ImplicitAnimation&gt; animation = it-&gt;second;
&gt; +        if (animation &amp;&amp; animation-&gt;waitingForStartTime() &amp;&amp; animation-&gt;animatingProperty() == property)
&gt; +            animation-&gt;updateStateMachine(AnimationBase::AnimationStateInputStartTimeSet, t);
&gt;      }
&gt;  }

Same comment as for m_keyframeAnimations above.

&gt;      for (size_t i = 0; i &lt; animations.size(); ++i) {
&gt; -        KeyframeAnimation* anim = animations[i].get();
&gt; -        if (anim &amp;&amp; anim-&gt;waitingForStyleAvailable())
&gt; -            anim-&gt;updateStateMachine(AnimationBase::AnimationStateInputStyleAvailable, -1);
&gt; +        // We have to make sure to keep a ref to the animation pointer, because it could get destroyed
&gt; +        // during an animation callback that might get called.
&gt; +        RefPtr&lt;KeyframeAnimation&gt; animation = animations[i];
&gt; +        if (animation &amp;&amp; animation-&gt;waitingForStyleAvailable())
&gt; +            animation-&gt;updateStateMachine(AnimationBase::AnimationStateInputStyleAvailable, -1);
&gt;      }

I don&apos;t see the value of using a RefPtr here. The animations vector is already a local vector of RefPtr, so we&apos;re holding a ref to all of the animations until that vector is destroyed.

&gt;      CSSPropertyTransitionsMap::const_iterator end = m_transitions.end();
&gt;      for (CSSPropertyTransitionsMap::const_iterator it = m_transitions.begin(); it != end; ++it) {
&gt; -        ImplicitAnimation* anim = it-&gt;second.get();
&gt; -        if (anim &amp;&amp; anim-&gt;waitingForStyleAvailable())
&gt; -            anim-&gt;updateStateMachine(AnimationBase::AnimationStateInputStyleAvailable, -1);
&gt; +        // We have to make sure to keep a ref to the animation pointer, because it could get destroyed
&gt; +        // during an animation callback that might get called.
&gt; +        RefPtr&lt;ImplicitAnimation&gt; animation = it-&gt;second;
&gt; +        if (animation &amp;&amp; animation-&gt;waitingForStyleAvailable())
&gt; +            animation-&gt;updateStateMachine(AnimationBase::AnimationStateInputStyleAvailable, -1);
&gt;      }

Same comment as for m_keyframeAnimations above.

review- because only the first change seems obviously correct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98697</commentid>
    <comment_count>9</comment_count>
      <attachid>25148</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2008-11-13 17:18:51 -0800</bug_when>
    <thetext>Created attachment 25148
replacement patch incorporating changes from Darin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98701</commentid>
    <comment_count>10</comment_count>
      <attachid>25148</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-13 17:37:30 -0800</bug_when>
    <thetext>Comment on attachment 25148
replacement patch incorporating changes from Darin

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100325</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-25 16:18:21 -0800</bug_when>
    <thetext>Committed r38768
	M	WebCore/ChangeLog
	M	WebCore/page/animation/AnimationBase.h
	M	WebCore/page/animation/CompositeAnimation.cpp
	M	WebCore/page/animation/AnimationController.cpp
	M	WebCore/page/animation/CompositeAnimation.h
	M	WebCore/page/animation/AnimationBase.cpp
	M	LayoutTests/ChangeLog
	A	LayoutTests/animations/transform-animation-event-destroy-element.html
	A	LayoutTests/animations/transform-animation-event-destroy-element-expected.txt
	A	LayoutTests/transitions/transform-transition-event-destroy-element-expected.txt
	A	LayoutTests/transitions/transform-transition-event-destroy-element.html
r38768 = 7c14de362f15d6dc75bbd7914f4b8db76e2c1430 (trunk)


I added a couple more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100886</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2008-12-01 14:51:08 -0800</bug_when>
    <thetext>The previous checkin was for the wrong patch (22052). This is the correct patch

Sending        WebCore/ChangeLog
Sending        WebCore/page/animation/AnimationBase.cpp
Sending        WebCore/page/animation/ImplicitAnimation.cpp
Sending        WebCore/page/animation/KeyframeAnimation.cpp
Transmitting file data ....
Committed revision 38876.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105727</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-14 10:46:40 -0800</bug_when>
    <thetext>I still get the crash that was originally reported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105744</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-01-14 11:12:01 -0800</bug_when>
    <thetext>I can&apos;t reproduce the crash. Darin, do you have a stack trace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105758</commentid>
    <comment_count>15</comment_count>
      <attachid>26723</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-14 11:46:35 -0800</bug_when>
    <thetext>Created attachment 26723
backtrace of crash

Yes, here is the crash backtrace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105761</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-01-14 11:55:46 -0800</bug_when>
    <thetext>This doesn&apos;t seem to be animation-related; it&apos;s crashing in
WebCore::Document::dispatchImageLoadEventsNow()
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105762</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-14 11:58:56 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; This doesn&apos;t seem to be animation-related; it&apos;s crashing in
&gt; WebCore::Document::dispatchImageLoadEventsNow()

I agree. Sorry, I wasn&apos;t thinking about animation because I was looking at the title of the bug, original description, and test case. Maybe the animation bug was always only part of the bug, or maybe the bug was fixed and this is some new problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106351</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-01-20 11:29:44 -0800</bug_when>
    <thetext>This is a different stack trace and so I think it is an unrelated case. I have been trying to reproduce the crash for a while on both the release and debug builds to no avail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106365</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-20 12:17:03 -0800</bug_when>
    <thetext>OK. Lets reclose this then and I&apos;ll open a new bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>24857</attachid>
            <date>2008-11-03 03:12:05 -0800</date>
            <delta_ts>2008-11-03 03:12:05 -0800</delta_ts>
            <desc>Crash Test File</desc>
            <filename>classCrashTest.html</filename>
            <type>text/html</type>
            <size>789</size>
            <attacher name="Timothy Churchward">WebKitBugzilla</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIgoJImh0dHA6Ly93d3cudzMub3JnL1RSL3ho
dG1sMTEvRFREL3hodG1sMTEuZHRkIj4KCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iPgo8aGVhZD4KCTx0aXRsZT51bnRpdGxlZDwvdGl0bGU+
Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAgICAg
dmFyIGNsYXNzID0gIm5vdCBzbyBuaWNlIHRvIGNhbGwgb25lJ3Mgc2VsZiBhIGNsYXNzIHdoZW4g
aXQncyBub3QiOwoJPC9zY3JpcHQ+CjwvaGVhZD4KCjxib2R5PgoKPGgxPldlYiBJbnNwZWN0b3Ig
Q3Jhc2ggdGVzdDwvaDE+CjxwPlRvIGNhdXNlIFNhZmFyaSBvciBXZWJLaXQgdG8gY3Jhc2ggcGxl
YXNlOgogICAgPG9sPgogICAgICAgIDxsaT5SaWdodC1jbGljayBhbnl3aGVyZSBvbiB0aGlzIHBh
Z2UuPC9saT4KICAgICAgICA8bGk+U2VsZWN0ICJJbnNwZWN0IEVsZW1lbnQiLjwvbGk+CiAgICAg
ICAgPGxpPk9wZW4gdGhlIENvbnNvbGUuPC9saT4KICAgICAgICA8bGk+Q2xpY2sgdG8gZ28gdG8g
dGhlIGxpbmUgb2YgSmF2YVNjcmlwdCB3aGljaCBjb250YWlucyB0aGUgRXJyb3IuPC9saT4KICAg
ICAgICA8bGk+PGk+SW4gbXkgdGVzdHMsIGF0IHRoaXMgc3RhZ2UgV2ViS2l0L1NhZmFyaSB3aWxs
IGNyYXNoLjwvaT48L2xpPgogICAgPC9vbD4KPC9wPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25137</attachid>
            <date>2008-11-13 14:32:44 -0800</date>
            <delta_ts>2008-11-13 17:18:51 -0800</delta_ts>
            <desc>Patch to fix bug</desc>
            <filename>22046.patch</filename>
            <type>text/plain</type>
            <size>8227</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODM3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDgtMTEtMTMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NgorCisgICAgICAgIEZp
eGVkIGFub3RoZXIgY2FzZSBvZiBjcmFzaGluZyBiZWNhdXNlIHRoZSBhbmltYXRpb24gb2JqZWN0
IGlzIGdldHRpbmcgZGVsZXRlZCB3aGVuCisgICAgICAgIGl0J3MgaW4gdGhlIG1pZGRsZSBvZiBh
IGNhbGxiYWNrLiBJIGFjdHVhbGx5IHJld29ya2VkIHRoZSBtZWNoYW5pc20gZm9yIGRvaW5nIHRo
aXMKKyAgICAgICAgaW4gYWxsIGNhc2VzLiBJIHVzZWQgdG8gZG8gaXQgZG93biBpbiB0aGUgY2Fs
bGJhY2sgbG9naWMgaW4gQW5pbWF0aW9uQmFzZSAoYW5kIGl0cworICAgICAgICBzdWJjbGFzc2Vz
KS4gQnV0IHRoaXMgaXMgdG9vIGxhdGUsIGJlY2F1c2UgdGhlIGNhbGxlciBjYW4gc29tZXRpbWVz
IG5lZWQgdG8gYWNjZXNzCisgICAgICAgIHRoZW0sIHRvby4gU28gSSBtb3ZlZCB0aGUgcmVmZmlu
ZyBvZiB0aGVzZSBvYmplY3RzIHVwIGludG8gdGhlIGNhbGxlcnMsIGJvdGggaW4KKyAgICAgICAg
Q29tcG9zaXRlQW5pbWF0aW9uLCB3aGVuIGl0IGlzIHRyYXZlcnNpbmcgYWxsIHRoZSBhbmltYXRp
b24gb2JqZWN0cywgYW5kIGluIHRoZQorICAgICAgICB0aW1lckZpcmVkIGxvZ2ljLCB3aGljaCBj
YWxscyB0aGUgYW5pbWF0aW9uIG9iamVjdHMuIFRoZSBBbmltYXRpb25CYXNlIHBvaW50ZXIgc2hv
dWxkCisgICAgICAgIG5vdyBiZSBnb29kIGZvciBpdHMgZW50aXJlIGxpZmV0aW1lIGluIGFsbCBj
YXNlcy4KKworICAgICAgICBUaGUgdGVzdGNhc2UgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA1MiBhbHNvIGV4aGliaXRzIGEKKyAgICAgICAgY3Jhc2ggd2hp
Y2ggdGhpcyBwYXRjaCBmaXhlcy4gCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRl
TWFjaGluZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjphbmltYXRpb25UaW1l
ckNhbGxiYWNrRmlyZWQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpz
ZXRBbmltYXRpb25TdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0
aW9uUHJpdmF0ZTo6c2V0VHJhbnNpdGlvblN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpzdHlsZUF2YWlsYWJsZSk6CisgICAgICAgICogcGFn
ZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1w
bGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQpOgorICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
QW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJh
bWVBbmltYXRpb246OnJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKToKKwogMjAwOC0xMS0xMyAg
SnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25CYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkJhc2UuY3BwCShyZXZpc2lvbiAzODM3NCkKKysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNywxMSArNzA3LDE0IEBAIHZvaWQg
QW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEEKICAgICAgICAgICAgIC8vIFdlJ3Jl
IGRvbmUuIFN0YXkgaW4gdGhpcyBzdGF0ZSB1bnRpbCB3ZSBhcmUgZGVsZXRlZAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIC8vIHx0aGlzfCBtYXkgYmUgZGVsZXRlZCBoZXJlIGlmIHdl
IGNhbWUgb3V0IG9mIEFuaW1hdGlvblN0YXRlRW5kaW5nIHdoZW4gd2UndmUgYmVlbiBjYWxsZWQg
ZnJvbSB0aW1lckZpcmVkKCkKIH0KICAgICAKIHZvaWQgQW5pbWF0aW9uQmFzZTo6YW5pbWF0aW9u
VGltZXJDYWxsYmFja0ZpcmVkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUg
ZWxhcHNlZFRpbWUpCiB7CisgICAgLy8gV2UgaGF2ZSB0byBtYWtlIHN1cmUgdG8ga2VlcCBhIHJl
ZiB0byB0aGUgdGhpcyBwb2ludGVyLCBiZWNhdXNlIGl0IGNvdWxkIGdldCBkZXN0cm95ZWQKKyAg
ICAvLyBkdXJpbmcgYW4gYW5pbWF0aW9uIGNhbGxiYWNrIHRoYXQgbWlnaHQgZ2V0IGNhbGxlZC4K
KyAgICBSZWZQdHI8QW5pbWF0aW9uQmFzZT4gcmV0YWluZXIodGhpcyk7CisgICAgCiAgICAgQVNT
RVJUKG1fb2JqZWN0LT5kb2N1bWVudCgpICYmICFtX29iamVjdC0+ZG9jdW1lbnQoKS0+aW5QYWdl
Q2FjaGUoKSk7CiAKICAgICAvLyBGSVhNRTogdXNlIGFuIGVudW0KQEAgLTcyMSw3ICs3MjQsNiBA
QCB2b2lkIEFuaW1hdGlvbkJhc2U6OmFuaW1hdGlvblRpbWVyQ2FsbGJhCiAgICAgICAgIHVwZGF0
ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0TG9vcFRpbWVyRmlyZWQsIGVsYXBzZWRU
aW1lKTsKICAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdEFuaW1h
dGlvbkVuZEV2ZW50KSB7CiAgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0
ZUlucHV0RW5kVGltZXJGaXJlZCwgZWxhcHNlZFRpbWUpOwotICAgICAgICAvLyB8dGhpc3wgbWF5
IGJlIGRlbGV0ZWQgaGVyZQogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAkocmV2aXNpb24gMzgzNzIpCisrKyBXZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3Miw5ICszNzIsMTEgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpzZXRBbmlt
YQogICAgIC8vIFNldCBzdGFydCB0aW1lIG9uIGFsbCBhbmltYXRpb25zIHdhaXRpbmcgZm9yIGl0
CiAgICAgQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9rZXlmcmFtZUFu
aW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChBbmltYXRpb25OYW1lTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBLZXlmcmFtZUFuaW1hdGlvbiogYW5pbSA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAg
ICAgIGlmIChhbmltICYmIGFuaW0tPndhaXRpbmdGb3JTdGFydFRpbWUoKSkKLSAgICAgICAgICAg
IGFuaW0tPnVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZUlu
cHV0U3RhcnRUaW1lU2V0LCB0KTsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBtYWtlIHN1cmUgdG8g
a2VlcCBhIHJlZiB0byB0aGUgYW5pbWF0aW9uIHBvaW50ZXIsIGJlY2F1c2UgaXQgY291bGQgZ2V0
IGRlc3Ryb3llZAorICAgICAgICAvLyBkdXJpbmcgYW4gYW5pbWF0aW9uIGNhbGxiYWNrIHRoYXQg
bWlnaHQgZ2V0IGNhbGxlZC4KKyAgICAgICAgUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiBhbmlt
YXRpb24gPSBpdC0+c2Vjb25kOworICAgICAgICBpZiAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+
d2FpdGluZ0ZvclN0YXJ0VGltZSgpKQorICAgICAgICAgICAgYW5pbWF0aW9uLT51cGRhdGVTdGF0
ZU1hY2hpbmUoQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZVNldCwg
dCk7CiAgICAgfQogfQogCkBAIC0zODMsOSArMzg1LDExIEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0
aW9uUHJpdmF0ZTo6c2V0VHJhbnMKICAgICAvLyBTZXQgdGhlIHN0YXJ0IHRpbWUgZm9yIGdpdmVu
IHByb3BlcnR5IHRyYW5zaXRpb24KICAgICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX3RyYW5zaXRpb25zLmVuZCgpOwogICAgIGZvciAoQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBJbXBsaWNpdEFuaW1hdGlvbiogYW5pbSA9
IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIGlmIChhbmltICYmIGFuaW0tPndhaXRpbmdGb3JT
dGFydFRpbWUoKSAmJiBhbmltLT5hbmltYXRpbmdQcm9wZXJ0eSgpID09IHByb3BlcnR5KQotICAg
ICAgICAgICAgYW5pbS0+dXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlv
blN0YXRlSW5wdXRTdGFydFRpbWVTZXQsIHQpOworICAgICAgICAvLyBXZSBoYXZlIHRvIG1ha2Ug
c3VyZSB0byBrZWVwIGEgcmVmIHRvIHRoZSBhbmltYXRpb24gcG9pbnRlciwgYmVjYXVzZSBpdCBj
b3VsZCBnZXQgZGVzdHJveWVkCisgICAgICAgIC8vIGR1cmluZyBhbiBhbmltYXRpb24gY2FsbGJh
Y2sgdGhhdCBtaWdodCBnZXQgY2FsbGVkLgorICAgICAgICBSZWZQdHI8SW1wbGljaXRBbmltYXRp
b24+IGFuaW1hdGlvbiA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChhbmltYXRpb24gJiYgYW5p
bWF0aW9uLT53YWl0aW5nRm9yU3RhcnRUaW1lKCkgJiYgYW5pbWF0aW9uLT5hbmltYXRpbmdQcm9w
ZXJ0eSgpID09IHByb3BlcnR5KQorICAgICAgICAgICAgYW5pbWF0aW9uLT51cGRhdGVTdGF0ZU1h
Y2hpbmUoQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uU3RhdGVJbnB1dFN0YXJ0VGltZVNldCwgdCk7
CiAgICAgfQogfQogCkBAIC00NzEsMTYgKzQ3NSwyMCBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlv
blByaXZhdGU6OnN0eWxlQXZhCiAgICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQoYW5pbWF0aW9ucy5i
ZWdpbigpLCBhbmltYXRpb25zLmVuZCgpLCBjb21wYXJlQW5pbWF0aW9uSW5kaWNlcyk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgS2V5ZnJhbWVBbmltYXRpb24qIGFuaW0gPSBhbmltYXRpb25zW2ldLmdldCgpOwotICAgICAg
ICBpZiAoYW5pbSAmJiBhbmltLT53YWl0aW5nRm9yU3R5bGVBdmFpbGFibGUoKSkKLSAgICAgICAg
ICAgIGFuaW0tPnVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0
ZUlucHV0U3R5bGVBdmFpbGFibGUsIC0xKTsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBtYWtlIHN1
cmUgdG8ga2VlcCBhIHJlZiB0byB0aGUgYW5pbWF0aW9uIHBvaW50ZXIsIGJlY2F1c2UgaXQgY291
bGQgZ2V0IGRlc3Ryb3llZAorICAgICAgICAvLyBkdXJpbmcgYW4gYW5pbWF0aW9uIGNhbGxiYWNr
IHRoYXQgbWlnaHQgZ2V0IGNhbGxlZC4KKyAgICAgICAgUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9u
PiBhbmltYXRpb24gPSBhbmltYXRpb25zW2ldOworICAgICAgICBpZiAoYW5pbWF0aW9uICYmIGFu
aW1hdGlvbi0+d2FpdGluZ0ZvclN0eWxlQXZhaWxhYmxlKCkpCisgICAgICAgICAgICBhbmltYXRp
b24tPnVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25CYXNlOjpBbmltYXRpb25TdGF0ZUlucHV0
U3R5bGVBdmFpbGFibGUsIC0xKTsKICAgICB9CiAKICAgICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25z
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RyYW5zaXRpb25zLmVuZCgpOwogICAgIGZvciAo
Q1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRp
b25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBJbXBsaWNpdEFuaW1hdGlv
biogYW5pbSA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIGlmIChhbmltICYmIGFuaW0tPndh
aXRpbmdGb3JTdHlsZUF2YWlsYWJsZSgpKQotICAgICAgICAgICAgYW5pbS0+dXBkYXRlU3RhdGVN
YWNoaW5lKEFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvblN0YXRlSW5wdXRTdHlsZUF2YWlsYWJsZSwg
LTEpOworICAgICAgICAvLyBXZSBoYXZlIHRvIG1ha2Ugc3VyZSB0byBrZWVwIGEgcmVmIHRvIHRo
ZSBhbmltYXRpb24gcG9pbnRlciwgYmVjYXVzZSBpdCBjb3VsZCBnZXQgZGVzdHJveWVkCisgICAg
ICAgIC8vIGR1cmluZyBhbiBhbmltYXRpb24gY2FsbGJhY2sgdGhhdCBtaWdodCBnZXQgY2FsbGVk
LgorICAgICAgICBSZWZQdHI8SW1wbGljaXRBbmltYXRpb24+IGFuaW1hdGlvbiA9IGl0LT5zZWNv
bmQ7CisgICAgICAgIGlmIChhbmltYXRpb24gJiYgYW5pbWF0aW9uLT53YWl0aW5nRm9yU3R5bGVB
dmFpbGFibGUoKSkKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+dXBkYXRlU3RhdGVNYWNoaW5lKEFu
aW1hdGlvbkJhc2U6OkFuaW1hdGlvblN0YXRlSW5wdXRTdHlsZUF2YWlsYWJsZSwgLTEpOwogICAg
IH0KIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlv
bi5jcHAJKHJldmlzaW9uIDM4MzcyKQorKysgV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNp
dEFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw5ICsxMDcsNiBAQCBib29sIElt
cGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2CiAgICAgICAgICAgICBpZiAoIWVsZW1l
bnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICAvLyBLZWVw
IGEgcmVmZXJlbmNlIHRvIHRoaXMgSW1wbGljaXRBbmltYXRpb24gc28gaXQgZG9lc24ndCBnbyBh
d2F5IGluIHRoZSBoYW5kbGVyCi0gICAgICAgICAgICBSZWZQdHI8SW1wbGljaXRBbmltYXRpb24+
IHJldGFpbmVyKHRoaXMpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBDYWxsIHRoZSBl
dmVudCBoYW5kbGVyCiAgICAgICAgICAgICBlbGVtZW50LT5kaXNwYXRjaFdlYktpdFRyYW5zaXRp
b25FdmVudChldmVudFR5cGUsIHByb3BlcnR5TmFtZSwgZWxhcHNlZFRpbWUpOwogCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAkocmV2aXNpb24g
MzgzNzIpCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAwLDkgKzIwMCw2IEBAIGJvb2wgS2V5ZnJhbWVBbmltYXRpb246
OnNlbmRBbmltYXRpb25FdmUKICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIC8vIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhpcyBJbXBsaWNp
dEFuaW1hdGlvbiBzbyBpdCBkb2Vzbid0IGdvIGF3YXkgaW4gdGhlIGhhbmRsZXIKLSAgICAgICAg
UmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiByZXRhaW5lcih0aGlzKTsKLSAgICAgICAgCiAgICAg
ICAgIC8vIENhbGwgdGhlIGV2ZW50IGhhbmRsZXIKICAgICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hX
ZWJLaXRBbmltYXRpb25FdmVudChldmVudFR5cGUsIG1fa2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUo
KSwgZWxhcHNlZFRpbWUpOwogCg==
</data>
<flag name="review"
          id="11580"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25148</attachid>
            <date>2008-11-13 17:18:51 -0800</date>
            <delta_ts>2009-01-14 10:46:48 -0800</delta_ts>
            <desc>replacement patch incorporating changes from Darin</desc>
            <filename>22046.patch</filename>
            <type>text/plain</type>
            <size>4214</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODM3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDgtMTEtMTMgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0NgorCisgICAgICAgIEZp
eGVkIGFub3RoZXIgY2FzZSBvZiBjcmFzaGluZyBiZWNhdXNlIHRoZSBhbmltYXRpb24gb2JqZWN0
IGlzIGdldHRpbmcgZGVsZXRlZCB3aGVuCisgICAgICAgIGl0J3MgaW4gdGhlIG1pZGRsZSBvZiBh
IGNhbGxiYWNrLiBJIGFjdHVhbGx5IG1vdmVkIHdoZXJlIEkgYW0gcmV0YWluaW5nIHRoZSBwb2lu
dGVyCisgICAgICAgIHVwIG91dCBvZiB0aGUgbG93ZXIgbGV2ZWwgQW5pbWF0aW9uQmFzZSBjb2Rl
IGFuZCBpbnRvIHRoZSB0aW1lciBjYWxsYmFjayB0aGF0IGNhbGxzCisgICAgICAgIHRoZW0uIFNv
IG5vdyB0aGUgcG9pbnRlciBpcyB2YWxpZCB0aHJvdWdob3V0IHRoZSBlbnRpcmUgc2VxdWVuY2Ug
b2YgY2FsbGJhY2sgY29kZS4KKworICAgICAgICBUaGUgdGVzdGNhc2UgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA1MiBhbHNvIGV4aGliaXRzIGEKKyAgICAg
ICAgY3Jhc2ggd2hpY2ggdGhpcyBwYXRjaCBmaXhlcy4gCisKKyAgICAgICAgKiBwYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6
OnVwZGF0ZVN0YXRlTWFjaGluZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjph
bmltYXRpb25UaW1lckNhbGxiYWNrRmlyZWQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0Nv
bXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRp
b25Qcml2YXRlOjpzZXRBbmltYXRpb25TdGFydFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlQW5pbWF0aW9uUHJpdmF0ZTo6c2V0VHJhbnNpdGlvblN0YXJ0VGltZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpzdHlsZUF2YWlsYWJsZSk6Cisg
ICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQpOgorICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVBbmltYXRpb246OnJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKToKKwog
MjAwOC0xMS0xMyAgSnVzdGluIEdhcmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwCShyZXZpc2lvbiAzODM3NCkKKysrIFdlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNywxMSArNzA3
LDE0IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEEKICAgICAgICAg
ICAgIC8vIFdlJ3JlIGRvbmUuIFN0YXkgaW4gdGhpcyBzdGF0ZSB1bnRpbCB3ZSBhcmUgZGVsZXRl
ZAogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIC8vIHx0aGlzfCBtYXkgYmUgZGVsZXRl
ZCBoZXJlIGlmIHdlIGNhbWUgb3V0IG9mIEFuaW1hdGlvblN0YXRlRW5kaW5nIHdoZW4gd2UndmUg
YmVlbiBjYWxsZWQgZnJvbSB0aW1lckZpcmVkKCkKIH0KICAgICAKIHZvaWQgQW5pbWF0aW9uQmFz
ZTo6YW5pbWF0aW9uVGltZXJDYWxsYmFja0ZpcmVkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBkb3VibGUgZWxhcHNlZFRpbWUpCiB7CisgICAgLy8gV2UgaGF2ZSB0byBtYWtlIHN1cmUg
dG8ga2VlcCBhIHJlZiB0byB0aGUgdGhpcyBwb2ludGVyLCBiZWNhdXNlIGl0IGNvdWxkIGdldCBk
ZXN0cm95ZWQKKyAgICAvLyBkdXJpbmcgYW4gYW5pbWF0aW9uIGNhbGxiYWNrIHRoYXQgbWlnaHQg
Z2V0IGNhbGxlZC4KKyAgICBSZWZQdHI8QW5pbWF0aW9uQmFzZT4gcHJvdGVjdG9yKHRoaXMpOwor
ICAgIAogICAgIEFTU0VSVChtX29iamVjdC0+ZG9jdW1lbnQoKSAmJiAhbV9vYmplY3QtPmRvY3Vt
ZW50KCktPmluUGFnZUNhY2hlKCkpOwogCiAgICAgLy8gRklYTUU6IHVzZSBhbiBlbnVtCkBAIC03
MjEsNyArNzI0LDYgQEAgdm9pZCBBbmltYXRpb25CYXNlOjphbmltYXRpb25UaW1lckNhbGxiYQog
ICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9uU3RhdGVJbnB1dExvb3BUaW1lckZp
cmVkLCBlbGFwc2VkVGltZSk7CiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMo
KS53ZWJraXRBbmltYXRpb25FbmRFdmVudCkgewogICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUo
QW5pbWF0aW9uU3RhdGVJbnB1dEVuZFRpbWVyRmlyZWQsIGVsYXBzZWRUaW1lKTsKLSAgICAgICAg
Ly8gfHRoaXN8IG1heSBiZSBkZWxldGVkIGhlcmUKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUv
cGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCShyZXZpc2lvbiAzODM3MikK
KysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDcsOSArMTA3LDYgQEAgYm9vbCBJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRy
YW5zaXRpb25FdgogICAgICAgICAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICAgICAgLy8gS2VlcCBhIHJlZmVyZW5jZSB0byB0aGlzIElt
cGxpY2l0QW5pbWF0aW9uIHNvIGl0IGRvZXNuJ3QgZ28gYXdheSBpbiB0aGUgaGFuZGxlcgotICAg
ICAgICAgICAgUmVmUHRyPEltcGxpY2l0QW5pbWF0aW9uPiByZXRhaW5lcih0aGlzKTsKLSAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gQ2FsbCB0aGUgZXZlbnQgaGFuZGxlcgogICAgICAgICAg
ICAgZWxlbWVudC0+ZGlzcGF0Y2hXZWJLaXRUcmFuc2l0aW9uRXZlbnQoZXZlbnRUeXBlLCBwcm9w
ZXJ0eU5hbWUsIGVsYXBzZWRUaW1lKTsKIApJbmRleDogV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9L
ZXlmcmFtZUFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDM4MzcyKQorKysgV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw5
ICsyMDAsNiBAQCBib29sIEtleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlCiAgICAg
ICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAv
LyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoaXMgSW1wbGljaXRBbmltYXRpb24gc28gaXQgZG9lc24n
dCBnbyBhd2F5IGluIHRoZSBoYW5kbGVyCi0gICAgICAgIFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlv
bj4gcmV0YWluZXIodGhpcyk7Ci0gICAgICAgIAogICAgICAgICAvLyBDYWxsIHRoZSBldmVudCBo
YW5kbGVyCiAgICAgICAgIGVsZW1lbnQtPmRpc3BhdGNoV2ViS2l0QW5pbWF0aW9uRXZlbnQoZXZl
bnRUeXBlLCBtX2tleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIGVsYXBzZWRUaW1lKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>26723</attachid>
            <date>2009-01-14 11:46:35 -0800</date>
            <delta_ts>2009-01-14 11:46:35 -0800</delta_ts>
            <desc>backtrace of crash</desc>
            <filename>CrashBacktrace.txt</filename>
            <type>text/plain</type>
            <size>1614</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">IzAgIDB4MDAwMDAwMDAgaW4gPz8gKCkKIzEgIDB4MDM1Y2QyMWQgaW4gV2ViQ29yZTo6RG9jdW1l
bnQ6OmRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRzTm93ICh0aGlzPTB4NmQ2NjIwMCkgYXQgL1VzZXJz
L2RhcmluL1NhZmFyaS9PcGVuU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcDoyODk2CiMy
ICAweDAzNWNkMjRiIGluIFdlYkNvcmU6OkRvY3VtZW50OjppbWFnZUxvYWRFdmVudFRpbWVyRmly
ZWQgKHRoaXM9MHg2ZDY2MjAwKSBhdCAvVXNlcnMvZGFyaW4vU2FmYXJpL09wZW5Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwOjI5MDMKIzMgIDB4MDM1ZTAxNmYgaW4gV2ViQ29yZTo6VGlt
ZXI8V2ViQ29yZTo6RG9jdW1lbnQ+OjpmaXJlZCAodGhpcz0weDZkNjY2M2MpIGF0IFRpbWVyLmg6
OTkKIzQgIDB4MDNiZTdhODcgaW4gV2ViQ29yZTo6VGltZXJCYXNlOjpmaXJlVGltZXJzIChmaXJl
VGltZT0xMjMxOTYyMzM0LjA4ODgxMDksIGZpcmluZ1RpbWVycz1AMHhiZmZmZTY1YykgYXQgL1Vz
ZXJzL2RhcmluL1NhZmFyaS9PcGVuU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwOjM0
OQojNSAgMHgwM2JlN2IxNiBpbiBXZWJDb3JlOjpUaW1lckJhc2U6OnNoYXJlZFRpbWVyRmlyZWQg
KCkgYXQgL1VzZXJzL2RhcmluL1NhZmFyaS9PcGVuU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGlt
ZXIuY3BwOjM3MAojNiAgMHgwM2JiMjc1YyBpbiBXZWJDb3JlOjp0aW1lckZpcmVkICgpIGF0IC9V
c2Vycy9kYXJpbi9TYWZhcmkvT3BlblNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRU
aW1lck1hYy5tbTo4NgojNyAgMHg5MzFiM2IyNSBpbiBDRlJ1bkxvb3BSdW5TcGVjaWZpYyAoKQoj
OCAgMHg5MzFiM2NkOCBpbiBDRlJ1bkxvb3BSdW5Jbk1vZGUgKCkKIzkgIDB4OTU4MTgyYzAgaW4g
UnVuQ3VycmVudEV2ZW50TG9vcEluTW9kZSAoKQojMTAgMHg5NTgxODBkOSBpbiBSZWNlaXZlTmV4
dEV2ZW50Q29tbW9uICgpCiMxMSAweDk1ODE3ZjRkIGluIEJsb2NrVW50aWxOZXh0RXZlbnRNYXRj
aGluZ0xpc3RJbk1vZGUgKCkKIzEyIDB4OTI0ZGFkN2QgaW4gX0RQU05leHRFdmVudCAoKQojMTMg
MHg5MjRkYTYzMCBpbiAtW05TQXBwbGljYXRpb24gbmV4dEV2ZW50TWF0Y2hpbmdNYXNrOnVudGls
RGF0ZTppbk1vZGU6ZGVxdWV1ZTpdICgpCiMxNCAweDAwMWE1ZjU5IGluIC1bQnJvd3NlckFwcGxp
Y2F0aW9uIG5leHRFdmVudE1hdGNoaW5nTWFzazp1bnRpbERhdGU6aW5Nb2RlOmRlcXVldWU6XSAo
c2VsZj0weDY3MjBkNjAsIF9jbWQ9MHg5NDc5MGI4MCwgbWFzaz00Mjk0OTY3Mjk1LCBleHBpcmF0
aW9uPTB4Njc2NjM1MCwgbW9kZT0weGEwNDUwYjQwLCBkZXF1ZXVlPTEgJ1wwMDEnKSBhdCAvVXNl
cnMvZGFyaW4vU2FmYXJpL0ludGVybmFsL1NhZmFyaS9tYWMvQnJvd3NlckFwcGxpY2F0aW9uLm1t
OjIyMQojMTUgMHg5MjRkMzY2YiBpbiAtW05TQXBwbGljYXRpb24gcnVuXSAoKQojMTYgMHg5MjRh
MDhhNCBpbiBOU0FwcGxpY2F0aW9uTWFpbiAoKQojMTcgMHgwMDAzMTI1OCBpbiBtYWluIChhcmdj
PTEsIGFyZ3Y9MHhiZmZmZjVhOCkgYXQgL1VzZXJzL2RhcmluL1NhZmFyaS9JbnRlcm5hbC9TYWZh
cmkvbWFjL21haW4ubToxNTAK
</data>

          </attachment>
      

    </bug>

</bugzilla>