<?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>133009</bug_id>
          
          <creation_ts>2014-05-16 14:20:53 -0700</creation_ts>
          <short_desc>Crash in JSC::Yarr::YarrGenerator&lt;(JSC::Yarr::YarrJITCompileMode)0&gt;::generatePatternCharacterFixed() due to WTF::CrashOnOverflow::overflowed + 9</short_desc>
          <delta_ts>2014-05-16 15:10:27 -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>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009845</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-05-16 14:20:53 -0700</bug_when>
    <thetext>Crashing in failed check in the Checked arithmetic class.

$ jsc
&gt;&gt;&gt; &apos;&apos;.match(/(,9111111111{2257483648,}[:lower:])|(ab)/)
1   0x10aa048c0 WTFCrash
2   0x10a241d29 WTF::CrashOnOverflow::overflowed()
3   0x10a9e4771 WTF::Checked&lt;int, WTF::CrashOnOverflow&gt;::Checked&lt;long long&gt;(WTF::Checked&lt;long long, WTF::CrashOnOverflow&gt; const&amp;)
4   0x10a9e436d WTF::Checked&lt;int, WTF::CrashOnOverflow&gt;::Checked&lt;long long&gt;(WTF::Checked&lt;long long, WTF::CrashOnOverflow&gt; const&amp;)
5   0x10a9ee042 JSC::Yarr::YarrGenerator&lt;(JSC::Yarr::YarrJITCompileMode)0&gt;::generatePatternCharacterFixed(unsigned long)
6   0x10a9ed1f2 JSC::Yarr::YarrGenerator&lt;(JSC::Yarr::YarrJITCompileMode)0&gt;::generateTerm(unsigned long)
7   0x10a9e73e7 JSC::Yarr::YarrGenerator&lt;(JSC::Yarr::YarrJITCompileMode)0&gt;::generate()
8   0x10a9d8c58 JSC::Yarr::YarrGenerator&lt;(JSC::Yarr::YarrJITCompileMode)0&gt;::compile(JSC::VM*, JSC::Yarr::YarrCodeBlock&amp;)
9   0x10a9d8742 JSC::Yarr::jitCompile(JSC::Yarr::YarrPattern&amp;, JSC::Yarr::YarrCharSize, JSC::VM*, JSC::Yarr::YarrCodeBlock&amp;, JSC::Yarr::YarrJITCompileMode)
10  0x10a9439b1 JSC::RegExp::compileMatchOnly(JSC::VM*, JSC::Yarr::YarrCharSize)
11  0x10a943b4d JSC::RegExp::compileIfNecessaryMatchOnly(JSC::VM&amp;, JSC::Yarr::YarrCharSize)
12  0x10a943bf3 JSC::RegExp::match(JSC::VM&amp;, WTF::String const&amp;, unsigned int)
13  0x10a94d817 JSC::RegExpConstructor::performMatch(JSC::VM&amp;, JSC::RegExp*, JSC::JSString*, WTF::String const&amp;, int)
14  0x10a97a172 JSC::stringProtoFuncMatch(JSC::ExecState*)
15  0x32ff95c01034
16  0x10a810bc7 llint_entry
17  0x10a80a3a4 callToJavaScript
18  0x10a6a64ed JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
19  0x10a68abd8 JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*)
20  0x10a3306a0 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*)
21  0x10a1ce3b3 runInteractive(GlobalObject*)
22  0x10a1cd3d3 jscmain(int, char**)
23  0x10a1cd181 main
24  0x7fff8afa55fd start
25  0x1
Segmentation fault: 11

Looks like a mix of int and unsigned in a checked integer expression to create an offset for an BaseIndex address.  The YARR JIT has an unhealthy mix of int and unsigned values to reference characters offset from its working pointer.  This will require some refactoring to get right.  A near term fix is to notice that a regular expression&apos;s offsets cannot be represented as a 32 bit integer and relegate them to the interpreter which can handle unsigned offsets.

&lt;rdar://problem/14326503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009867</commentid>
    <comment_count>1</comment_count>
      <attachid>231596</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-05-16 15:04:35 -0700</bug_when>
    <thetext>Created attachment 231596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009869</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-05-16 15:10:27 -0700</bug_when>
    <thetext>Committed r168983: &lt;http://trac.webkit.org/changeset/168983&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231596</attachid>
            <date>2014-05-16 15:04:35 -0700</date>
            <delta_ts>2014-05-16 15:07:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>133009.patch</filename>
            <type>text/plain</type>
            <size>5461</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY4OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE0LTA1LTE2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENyYXNoIGluIEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjwoSlNDOjpZYXJyOjpZYXJySklU
Q29tcGlsZU1vZGUpMD46OmdlbmVyYXRlUGF0dGVybkNoYXJhY3RlckZpeGVkKCkgZHVlIHRvIFdU
Rjo6Q3Jhc2hPbk92ZXJmbG93OjpvdmVyZmxvd2VkICsgOQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgd2UgZGV0ZXJtaW5lIHRoYXQgYW55IGFsdGVy
bmF0aXZlIHJlcXVpcmVzIGEgbWludW11bSBtYXRjaCBzaXplIGdyZWF0ZXIgdGhhbgorICAgICAg
ICBJTlRfTUFYLCB3ZSBoYW5kbGUgdGhlIG1hdGNoIGluIHRoZSBpbnRlcnByZXRlci4KKworICAg
ICAgICBDaGVjayB0byBzZWUgaWYgdGhlIHBhdHRlcm4gaGFzIHVuc2lnbmVkIGxlbmd0aHMgYmVm
b3JlIGludm9raW5nIFlBUlIgSklULgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNwcDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21w
aWxlTWF0Y2hPbmx5KToKKworICAgICAgICAqIHRlc3RzL3N0cmVzcy9sYXJnZS1yZWdleHAuanM6
IE5ldyB0ZXN0IGFkZGVkLgorCisgICAgICAgIFNldCBtX2NvbnRhaW5zVW5zaWduZWRMZW5ndGhQ
YXR0ZXJuIGZsYWcgaWYgYW55IGFsdGVybmF0aXZlJ3MgbWluaW11bSBsZW5ndGgKKyAgICAgICAg
ZG9lc24ndCBmaXQgaW4gYW4gaW50LgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpzZXR1cERpc2p1bmN0
aW9uT2Zmc2V0cyk6CisKKyAgICAgICAgQ2xlYXIgbmV3IG1fY29udGFpbnNVbnNpZ25lZExlbmd0
aFBhdHRlcm4gZmxhZy4KKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm46OllhcnJQYXR0ZXJuKToKKyAgICAgICAgKiB5YXJyL1lh
cnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpyZXNldCk6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuOjpjb250YWluc1Vuc2lnbmVkTGVuZ3RoUGF0
dGVybik6CisKIDIwMTQtMDUtMTUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxl
LmNvbT4KIAogICAgICAgICBKU0RPTVdpbmRvdyBzaG91bGQgbm90IGNsYWltIEhhc0ltcHVyZUdl
dE93blByb3BlcnR5U2xvdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuY3BwCShyZXZpc2lvbiAxNjg5NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBSZWdF
eHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJyOjpZYXJyQwogICAgIH0KIAogI2lmIEVOQUJMRShZQVJS
X0pJVCkKLSAgICBpZiAoIXBhdHRlcm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIHZtLT5j
YW5Vc2VSZWdFeHBKSVQoKSkgeworICAgIGlmICghcGF0dGVybi5tX2NvbnRhaW5zQmFja3JlZmVy
ZW5jZXMgJiYgIXBhdHRlcm4uY29udGFpbnNVbnNpZ25lZExlbmd0aFBhdHRlcm4oKSAmJiB2bS0+
Y2FuVXNlUmVnRXhwSklUKCkpIHsKICAgICAgICAgWWFycjo6aml0Q29tcGlsZShwYXR0ZXJuLCBj
aGFyU2l6ZSwgdm0sIG1fcmVnRXhwSklUQ29kZSk7CiAjaWYgRU5BQkxFKFlBUlJfSklUX0RFQlVH
KQogICAgICAgICBpZiAoIW1fcmVnRXhwSklUQ29kZS5pc0ZhbGxCYWNrKCkpCkBAIC00MDgsNyAr
NDA4LDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYQogICAgIH0K
IAogI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICBpZiAoIXBhdHRlcm4ubV9jb250YWluc0JhY2ty
ZWZlcmVuY2VzICYmIHZtLT5jYW5Vc2VSZWdFeHBKSVQoKSkgeworICAgIGlmICghcGF0dGVybi5t
X2NvbnRhaW5zQmFja3JlZmVyZW5jZXMgJiYgIXBhdHRlcm4uY29udGFpbnNVbnNpZ25lZExlbmd0
aFBhdHRlcm4oKSAmJiB2bS0+Y2FuVXNlUmVnRXhwSklUKCkpIHsKICAgICAgICAgWWFycjo6aml0
Q29tcGlsZShwYXR0ZXJuLCBjaGFyU2l6ZSwgdm0sIG1fcmVnRXhwSklUQ29kZSwgWWFycjo6TWF0
Y2hPbmx5KTsKICNpZiBFTkFCTEUoWUFSUl9KSVRfREVCVUcpCiAgICAgICAgIGlmICghbV9yZWdF
eHBKSVRDb2RlLmlzRmFsbEJhY2soKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvbGFyZ2UtcmVnZXhwLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvbGFyZ2UtcmVnZXhwLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9sYXJnZS1yZWdleHAuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMSBAQAoraWYgKCcnLm1hdGNoKC8oLDkxMTExMTExMTF7MjI1NzQ4MzY0
OCx9Wzpsb3dlcjpdKXwoYWIpLykpCisgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgcmVz
dWx0LCBzaG91bGQgbm90IGhhdmUgbWF0Y2hlZCIpCisKK2lmICgnJy5tYXRjaCgvKDF7MSwyMTQ3
NDgzNjQ4fSl8KGFiKS8pKQorICAgIHRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IHJlc3VsdCwg
c2hvdWxkIG5vdCBoYXZlIG1hdGNoZWQiKQorCitpZiAoJycubWF0Y2goLygxezIxNDc0ODAwMDAs
fTJ7MzY0OCx9KXwoYWIpLykpCisgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3QgcmVzdWx0
LCBzaG91bGQgbm90IGhhdmUgbWF0Y2hlZCIpCisKK2lmICghJzEyMzQnLm1hdGNoKC8xezEsMjE0
NzQ4MzY0NX0yezEsMjE0NzQ4MzY0NX0zezEsMjE0NzQ4MzY0NX00ezEsMjE0NzQ4MzY0NX0vKSkK
KyAgICB0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCByZXN1bHQsIHNob3VsZCBoYXZlIG1hdGNo
ZWQiKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAko
cmV2aXNpb24gMTY4OTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRl
cm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjYsNiArNjY2LDggQEAgcHVibGljOgogICAgICAg
ICAgICAgbWluaW11bUlucHV0U2l6ZSA9IHN0ZDo6bWluKG1pbmltdW1JbnB1dFNpemUsIGFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplKTsKICAgICAgICAgICAgIG1heGltdW1DYWxsRnJhbWVTaXpl
ID0gc3RkOjptYXgobWF4aW11bUNhbGxGcmFtZVNpemUsIGN1cnJlbnRBbHRlcm5hdGl2ZUNhbGxG
cmFtZVNpemUpOwogICAgICAgICAgICAgaGFzRml4ZWRTaXplICY9IGFsdGVybmF0aXZlLT5tX2hh
c0ZpeGVkU2l6ZTsKKyAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSA+
IElOVF9NQVgpCisgICAgICAgICAgICAgICAgbV9wYXR0ZXJuLm1fY29udGFpbnNVbnNpZ25lZExl
bmd0aFBhdHRlcm4gPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBBU1NFUlQo
bWluaW11bUlucHV0U2l6ZSAhPSBVSU5UX01BWCk7CkBAIC04NjQsNiArODY2LDcgQEAgWWFyclBh
dHRlcm46OllhcnJQYXR0ZXJuKGNvbnN0IFN0cmluZyYgcAogICAgICwgbV9tdWx0aWxpbmUobXVs
dGlsaW5lKQogICAgICwgbV9jb250YWluc0JhY2tyZWZlcmVuY2VzKGZhbHNlKQogICAgICwgbV9j
b250YWluc0JPTChmYWxzZSkKKyAgICAsIG1fY29udGFpbnNVbnNpZ25lZExlbmd0aFBhdHRlcm4o
ZmFsc2UpCiAgICAgLCBtX251bVN1YnBhdHRlcm5zKDApCiAgICAgLCBtX21heEJhY2tSZWZlcmVu
Y2UoMCkKICAgICAsIG5ld2xpbmVDYWNoZWQoMCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24gMTY4OTc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMxMiw3
IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAKICAgICAgICAgbV9jb250YWluc0JhY2tyZWZlcmVu
Y2VzID0gZmFsc2U7CiAgICAgICAgIG1fY29udGFpbnNCT0wgPSBmYWxzZTsKKyAgICAgICAgbV9j
b250YWluc1Vuc2lnbmVkTGVuZ3RoUGF0dGVybiA9IGZhbHNlOwogCiAgICAgICAgIG5ld2xpbmVD
YWNoZWQgPSAwOwogICAgICAgICBkaWdpdHNDYWNoZWQgPSAwOwpAQCAtMzMwLDYgKzMzMSwxMSBA
QCBzdHJ1Y3QgWWFyclBhdHRlcm4gewogICAgICAgICByZXR1cm4gbV9tYXhCYWNrUmVmZXJlbmNl
ID4gbV9udW1TdWJwYXR0ZXJuczsKICAgICB9CiAKKyAgICBib29sIGNvbnRhaW5zVW5zaWduZWRM
ZW5ndGhQYXR0ZXJuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbnRhaW5zVW5zaWduZWRM
ZW5ndGhQYXR0ZXJuOworICAgIH0KKwogICAgIENoYXJhY3RlckNsYXNzKiBuZXdsaW5lQ2hhcmFj
dGVyQ2xhc3MoKQogICAgIHsKICAgICAgICAgaWYgKCFuZXdsaW5lQ2FjaGVkKQpAQCAtMzc3LDYg
KzM4Myw3IEBAIHN0cnVjdCBZYXJyUGF0dGVybiB7CiAgICAgYm9vbCBtX211bHRpbGluZSA6IDE7
CiAgICAgYm9vbCBtX2NvbnRhaW5zQmFja3JlZmVyZW5jZXMgOiAxOwogICAgIGJvb2wgbV9jb250
YWluc0JPTCA6IDE7CisgICAgYm9vbCBtX2NvbnRhaW5zVW5zaWduZWRMZW5ndGhQYXR0ZXJuIDog
MTsgCiAgICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJuczsKICAgICB1bnNpZ25lZCBtX21heEJh
Y2tSZWZlcmVuY2U7CiAgICAgUGF0dGVybkRpc2p1bmN0aW9uKiBtX2JvZHk7Cg==
</data>
<flag name="review"
          id="256046"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>