<?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>130395</bug_id>
          
          <creation_ts>2014-03-18 07:04:45 -0700</creation_ts>
          <short_desc>[GTK] Race condition when the socket event source is cancelled</short_desc>
          <delta_ts>2014-03-18 08:03:26 -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>WebKit2</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>csaavedra</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991646</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-18 07:04:45 -0700</bug_when>
    <thetext>In some cases when the socket event source is cancelled the socket event source callback is called with the condition of the previous poll instead of 0. This can happen sometimes when the source is cancelled from the socket event source callback. Once the socket event source is cancelled, it&apos;s dispatched by glib without polling, so the condition is never reset again and the callback is called again and again with the previous condition. When the condition is G_IO_IN, the source is re-scheduled entering into an infinite loop. We should always check if the source has been cancelled at the beginning of the callback to destroy the source instead of relying on the condition being 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991647</commentid>
    <comment_count>1</comment_count>
      <attachid>227046</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-18 07:06:46 -0700</bug_when>
    <thetext>Created attachment 227046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991665</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-18 08:03:26 -0700</bug_when>
    <thetext>Committed r165812: &lt;http://trac.webkit.org/changeset/165812&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227046</attachid>
            <date>2014-03-18 07:06:46 -0700</date>
            <delta_ts>2014-03-18 07:59:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-socket-event-source-cancelled.diff</filename>
            <type>text/plain</type>
            <size>2600</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3MzNhZDUwLi5jYzQ3MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTQtMDMtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFJhY2UgY29uZGl0aW9uIHdoZW4gdGhlIHNvY2tldCBldmVudCBz
b3VyY2UgaXMgY2FuY2VsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzAzOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiBzb21lIGNhc2VzIHdoZW4gdGhlIHNvY2tldCBldmVudCBzb3VyY2UgaXMg
Y2FuY2VsbGVkIHRoZSBzb2NrZXQKKyAgICAgICAgZXZlbnQgc291cmNlIGNhbGxiYWNrIGlzIGNh
bGxlZCB3aXRoIHRoZSBjb25kaXRpb24gb2YgdGhlIHByZXZpb3VzCisgICAgICAgIHBvbGwgaW5z
dGVhZCBvZiAwLiBUaGlzIGNhbiBoYXBwZW4gc29tZXRpbWVzIHdoZW4gdGhlIHNvdXJjZSBpcwor
ICAgICAgICBjYW5jZWxsZWQgZnJvbSB0aGUgc29ja2V0IGV2ZW50IHNvdXJjZSBjYWxsYmFjay4g
T25jZSB0aGUgc29ja2V0CisgICAgICAgIGV2ZW50IHNvdXJjZSBpcyBjYW5jZWxsZWQsIGl0J3Mg
ZGlzcGF0Y2hlZCBieSBnbGliIHdpdGhvdXQKKyAgICAgICAgcG9sbGluZywgc28gdGhlIGNvbmRp
dGlvbiBpcyBuZXZlciByZXNldCBhZ2FpbiBhbmQgdGhlIGNhbGxiYWNrIGlzCisgICAgICAgIGNh
bGxlZCBhZ2FpbiBhbmQgYWdhaW4gd2l0aCB0aGUgcHJldmlvdXMgY29uZGl0aW9uLiBXaGVuIHRo
ZQorICAgICAgICBjb25kaXRpb24gaXMgR19JT19JTiwgdGhlIHNvdXJjZSBpcyByZS1zY2hlZHVs
ZWQgZW50ZXJpbmcgaW50byBhbgorICAgICAgICBpbmZpbml0ZSBsb29wLiBXZSBzaG91bGQgYWx3
YXlzIGNoZWNrIGlmIHRoZSBzb3VyY2UgaGFzIGJlZW4KKyAgICAgICAgY2FuY2VsbGVkIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGNhbGxiYWNrIHRvIGRlc3Ryb3kgdGhlIHNvdXJjZQorICAgICAg
ICBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGNvbmRpdGlvbiBiZWluZyAwLgorCisgICAgICAg
ICogUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OlNv
Y2tldEV2ZW50U291cmNlOjppc0NhbmNlbGxlZCk6CisgICAgICAgIChXb3JrUXVldWU6OlNvY2tl
dEV2ZW50U291cmNlOjpldmVudENhbGxiYWNrKToKKwogMjAxNC0wMy0xOCAgQ3NhYmEgT3N6dHJv
Z29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtHVEtdIFVSVEZCIGFmdGVyIHIx
NjU3ODkuIFN0dWIgZnVuY3Rpb24gYWRkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0
ay9Xb3JrUXVldWVHdGsuY3BwCmluZGV4IGQ0ZDU2NWIuLmFlMDNjNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCkBAIC04NywxMSArODcsMjEgQEAg
cHVibGljOgogICAgICAgICBtX2Nsb3NlRnVuY3Rpb24oKTsKICAgICB9CiAKKyAgICBib29sIGlz
Q2FuY2VsbGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBnX2NhbmNlbGxhYmxlX2lz
X2NhbmNlbGxlZChtX2NhbmNlbGxhYmxlKTsKKyAgICB9CisKICAgICBzdGF0aWMgZ2Jvb2xlYW4g
ZXZlbnRDYWxsYmFjayhHU29ja2V0KiwgR0lPQ29uZGl0aW9uIGNvbmRpdGlvbiwgU29ja2V0RXZl
bnRTb3VyY2UqIGV2ZW50U291cmNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGV2ZW50U291cmNl
KTsKIAotICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19IVVAgfHwgY29uZGl0aW9uICYgR19J
T19FUlIpIHsKKyAgICAgICAgaWYgKGV2ZW50U291cmNlLT5pc0NhbmNlbGxlZCgpKSB7CisgICAg
ICAgICAgICAvLyBFdmVudFNvdXJjZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJldHVybiBGQUxTRSB0
byBkZXN0cm95IHRoZSBzb3VyY2UuCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19IVVAgfHwgY29uZGl0aW9uICYgR19J
T19FUlIgfHwgY29uZGl0aW9uICYgR19JT19OVkFMKSB7CiAgICAgICAgICAgICBldmVudFNvdXJj
ZS0+ZGlkQ2xvc2UoKTsKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgfQpAQCAt
MTAxLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gRXZlbnRTb3VyY2UgaGFzIGJlZW4gY2FuY2VsbGVkLCByZXR1cm4g
RkFMU0UgdG8gZGVzdHJveSB0aGUgc291cmNlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIAo=
</data>
<flag name="review"
          id="251270"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>