<?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>63681</bug_id>
          
          <creation_ts>2011-06-29 19:25:24 -0700</creation_ts>
          <short_desc>Chromium bug: Compositing on a lost context causes latch deadlocks</short_desc>
          <delta_ts>2011-06-30 16:47:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></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="John Bates">jbates</reporter>
          <assigned_to name="John Bates">jbates</assigned_to>
          <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>430106</commentid>
    <comment_count>0</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2011-06-29 19:25:24 -0700</bug_when>
    <thetext>Chromium bug: Compositing on a lost context causes latch deadlocks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430107</commentid>
    <comment_count>1</comment_count>
      <attachid>99211</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2011-06-29 19:26:04 -0700</bug_when>
    <thetext>Created attachment 99211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430113</commentid>
    <comment_count>2</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2011-06-29 19:28:52 -0700</bug_when>
    <thetext>This bug is triggered by opening two tabs in the same renderer that support lost context recovery. Killing the GPU process would recreate the contexts. Then when the background tab is clicked, the first composite occurs on the old compositor context, thereby latching on a lost context and leading to deadlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430121</commentid>
    <comment_count>3</comment_count>
      <attachid>99211</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-29 19:49:39 -0700</bug_when>
    <thetext>Comment on attachment 99211
Patch

isCompositorContextLost() is not a synchronous operation, so it seems like this will still be racy if the context is lost and the renderer side hasn&apos;t noticed yet - no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430482</commentid>
    <comment_count>4</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2011-06-30 09:44:16 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 99211 [details])
&gt; isCompositorContextLost() is not a synchronous operation, so it seems like this will still be racy if the context is lost and the renderer side hasn&apos;t noticed yet - no?

This change fixes a condition that was actually not a race. The background tab has already lost its contexts (at GPU process kill time), and later on, it is displayed. Since the first thing we do is composite, we haven&apos;t discovered yet that the context was already lost, and we go ahead latching on it.

For the cases where the compositor context is lost after this point, I think it&apos;s handled already. Here are the cases:

- compositor context is lost due to error (memory, etc):
GPU process detects error and kills whole GpuChannel, bringing down all child contexts as well. No deadlock because IPCs don&apos;t block on closed channels.

- GPU crashed/killed:
Also no deadlock because IPCs don&apos;t block on closed channels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430688</commentid>
    <comment_count>5</comment_count>
      <attachid>99211</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-06-30 14:43:05 -0700</bug_when>
    <thetext>Comment on attachment 99211
Patch

Looks fine as long as it&apos;s been tested. I am also concerned about what would happen if the GPU process died immediately after the call to isCompositorContextLost, and also about what happens if we skip doing a render at this point, but it seems this is an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430749</commentid>
    <comment_count>6</comment_count>
      <attachid>99382</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2011-06-30 15:51:09 -0700</bug_when>
    <thetext>Created attachment 99382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430774</commentid>
    <comment_count>7</comment_count>
      <attachid>99382</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-30 16:06:01 -0700</bug_when>
    <thetext>Comment on attachment 99382
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:9
&gt; +        The cause of deadlock was that a setLatch command is added to the lost
&gt; +        compositor GL context, and a waitLatch would never complete on a child context.
&gt; +        This change checks whether the compositor context is in error state before
&gt; +        doing the compositing.

nit: in the future, put this after the bug link and a newline.  pattern is:

Reviewed by ...
&lt;newline&gt;
bug title
bug URL
&lt;newline&gt;
long desc
long desc
long desc
&lt;newline&gt;
per-file stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430844</commentid>
    <comment_count>8</comment_count>
      <attachid>99382</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-30 16:47:06 -0700</bug_when>
    <thetext>Comment on attachment 99382
Patch

Clearing flags on attachment: 99382

Committed r90185: &lt;http://trac.webkit.org/changeset/90185&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430845</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-30 16:47:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99211</attachid>
            <date>2011-06-29 19:26:04 -0700</date>
            <delta_ts>2011-06-30 15:51:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63681-20110629192603.patch</filename>
            <type>text/plain</type>
            <size>1565</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAwNTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
Zjg3MmEyYjgyYmRmZGUwOTg5OTg4YzVlMjA5MmM2NmJkMTgyZWFiZi4uZTU0ODJlNDM0YTRlNGUy
MTZiMzRlODdjM2QxZmU4ZTQ5Nzk4NTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMS0wNi0yOSAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9t
aXVtIGJ1ZzogQ29tcG9zaXRpbmcgb24gYSBsb3N0IGNvbnRleHQgY2F1c2VzIGxhdGNoIGRlYWRs
b2NrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM2
ODEKKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpjb21wb3NpdGUpOgorCiAyMDExLTA2LTI5ICBKYW1lcyBIYXdraW5zICA8amhh
d2tpbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYjg1MDI3
MDEyYWNkMmM3ZmM1MDE2MmViZmRjYjU1OTZjMzg1Nzc0Ni4uMjRhOGU4NDI3ZWI2NjI4MDM0NzQ0
NGU1OWM4M2NhMmE3ZDY1Mzg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtMTE2NywxMCArMTE2NywxNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpjb21w
b3NpdGUoYm9vbCBmaW5pc2gpCiAgICAgICAgIG1fcmVjcmVhdGluZ0dyYXBoaWNzQ29udGV4dCA9
IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRvQ29tcG9zaXRlKCk7CiAKLSAg
ICAvLyBQdXQgcmVzdWx0IG9uc2NyZWVuLgotICAgIG1fbGF5ZXJSZW5kZXJlci0+cHJlc2VudCgp
OworICAgIC8vIERvIG5vdCBjb21wb3NpdGUgaWYgdGhlIGNvbXBvc2l0b3IgY29udGV4dCBpcyBh
bHJlYWR5IGxvc3QuCisgICAgaWYgKCFtX2xheWVyUmVuZGVyZXItPmlzQ29tcG9zaXRvckNvbnRl
eHRMb3N0KCkpIHsKKyAgICAgICAgZG9Db21wb3NpdGUoKTsKKworICAgICAgICAvLyBQdXQgcmVz
dWx0IG9uc2NyZWVuLgorICAgICAgICBtX2xheWVyUmVuZGVyZXItPnByZXNlbnQoKTsKKyAgICB9
CiAKICAgICBpZiAobV9sYXllclJlbmRlcmVyLT5pc0NvbXBvc2l0b3JDb250ZXh0TG9zdCgpKSB7
CiAgICAgICAgIC8vIFRyeWluZyB0byByZWNvdmVyIHRoZSBjb250ZXh0IHJpZ2h0IGhlcmUgd2ls
bCBub3Qgd29yayBpZiBHUFUgcHJvY2Vzcwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99382</attachid>
            <date>2011-06-30 15:51:09 -0700</date>
            <delta_ts>2011-06-30 16:47:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63681-20110630155108.patch</filename>
            <type>text/plain</type>
            <size>1851</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTAxMzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ZTcwZGUyNDRlNmU2ZmVhOGUyMzY0OGNkZTc3YjBjMjZjMWViNzQ2MS4uNzlmZWYwOGYxMTQwYjk0
YTAwMmFhNTc5ZDM0NmU0OTJiNTVlMTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxMS0wNi0yOSAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9t
aXVtIGJ1ZzogQ29tcG9zaXRpbmcgb24gYSBsb3N0IGNvbnRleHQgY2F1c2VzIGxhdGNoIGRlYWRs
b2Nrcy4KKyAgICAgICAgVGhlIGNhdXNlIG9mIGRlYWRsb2NrIHdhcyB0aGF0IGEgc2V0TGF0Y2gg
Y29tbWFuZCBpcyBhZGRlZCB0byB0aGUgbG9zdAorICAgICAgICBjb21wb3NpdG9yIEdMIGNvbnRl
eHQsIGFuZCBhIHdhaXRMYXRjaCB3b3VsZCBuZXZlciBjb21wbGV0ZSBvbiBhIGNoaWxkIGNvbnRl
eHQuCisgICAgICAgIFRoaXMgY2hhbmdlIGNoZWNrcyB3aGV0aGVyIHRoZSBjb21wb3NpdG9yIGNv
bnRleHQgaXMgaW4gZXJyb3Igc3RhdGUgYmVmb3JlCisgICAgICAgIGRvaW5nIHRoZSBjb21wb3Np
dGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYz
NjgxCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Y29tcG9zaXRlKToKKwogMjAxMS0wNi0zMCAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGVjN2Ri
MTQ3MTU0OTAzMjk3YmU1MjFlODIxMDZmY2RmYmQ4MDBlZjEuLjllY2RlMjkxYmEzZTU4YTJmNDdi
MzMyOWNhOWRkZDI1ZjZkYTgyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTExNjcsMTAgKzExNjcsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6Y29t
cG9zaXRlKGJvb2wgZmluaXNoKQogICAgICAgICBtX3JlY3JlYXRpbmdHcmFwaGljc0NvbnRleHQg
PSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBkb0NvbXBvc2l0ZSgpOwogCi0g
ICAgLy8gUHV0IHJlc3VsdCBvbnNjcmVlbi4KLSAgICBtX2xheWVyUmVuZGVyZXItPnByZXNlbnQo
KTsKKyAgICAvLyBEbyBub3QgY29tcG9zaXRlIGlmIHRoZSBjb21wb3NpdG9yIGNvbnRleHQgaXMg
YWxyZWFkeSBsb3N0LgorICAgIGlmICghbV9sYXllclJlbmRlcmVyLT5pc0NvbXBvc2l0b3JDb250
ZXh0TG9zdCgpKSB7CisgICAgICAgIGRvQ29tcG9zaXRlKCk7CisKKyAgICAgICAgLy8gUHV0IHJl
c3VsdCBvbnNjcmVlbi4KKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5wcmVzZW50KCk7CisgICAg
fQogCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+aXNDb21wb3NpdG9yQ29udGV4dExvc3QoKSkg
ewogICAgICAgICAvLyBUcnlpbmcgdG8gcmVjb3ZlciB0aGUgY29udGV4dCByaWdodCBoZXJlIHdp
bGwgbm90IHdvcmsgaWYgR1BVIHByb2Nlc3MK
</data>

          </attachment>
      

    </bug>

</bugzilla>