<?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>180978</bug_id>
          
          <creation_ts>2017-12-19 09:54:54 -0800</creation_ts>
          <short_desc>Deadlock in GStreamer video sink during shutdown</short_desc>
          <delta_ts>2018-01-15 02:51:36 -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>Media</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sebastian Dröge (slomo)">slomo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>magomez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1383164</commentid>
    <comment_count>0</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2017-12-19 09:54:54 -0800</bug_when>
    <thetext>There&apos;s a rare deadlock in the GStreamer video sink on shutdown. What can happen is that the video sink is waiting on the draw condition variable for the main thread to actually render the frame, while the main thread is waiting for the GStreamer video sink (and its streaming thread) to shut down.

Patch follows in a minute, but it needs some longer testing to make sure this problem is solved for real. In the testcase it happens about once every 24 hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383165</commentid>
    <comment_count>1</comment_count>
      <attachid>329768</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2017-12-19 09:56:27 -0800</bug_when>
    <thetext>Created attachment 329768
0001-GStreamer-Don-t-wait-for-draw-condition-variable-whe.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383167</commentid>
    <comment_count>2</comment_count>
      <attachid>329769</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2017-12-19 10:03:51 -0800</bug_when>
    <thetext>Created attachment 329769
0001-GStreamer-Don-t-wait-for-draw-condition-variable-whe.patch

There was some locale confusion by GIT, this should be better now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384089</commentid>
    <comment_count>3</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2017-12-21 06:14:10 -0800</bug_when>
    <thetext>(In reply to Sebastian Dröge (slomo) from comment #0)

&gt; Patch follows in a minute, but it needs some longer testing to make sure
&gt; this problem is solved for real. In the testcase it happens about once every
&gt; 24 hours.

Probably confirmed, this deadlock did not happen again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385412</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-03 03:33:48 -0800</bug_when>
    <thetext>Miguel, could you review this? you were the last one dealing with the deadlocks related to the draw timer. I&apos;ll r+ it if approved by Miguel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387142</commentid>
    <comment_count>5</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-01-09 00:43:46 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; Miguel, could you review this? you were the last one dealing with the
&gt; deadlocks related to the draw timer. I&apos;ll r+ it if approved by Miguel.

I agree, just pinged him.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387150</commentid>
    <comment_count>6</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-01-09 01:12:24 -0800</bug_when>
    <thetext>(In reply to Sebastian Dröge (slomo) from comment #3)
&gt; (In reply to Sebastian Dröge (slomo) from comment #0)
&gt; 
&gt; &gt; Patch follows in a minute, but it needs some longer testing to make sure
&gt; &gt; this problem is solved for real. In the testcase it happens about once every
&gt; &gt; 24 hours.
&gt; 
&gt; Probably confirmed, this deadlock did not happen again

Sorry for the late reply.

Is this issue happening when accelerated compositing is disabled? Or does it happen with accelerated compositing enabled but gstreamer-gl is disabled? I ask because the patch touches the two cases but I&apos;m not sure which is one you&apos;re trying to fix.

My bet is that this is the AC enabled non gst-gl case, cause I think with AC disabled the deadlock should not be happening. In that case, I think what we need is just to modify MediaPlayerPrivateGStreamerBase::cancelRepaint() to notify drawCondition always (as you did in your patch, but we don&apos;t need the m_drawCancelled variable) instead of just doing it for the non AC case. I think that the problem we find here is that the compositing thread has been destroyed so the gstreamer thread will never get the drawCondition notification from it, and we need to send it from the main thread prior to destroying the player.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387218</commentid>
    <comment_count>7</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2018-01-09 05:50:59 -0800</bug_when>
    <thetext>It happens when accelerated compositing is disabled, that&apos;s the case I was debugging and which this patch is fixing.

I only touched that other case for completeness to ensure that nothing is ever waiting on the condition variable during shutdown, no matter which code path is taken.


Why is the cancelled boolean unneeded in your opinion? One potential problem here is that the condition variable is signalled (due to cancelling) before waiting happens, and then it would be waiting forever if we didn&apos;t have another boolean flag that can be checked before waiting to decide whether we have to wait or should not wait because nothing is ever going to wake us up again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387241</commentid>
    <comment_count>8</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-01-09 07:01:11 -0800</bug_when>
    <thetext>(In reply to Sebastian Dröge (slomo) from comment #7)
&gt; It happens when accelerated compositing is disabled, that&apos;s the case I was
&gt; debugging and which this patch is fixing.
&gt; 
&gt; I only touched that other case for completeness to ensure that nothing is
&gt; ever waiting on the condition variable during shutdown, no matter which code
&gt; path is taken.

Ah, ok. Bad assumption from my side then.

&gt; Why is the cancelled boolean unneeded in your opinion? One potential problem
&gt; here is that the condition variable is signalled (due to cancelling) before
&gt; waiting happens, and then it would be waiting forever if we didn&apos;t have
&gt; another boolean flag that can be checked before waiting to decide whether we
&gt; have to wait or should not wait because nothing is ever going to wake us up
&gt; again.

The boolean comment was in case the problem was with AC enabled. But it&apos;s not the case.

cancelRepaint() gets called in the destructor after the sink&apos;s repaint callback is disconnected. I was assuming that after this no new repaint callbacks could happen, but if you were able to reproduce a situation where cancelRepaint() notifies the condition before triggerRepaint() waits on it, then it means that after disconnecting the signals there might be callbacks running anyway. The usage of the boolean makes sense then.

But I&apos;m not sure about trying to fix the AC case as well, as in that case the condition is not notified from the main thread but from the compositing one. And notifying it from the main thread could cause gstreamer to release the frame while the compositor thread is still using it. In this case I would prefer to leave the behavior as is: the main thread is blocked while trying to set the pipeline to null while the compositor thread is using the frame. Once the compositor thread notifies the gstreamer thread, this can proceed to set the null state and then the main thread can continue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387254</commentid>
    <comment_count>9</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2018-01-09 07:43:12 -0800</bug_when>
    <thetext>(In reply to Miguel Gomez from comment #8)
&gt; But I&apos;m not sure about trying to fix the AC case as well, as in that case
&gt; the condition is not notified from the main thread but from the compositing
&gt; one. And notifying it from the main thread could cause gstreamer to release
&gt; the frame while the compositor thread is still using it. In this case I
&gt; would prefer to leave the behavior as is: the main thread is blocked while
&gt; trying to set the pipeline to null while the compositor thread is using the
&gt; frame. Once the compositor thread notifies the gstreamer thread, this can
&gt; proceed to set the null state and then the main thread can continue.

Is it guaranteed however that in the AC case the compositor thread is always going to wake up the condition variable, even if both the GStreamer streaming thread and the main thread are blocked?

Also even in the AC case it seems to make sense to remember if we were cancelled (i.e. if we&apos;re shutting down), and if so just not wait (or render or anything) at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389120</commentid>
    <comment_count>10</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2018-01-13 11:03:08 -0800</bug_when>
    <thetext>How should we move forward here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389255</commentid>
    <comment_count>11</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-01-15 01:21:46 -0800</bug_when>
    <thetext>(In reply to Sebastian Dröge (slomo) from comment #10)
&gt; How should we move forward here?

Let&apos;s just go ahead with your patch. Carlos, could you r+, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389258</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-01-15 01:56:35 -0800</bug_when>
    <thetext>Sebastian, do you want the commit-queue to land this patch? I don&apos;t remember if you have a SVN account or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389262</commentid>
    <comment_count>13</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2018-01-15 02:27:08 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #12)
&gt; Sebastian, do you want the commit-queue to land this patch? I don&apos;t remember
&gt; if you have a SVN account or not.

I do, but let&apos;s just have the commit-queue handle that. I&apos;m lazy :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389266</commentid>
    <comment_count>14</comment_count>
      <attachid>329769</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-15 02:50:49 -0800</bug_when>
    <thetext>Comment on attachment 329769
0001-GStreamer-Don-t-wait-for-draw-condition-variable-whe.patch

Clearing flags on attachment: 329769

Committed r226947: &lt;https://trac.webkit.org/changeset/226947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389267</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-15 02:50:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389268</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-15 02:51:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/36517690&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329768</attachid>
            <date>2017-12-19 09:56:27 -0800</date>
            <delta_ts>2017-12-19 10:03:51 -0800</delta_ts>
            <desc>0001-GStreamer-Don-t-wait-for-draw-condition-variable-whe.patch</desc>
            <filename>0001-GStreamer-Don-t-wait-for-draw-condition-variable-whe.patch</filename>
            <type>text/plain</type>
            <size>5363</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSBjOWIxMWM0OWUyNjRiNDkwMDI1OGMyNDIwYzdkYmVmMmUxMTQxMzE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/cGVybD0zQT0yMHdhcm5pbmc9M0E9MjBTZXR0
aW5nPTIwbG9jYWxlPTIwZmFpbGVkPTJFcGVybD0zQT89CiA9P1VURi04P3E/PTIwd2FybmluZz0z
QT0yMFBsZWFzZT0yMGNoZWNrPTIwdGhhdD0yMHlvdXI9MjBsb2NhbGU9MjBzZXR0aW5nPz0KID0/
VVRGLTg/cT9zPTNBPTA5TEFOR1VBR0U9MjA9M0Q9MjA9MjJlbj0yMj0yQz0wOUxDPTVGQUxMPTIw
PTNEPTIwPTIyPTIyPz0KID0/VVRGLTg/cT89MkM9MDlMQz01Rk1FU1NBR0VTPTIwPTNEPTIwPTIy
ZW49NUZVUz0yRVVURi04PTIyPTJDPTA5TEFORz0yMD89CiA9P1VURi04P3E/PTNEPTIwPTIyZW49
NUZVUz0yRVVURi04PTIyPTIwPTIwPTIwPTIwYXJlPTIwc3VwcG9ydGVkPTIwYW5kPTIwPz0KID0/
VVRGLTg/cT9pbnN0YWxsZWQ9MjBvbj0yMHlvdXI9MjBzeXN0ZW09MkVwZXJsPTNBPTIwd2Fybmlu
Zz0zQT0yMEZhbGxpbmc/PQogPT9VVEYtOD9xPz0yMGJhY2s9MjB0bz0yMHRoZT0yMHN0YW5kYXJk
PTIwbG9jYWxlPTIwPTI4PTIyQz0yMj0yOT0yRVNlYmFzdD89CiA9P1VURi04P3E/aWFuPTIwRHI9
QzM9QjZnZT89CiA8cGVybDogd2FybmluZzogU2V0dGluZyBsb2NhbGUgZmFpbGVkLnBlcmw6IHdh
cm5pbmc6IFBsZWFzZSBjaGVjayB0aGF0IHlvdXIgbG9jYWxlIHNldHRpbmdzOglMQU5HVUFHRSA9
ICJlbiIsCUxDX0FMTCA9ICIiLAlMQ19NRVNTQUdFUyA9ICJlbl9VUy5VVEYtOCIsCUxBTkcgPSAi
ZW5fVVMuVVRGLTgiICAgIGFyZSBzdXBwb3J0ZWQgYW5kIGluc3RhbGxlZCBvbiB5b3VyIHN5c3Rl
bS5wZXJsOiB3YXJuaW5nOiBGYWxsaW5nIGJhY2sgdG8gdGhlIHN0YW5kYXJkIGxvY2FsZSAoIkMi
KS5zbG9tb0Bjb2F4aW9uLm5ldD4KRGF0ZTogVHVlLCAxOSBEZWMgMjAxNyAxOTo1NTozOCArMDIw
MApTdWJqZWN0OiBbUEFUQ0hdIFtHU3RyZWFtZXJdIERvbid0IHdhaXQgZm9yIGRyYXcgY29uZGl0
aW9uIHZhcmlhYmxlIHdoZW4KIHNodXR0aW5nIGRvd24uCgpodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwOTc4CgoqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJSZXBhaW50KToKKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNhbmNlbFJlcGFpbnQpOgoqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CkJ5IGFsc28g
d2FpdGluZyBmb3IgdGhlIGRyYXcgY29uZGl0aW9uIHZhcmlhYmxlIHdoaWxlIHNodXR0aW5nIGRv
d24sCml0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIEdTdHJlYW1lciB2aWRlbyBzaW5rIGlzIHdhaXRp
bmcgZm9yIHRoZSBtYWluCnRocmVhZCB0byBhY3R1YWxseSByZW5kZXIgdGhlIGN1cnJlbnQgZnJh
bWUsIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUKdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgZm9y
IHRoZSBHU3RyZWFtZXIgdmlkZW8gc2luayB0byBzaHV0IGRvd24sCnJlc3VsdGluZyBpbiBhIGRl
YWRsb2NrLgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCAgICAgICB8IDExICsrKysrKysrKy0tCiAuLi4v
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCAgICAgICAgIHwgIDEg
KwogMyBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAwM2ZkNmZmOTM3Ny4uNWFhOTdkN2FmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAxNy0xMi0xOSAgU2ViYXN0aWFuIERyw7ZnZSAgPHNlYmFzdGlhbkBjZW50cmlj
dWxhci5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gRG9uJ3Qgd2FpdCBmb3IgZHJhdyBjb25k
aXRpb24gdmFyaWFibGUgd2hlbiBzaHV0dGluZyBkb3duLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwOTc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjYW5jZWxSZXBhaW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICBCeSBhbHNvIHdhaXRpbmcgZm9yIHRoZSBkcmF3
IGNvbmRpdGlvbiB2YXJpYWJsZSB3aGlsZSBzaHV0dGluZyBkb3duLAorICAgICAgICBpdCBpcyBw
b3NzaWJsZSB0aGF0IHRoZSBHU3RyZWFtZXIgdmlkZW8gc2luayBpcyB3YWl0aW5nIGZvciB0aGUg
bWFpbgorICAgICAgICB0aHJlYWQgdG8gYWN0dWFsbHkgcmVuZGVyIHRoZSBjdXJyZW50IGZyYW1l
LCB3aGlsZSBhdCB0aGUgc2FtZSB0aW1lCisgICAgICAgIHRoZSBtYWluIHRocmVhZCBpcyB3YWl0
aW5nIGZvciB0aGUgR1N0cmVhbWVyIHZpZGVvIHNpbmsgdG8gc2h1dCBkb3duLAorICAgICAgICBy
ZXN1bHRpbmcgaW4gYSBkZWFkbG9jay4KKwogMjAxNy0xMi0xOCAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlIFBheV0gT25seSBpbmNsdWRlIHBob25ldGlj
IG5hbWUgcHJvcGVydGllcyBpbiBBcHBsZVBheVBheW1lbnRDb250YWN0IHdoZW4gdmVyc2lvbiA+
PSAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKaW5kZXggM2FjM2RkMjYxYzEuLjM1MTE2NDEzNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03NTksNiArNzU5
LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWlu
dChHc3RTYW1wbGUqIHNhbXBsZSkKIAogICAgIGlmICghbV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJh
dGVkKSB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZHJhd011dGV4KTsKKyAgICAgICAg
aWYgKG1fZHJhd0NhbmNlbGxlZCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9kcmF3
VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgICAgIG1fZHJhd0NvbmRpdGlvbi53YWl0KG1f
ZHJhd011dGV4KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzcwLDYgKzc3Miw4IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFpbnQoR3N0U2FtcGxlKiBz
YW1wbGUpCiAjZWxzZQogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fZHJhd011dGV4
KTsKKyAgICAgICAgaWYgKG1fZHJhd0NhbmNlbGxlZCkKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgaWYgKCFtX3BsYXRmb3JtTGF5ZXJQcm94eS0+c2NoZWR1bGVVcGRhdGVPbkNvbXBvc2l0
b3JUaHJlYWQoW3RoaXNdIHsgdGhpcy0+cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKTsgfSkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fZHJhd0NvbmRpdGlvbi53YWl0KG1fZHJhd011
dGV4KTsKQEAgLTc4NSwxMSArNzg5LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6cmVwYWludENhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y2FuY2VsUmVwYWludCgpCiB7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9kcmF3TXV0ZXgpOworCiAgICAgaWYgKCFtX3JlbmRlcmlu
Z0NhbkJlQWNjZWxlcmF0ZWQpIHsKICAgICAgICAgbV9kcmF3VGltZXIuc3RvcCgpOwotICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2RyYXdNdXRleCk7Ci0gICAgICAgIG1fZHJhd0NvbmRpdGlv
bi5ub3RpZnlPbmUoKTsKICAgICB9CisKKyAgICBtX2RyYXdDYW5jZWxsZWQgPSB0cnVlOworICAg
IG1fZHJhd0NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpyZXBhaW50Q2FuY2VsbGVkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggOTMxZDgwYjE0ZDcuLjAzZmVkZWE5NzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgK
QEAgLTIzMSw2ICsyMzEsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBDb25kaXRpb24gbV9kcmF3Q29u
ZGl0aW9uOwogICAgIExvY2sgbV9kcmF3TXV0ZXg7CisgICAgYm9vbCBtX2RyYXdDYW5jZWxsZWQg
eyBmYWxzZSB9OwogICAgIFJ1bkxvb3A6OlRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U+IG1fZHJhd1RpbWVyOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotLSAKMi4x
NS4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329769</attachid>
            <date>2017-12-19 10:03:51 -0800</date>
            <delta_ts>2018-01-15 02:50:49 -0800</delta_ts>
            <desc>0001-GStreamer-Don-t-wait-for-draw-condition-variable-whe.patch</desc>
            <filename>0001-GStreamer-Don-t-wait-for-draw-condition-variable-whe.patch</filename>
            <type>text/plain</type>
            <size>4570</size>
            <attacher name="Sebastian Dröge (slomo)">slomo</attacher>
            
              <data encoding="base64">RnJvbSA2NjRlMjA1NWI5OTFhMDljMzk2MjA5OGFiZjk4NDQyNWFkZmYxYjNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxz
ZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgpEYXRlOiBUdWUsIDE5IERlYyAyMDE3IDE5OjU1OjM4
ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gW0dTdHJlYW1lcl0gRG9uJ3Qgd2FpdCBmb3IgZHJhdyBj
b25kaXRpb24gdmFyaWFibGUgd2hlbgogc2h1dHRpbmcgZG93bi4KCmh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA5NzgKCiogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgooV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dHJpZ2dlclJlcGFpbnQpOgooV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y2FuY2VsUmVwYWludCk6CiogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKQnkg
YWxzbyB3YWl0aW5nIGZvciB0aGUgZHJhdyBjb25kaXRpb24gdmFyaWFibGUgd2hpbGUgc2h1dHRp
bmcgZG93biwKaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgR1N0cmVhbWVyIHZpZGVvIHNpbmsgaXMg
d2FpdGluZyBmb3IgdGhlIG1haW4KdGhyZWFkIHRvIGFjdHVhbGx5IHJlbmRlciB0aGUgY3VycmVu
dCBmcmFtZSwgd2hpbGUgYXQgdGhlIHNhbWUgdGltZQp0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGlu
ZyBmb3IgdGhlIEdTdHJlYW1lciB2aWRlbyBzaW5rIHRvIHNodXQgZG93biwKcmVzdWx0aW5nIGlu
IGEgZGVhZGxvY2suCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCiAuLi4vZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwICAgICAgIHwgMTEgKysrKysrKysrLS0K
IC4uLi9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oICAgICAgICAg
fCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDAzZmQ2ZmY5Mzc3Li41YWE5N2Q3YWYxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDE3LTEyLTE5ICBTZWJhc3RpYW4gRHLDtmdlICA8c2ViYXN0aWFuQGNl
bnRyaWN1bGFyLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBEb24ndCB3YWl0IGZvciBkcmF3
IGNvbmRpdGlvbiB2YXJpYWJsZSB3aGVuIHNodXR0aW5nIGRvd24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA5NzgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJSZXBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNhbmNlbFJl
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAgIEJ5IGFsc28gd2FpdGluZyBmb3IgdGhl
IGRyYXcgY29uZGl0aW9uIHZhcmlhYmxlIHdoaWxlIHNodXR0aW5nIGRvd24sCisgICAgICAgIGl0
IGlzIHBvc3NpYmxlIHRoYXQgdGhlIEdTdHJlYW1lciB2aWRlbyBzaW5rIGlzIHdhaXRpbmcgZm9y
IHRoZSBtYWluCisgICAgICAgIHRocmVhZCB0byBhY3R1YWxseSByZW5kZXIgdGhlIGN1cnJlbnQg
ZnJhbWUsIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgdGhlIG1haW4gdGhyZWFkIGlz
IHdhaXRpbmcgZm9yIHRoZSBHU3RyZWFtZXIgdmlkZW8gc2luayB0byBzaHV0IGRvd24sCisgICAg
ICAgIHJlc3VsdGluZyBpbiBhIGRlYWRsb2NrLgorCiAyMDE3LTEyLTE4ICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwbGUgUGF5XSBPbmx5IGluY2x1ZGUgcGhv
bmV0aWMgbmFtZSBwcm9wZXJ0aWVzIGluIEFwcGxlUGF5UGF5bWVudENvbnRhY3Qgd2hlbiB2ZXJz
aW9uID49IDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcAppbmRleCAzYWMzZGQyNjFjMS4uMzUxMTY0MTM0ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTc1OSw2
ICs3NTksOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnRyaWdnZXJS
ZXBhaW50KEdzdFNhbXBsZSogc2FtcGxlKQogCiAgICAgaWYgKCFtX3JlbmRlcmluZ0NhbkJlQWNj
ZWxlcmF0ZWQpIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kcmF3TXV0ZXgpOworICAg
ICAgICBpZiAobV9kcmF3Q2FuY2VsbGVkKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBt
X2RyYXdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKICAgICAgICAgbV9kcmF3Q29uZGl0aW9uLndh
aXQobV9kcmF3TXV0ZXgpOwogICAgICAgICByZXR1cm47CkBAIC03NzAsNiArNzcyLDggQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjp0cmlnZ2VyUmVwYWludChHc3RTYW1w
bGUqIHNhbXBsZSkKICNlbHNlCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9kcmF3
TXV0ZXgpOworICAgICAgICBpZiAobV9kcmF3Q2FuY2VsbGVkKQorICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpZiAoIW1fcGxhdGZvcm1MYXllclByb3h5LT5zY2hlZHVsZVVwZGF0ZU9uQ29t
cG9zaXRvclRocmVhZChbdGhpc10geyB0aGlzLT5wdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpOyB9
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9kcmF3Q29uZGl0aW9uLndhaXQobV9k
cmF3TXV0ZXgpOwpAQCAtNzg1LDExICs3ODksMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpyZXBhaW50Q2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWUK
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjYW5jZWxSZXBhaW50KCkK
IHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RyYXdNdXRleCk7CisKICAgICBpZiAoIW1fcmVu
ZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCkgewogICAgICAgICBtX2RyYXdUaW1lci5zdG9wKCk7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZHJhd011dGV4KTsKLSAgICAgICAgbV9kcmF3Q29u
ZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgIH0KKworICAgIG1fZHJhd0NhbmNlbGxlZCA9IHRydWU7
CisgICAgbV9kcmF3Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnJlcGFpbnRDYW5jZWxsZWRDYWxsYmFjayhNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA5MzFkODBiMTRkNy4uMDNmZWRlYTk3
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuaApAQCAtMjMxLDYgKzIzMSw3IEBAIHByb3RlY3RlZDoKIAogICAgIENvbmRpdGlvbiBtX2Ry
YXdDb25kaXRpb247CiAgICAgTG9jayBtX2RyYXdNdXRleDsKKyAgICBib29sIG1fZHJhd0NhbmNl
bGxlZCB7IGZhbHNlIH07CiAgICAgUnVuTG9vcDo6VGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZT4gbV9kcmF3VGltZXI7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0t
IAoyLjE1LjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>