<?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>27947</bug_id>
          
          <creation_ts>2009-08-03 11:36:30 -0700</creation_ts>
          <short_desc>A bug in SQLiteTransaction can lead to a failed ASSERT</short_desc>
          <delta_ts>2009-08-03 16:00:11 -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>All</rep_platform>
          <op_sys>All</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="Dumitru Daniliuc">dumi</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>136722</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-03 11:36:30 -0700</bug_when>
    <thetext>SQLiteTransaction::begin() sets m_db.m_transactionInProgress to true even if m_db.executeCommand(&quot;BEGIN;&quot;) fails. This can lead to an ASSERT failing incorrectly in SQLTransaction::openTransaction() (steps 1 + 2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136740</commentid>
    <comment_count>1</comment_count>
      <attachid>33997</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-03 12:28:17 -0700</bug_when>
    <thetext>Created attachment 33997
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136747</commentid>
    <comment_count>2</comment_count>
      <attachid>33997</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-03 12:46:27 -0700</bug_when>
    <thetext>Comment on attachment 33997
patch

Seems fine. Is there any way to make a regression test for this? Under what circumstances will the BEGIN command fail?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136749</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-03 12:56:11 -0700</bug_when>
    <thetext>Should we need another assert after BEGIN. This shouldn&apos;t be happening normally, right?

It seems like we should be doing something more than just reporting !inProgress in these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136765</commentid>
    <comment_count>4</comment_count>
      <attachid>34000</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-03 13:44:22 -0700</bug_when>
    <thetext>Created attachment 34000
test case

(In reply to comment #2)
&gt; (From update of attachment 33997 [details])
&gt; Seems fine. Is there any way to make a regression test for this? Under what
&gt; circumstances will the BEGIN command fail?
&gt; 
&gt; r=me

BEGIN seems to fail if the same DB thread tries to run 2 transactions in 2 different Database objects that point to the same DB file. I attached the example we used.

I don&apos;t have a detailed explanation for what&apos;s going on yet -- we think there&apos;s a race condition here and I&apos;m still debugging it (details + patch to come in a future bug). However, always setting m_db.m_transactionInProgress to true seems wrong and leads to crashes in Chromium&apos;s and Safari&apos;s debug builds (you might have to click the &quot;Test&quot; button a couple of times). So I thought it wouldn&apos;t hurt to submit a quick patch for this before we&apos;re done investigating the bigger issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136820</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-03 16:00:11 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/46736.

Please create a bug for tracking the origin of the issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33997</attachid>
            <date>2009-08-03 12:28:17 -0700</date>
            <delta_ts>2009-08-03 12:46:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>1993</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjcyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDgtMDMgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggYSBidWcgdGhhdCBjb3VsZCBjYXVzZSBhbiBBU1NFUlQgdG8gZmFpbCBpbmNvcnJlY3Rs
eSwgbGVhZGluZworICAgICAgICB0byBhIHJlbmRlcmVyIGNyYXNoIGluIENocm9taXVtLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk0NworCisg
ICAgICAgIEFsbCB0ZXN0cyBpbiBzdG9yYWdlLyBwYXNzLgorCisgICAgICAgICogcGxhdGZvcm0v
c3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVRyYW5z
YWN0aW9uOjp+U1FMaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlVHJh
bnNhY3Rpb246OmJlZ2luKToKKwogMjAwOS0wOC0wMyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNDY3MjYpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgpAQCAtMzgsMTYgKzM4LDE2IEBAIFNRTGl0ZVRyYW5zYWN0aW9uOjpTUUxpdGVUcmFu
c2FjdGlvbihTUUwKIAogU1FMaXRlVHJhbnNhY3Rpb246On5TUUxpdGVUcmFuc2FjdGlvbigpCiB7
Ci0gICAgaWYgKG1faW5Qcm9ncmVzcykgCisgICAgaWYgKG1faW5Qcm9ncmVzcykKICAgICAgICAg
cm9sbGJhY2soKTsKIH0KLSAgICAKKwogdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4oKQog
ewogICAgIGlmICghbV9pblByb2dyZXNzKSB7CiAgICAgICAgIEFTU0VSVCghbV9kYi5tX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzcyk7CiAgICAgICAgIG1faW5Qcm9ncmVzcyA9IG1fZGIuZXhlY3V0ZUNv
bW1hbmQoIkJFR0lOOyIpOwotICAgICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0g
dHJ1ZTsKKyAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1faW5Qcm9ncmVz
czsKICAgICB9CiB9CiAKQEAgLTc2LDUgKzc2LDUgQEAgdm9pZCBTUUxpdGVUcmFuc2FjdGlvbjo6
c3RvcCgpCiAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7CiAgICAgbV9kYi5tX3RyYW5zYWN0aW9u
SW5Qcm9ncmVzcyA9IGZhbHNlOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="18164"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34000</attachid>
            <date>2009-08-03 13:44:22 -0700</date>
            <delta_ts>2009-08-03 13:44:22 -0700</delta_ts>
            <desc>test case</desc>
            <filename>db_test.html</filename>
            <type>text/html</type>
            <size>1594</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5UZXN0aW5nIDIgREIgb2JqZWN0cyBmb3IgdGhlIHNhbWUg
ZGF0YWJhc2U8L3RpdGxlPg0KPHNjcmlwdD4NCmZ1bmN0aW9uIGNyZWF0ZSgpIHsNCiAgdHJ5IHsN
CiAgICB2YXIgZGIgPSBvcGVuRGF0YWJhc2UoIlRlc3REQiIsICIxLjAiLCAiVGVzdCBEQiIsIDEw
MDAwMCk7DQogICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsNCiAgICAgICAgdHguZXhl
Y3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIFRlc3QgKEZvbyBpbnQpOyIsIFtdLA0KICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKHJlc3VsdCkge30sIGZ1bmN0aW9uKHR4LCBlcnJvcikge30pOw0K
ICAgICAgICB9KTsNCiAgfSBjYXRjaChlcnIpIHt9DQp9DQoNCmZ1bmN0aW9uIHRlc3QoKSB7DQog
IHZhciBkYjEsIGRiMjsNCiAgdHJ5IHsNCiAgICBkYjEgPSBvcGVuRGF0YWJhc2UoIlRlc3REQiIs
ICIxLjAiLCAiVGVzdCBEQiIsIDEwMDAwMCk7DQogICAgZGIyID0gb3BlbkRhdGFiYXNlKCJUZXN0
REIiLCAiMS4wIiwgIlRlc3QgREIiLCAxMDAwMDApOw0KDQogICAgaWYgKGRiMSA9PSBkYjIpIHsN
CiAgICAgIGFsZXJ0KCJkYjEgPT0gZGIyIik7DQogICAgfSBlbHNlIHsNCiAgICAgIGRiMS50cmFu
c2FjdGlvbihmdW5jdGlvbih0eCkgew0KICAgICAgICAgIHR4LmV4ZWN1dGVTcWwoIlNFTEVDVCBD
T1VOVCgqKSBGUk9NIFRlc3Q7IiwgW10sDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bihyZXN1bHQpIHt9LA0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odHgsIGVycm9y
KSB7IGFsZXJ0KGVycm9yLm1lc3NhZ2UpOyB9KTsNCiAgICAgICAgICB0eC5leGVjdXRlU3FsKCJJ
TlNFUlQgSU5UTyBUZXN0IFZBTFVFUyAoMSk7IiwgW10sDQogICAgICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbihyZXN1bHQpIHsgYWxlcnQoIjEiKTsgfSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKHR4LCBlcnJvcikgeyBhbGVydChlcnJvci5tZXNzYWdlKTsgfSk7DQogICAg
ICAgICAgfSk7DQogICAgICBkYjIudHJhbnNhY3Rpb24oZnVuY3Rpb24odHgpIHsNCiAgICAgICAg
ICB0eC5leGVjdXRlU3FsKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBUZXN0OyIsIFtdLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ocmVzdWx0KSB7fSwNCiAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKHR4LCBlcnJvcikgeyBhbGVydChlcnJvci5tZXNzYWdlKTsgfSk7DQog
ICAgICAgICAgdHguZXhlY3V0ZVNxbCgiSU5TRVJUIElOVE8gVGVzdCBWQUxVRVMgKDIpOyIsIFtd
LA0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ocmVzdWx0KSB7IGFsZXJ0KCIyIik7
IH0sDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih0eCwgZXJyb3IpIHsgYWxlcnQo
ZXJyb3IubWVzc2FnZSk7IH0pOw0KICAgICAgICAgIH0pOw0KICAgIH0NCiAgfSBjYXRjaChlcnIp
IHt9DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IG9ubG9hZD0iY3JlYXRlKCkiPg0KPGJ1
dHRvbiBvbmNsaWNrPSJ0ZXN0KCkiPlRlc3Q8L2J1dHRvbj4NCjwvYm9keT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>