<?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>177293</bug_id>
          
          <creation_ts>2017-09-21 01:02:27 -0700</creation_ts>
          <short_desc>[Win64] Crashes in Yarr JIT compiled code</short_desc>
          <delta_ts>2017-09-27 12:21:32 -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>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="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1351151</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2017-09-21 01:02:27 -0700</bug_when>
    <thetext>[Win64] Crashes in Yarr JIT compiled code

WinCairo port, 64bitk, Debug build, trunk@222298, MiniBrowser

1) Start MiniBrowser
2) Load http://google.com/
3) Crash

Callstack:

&gt; 000001c500001b61()	Unknown
&gt; 0000003c51cfc6b0()	Unknown
&gt; JavaScriptCore.dll!JSC::Yarr::YarrCodeBlock::execute(const unsigned char * input, unsigned int start, unsigned int length, int * output) Line 87	C++
&gt; JavaScriptCore.dll!JSC::RegExp::matchInline&lt;WTF::Vector&lt;int,32,WTF::CrashOnOverflow,16,WTF::FastMalloc&gt; &gt;(JSC::VM &amp; vm, const WTF::String &amp; s, unsigned int startOffset, WTF::Vector&lt;int,32,WTF::CrashOnOverflow,16,WTF::FastMalloc&gt; &amp; ovector) Line 115	C++
&gt; JavaScriptCore.dll!JSC::createRegExpMatchesArray(JSC::VM &amp; vm, JSC::JSGlobalObject * globalObject, JSC::JSString * input, const WTF::String &amp; inputValue, JSC::RegExp * regExp, unsigned int startOffset, JSC::MatchResult &amp; result) Line 66	C++
&gt; JavaScriptCore.dll!JSC::RegExpObject::execInline(JSC::ExecState * exec, JSC::JSGlobalObject * globalObject, JSC::JSString * string) Line 86	C++
&gt; JavaScriptCore.dll!JSC::RegExpObject::exec(JSC::ExecState * exec, JSC::JSGlobalObject * globalObject, JSC::JSString * string) Line 170	C++
&gt; JavaScriptCore.dll!JSC::regExpProtoFuncExec(JSC::ExecState * exec) Line 130	C++
&gt; [External Code]	


code:

&gt; 000002293D8B1A22  xor         ecx,ecx  
&gt; 000002293D8B1A24  cmp         r8d,r9d  
&gt; 000002293D8B1A27  je          000002293D8B1A51  
&gt; 000002293D8B1A2D  movzx       eax,byte ptr [rdx+r8]  
&gt; 000002293D8B1A32  mov         r11,7FFB5E1BAF00h  
&gt; 000002293D8B1A3C  cmp         byte ptr [r11+rax],0  
&gt; 000002293D8B1A41  jne         000002293D8B1A51  
&gt; 000002293D8B1A47  inc         r8d  
&gt; 000002293D8B1A4A  inc         ecx  
&gt; 000002293D8B1A4C  jmp         000002293D8B1A24  
&gt; 000002293D8B1A51  mov         qword ptr [rsp+8],rcx  
&gt; 000002293D8B1A56  mov         dword ptr [r10+0Ch],r8d  
&gt; 000002293D8B1A5A  add         rsp,40h  
&gt; 000002293D8B1A5E  mov         eax,dword ptr [r10]  
&gt; 000002293D8B1A61  mov         dword ptr [r10+4],r8d  
&gt; 000002293D8B1A65  mov         rdx,r8  
&gt; 000002293D8B1A68  mov         r11,2297D942110h  
&gt; 000002293D8B1A72  mov         byte ptr [r11],0  
&gt; 000002293D8B1A76  mov         qword ptr [rcx],rax          &lt;==rip
&gt; 000002293D8B1A79  mov         qword ptr [rcx+8],rdx  
&gt; 000002293D8B1A7D  mov         rax,rcx  
&gt; 000002293D8B1A80  pop         rbp  
&gt; 000002293D8B1A81  ret  

registers:

&gt; RAX = 000000000000002E RBX = 0000000000000001 RCX = 0000000000000004 RDX = 000000000000003A
&gt; RSI = 0000004559FEC490 RDI = 0000004559FEBF58 R8  = 000000000000003A R9  = 000000000000004E
&gt; R10 = 0000004559FEC060 R11 = 000002297D942110 R12 = 00000000003405FA R13 = 000002290223E4A8
&gt; R14 = FFFF000000000000 R15 = FFFF000000000002
&gt; RIP = 000002293D8B1A76 RSP = 0000004559FEBEE0 RBP = 0000004559FEBEE0 EFL = 00010202 


This is the code generated by generateReturn().
rcx was 0x4. But, it should be the address where the return values are stored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351152</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2017-09-21 01:06:53 -0700</bug_when>
    <thetext>I can avoid this annoying crash by setting a env var.

&gt; set JSC_useRegExpJIT=0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351153</commentid>
    <comment_count>2</comment_count>
      <attachid>321415</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2017-09-21 01:45:36 -0700</bug_when>
    <thetext>Created attachment 321415
WIP patch

I don&apos;t know how to fix correctly. This WIP patch just saves rcx.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351550</commentid>
    <comment_count>3</comment_count>
      <attachid>321415</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-21 23:08:22 -0700</bug_when>
    <thetext>Comment on attachment 321415
WIP patch

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

Looks good to me.
Could you upload the patch with ChangeLog and test?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:2855
&gt; +        push(X86Registers::ecx);

It would be good to add comment here that it is the pointer to the result in x64 Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351559</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2017-09-22 00:39:04 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Looks good to me.
&gt; Could you upload the patch with ChangeLog and test?

Thank you for your feedback.
I don&apos;t think a new test is needed because existing LayoutTests (ex. js/string_replace_regexp.html) can reproduce the crash.
I will create a patch.

&gt; &gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:2855
&gt; &gt; +        push(X86Registers::ecx);
&gt; 
&gt; It would be good to add comment here that it is the pointer to the result in
&gt; x64 Windows.

Agreed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351565</commentid>
    <comment_count>5</comment_count>
      <attachid>321525</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2017-09-22 00:59:01 -0700</bug_when>
    <thetext>Created attachment 321525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351571</commentid>
    <comment_count>6</comment_count>
      <attachid>321525</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-22 01:26:11 -0700</bug_when>
    <thetext>Comment on attachment 321525
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351572</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-22 01:28:33 -0700</bug_when>
    <thetext>BTW, I&apos;m not sure why MatchResult needs 128 bytes in 64bit environments.
Do we really need size_t? I guess we can use `unsigned` pair for this since the length of StringImpl is unsigned. But this is just my guess.
Anyway, the above refactoring is separated from this patch. I&apos;m ok to land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351584</commentid>
    <comment_count>8</comment_count>
      <attachid>321525</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-22 02:26:41 -0700</bug_when>
    <thetext>Comment on attachment 321525
Patch

Rejecting attachment 321525 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 321525, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
d/mechanize/_urllib2_fork.py&quot;, line 332, in _call_chain
    result = func(*args)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1170, in https_open
    return self.do_open(conn_factory, req)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1118, in do_open
    raise URLError(err)
urllib2.URLError: &lt;urlopen error (&apos;_ssl.c:574: The handshake operation timed out&apos;,)&gt;

Full output: http://webkit-queues.webkit.org/results/4625938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351896</commentid>
    <comment_count>9</comment_count>
      <attachid>321525</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-22 17:27:55 -0700</bug_when>
    <thetext>Comment on attachment 321525
Patch

Clearing flags on attachment: 321525

Committed r222417: &lt;http://trac.webkit.org/changeset/222417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351897</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-22 17:27:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353327</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:21:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693120&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321415</attachid>
            <date>2017-09-21 01:45:36 -0700</date>
            <delta_ts>2017-09-22 00:58:56 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug177293-save-rcx.patch</filename>
            <type>text/plain</type>
            <size>924</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggYzBkMTZiMDFmNzUuLjU4
MmRmYjdlMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMjg1
Miw2ICsyODUyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogI2lmIE9TKFdJTkRPV1MpCiAgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNsdWRl
U3VicGF0dGVybnMpCiAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjpl
YnAsIDYgKiBzaXplb2Yodm9pZCopKSwgb3V0cHV0KTsKKyAgICAgICAgcHVzaChYODZSZWdpc3Rl
cnM6OmVjeCk7CiAjZW5kaWYKICNlbGlmIENQVShYODYpCiAgICAgICAgIHB1c2goWDg2UmVnaXN0
ZXJzOjplYnApOwpAQCAtMjkwMSw2ICsyOTAyLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2lmIENQVShYODZfNjQpCiAjaWYgT1MoV0lORE9XUykK
ICAgICAgICAgLy8gU3RvcmUgdGhlIHJldHVybiB2YWx1ZSBpbiB0aGUgYWxsb2NhdGVkIHNwYWNl
IHBvaW50ZWQgYnkgcmN4LgorICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplY3gpOwogICAgICAg
ICBzdG9yZTY0KHJldHVyblJlZ2lzdGVyLCBBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4KSk7CiAg
ICAgICAgIHN0b3JlNjQocmV0dXJuUmVnaXN0ZXIyLCBBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZWN4
LCBzaXplb2Yodm9pZCopKSk7CiAgICAgICAgIG1vdmUoWDg2UmVnaXN0ZXJzOjplY3gsIHJldHVy
blJlZ2lzdGVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321525</attachid>
            <date>2017-09-22 00:59:01 -0700</date>
            <delta_ts>2017-09-22 17:27:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177293-20170922165859.patch</filename>
            <type>text/plain</type>
            <size>2015</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NTcyYzVkZTAzZTI1ZjFlMDBjMmZjMDlhYWViZWZiMTY1ZTk2ZjUzLi4yODQ0NDU4ZDgxYTc4ZTky
NzJkYjZiNTNiY2Y3OTg4ZjdlMjUwMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0wOS0yMiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KKworICAgICAgICBbV2luNjRdIENyYXNoZXMgaW4gWWFyciBKSVQgY29tcGlsZWQg
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3
MjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
eDY0IFdpbmRvd3MsIHJjeCByZWdpc3RlciBpcyB1c2VkIGZvciB0aGUgYWRkcmVzcyBvZiBhbGxv
Y2F0ZWQKKyAgICAgICAgc3BhY2UgZm9yIHRoZSByZXR1cm4gdmFsdWUuIEJ1dCwgcmN4IGlzIHVz
ZWQgZm9yIHJlZ1QxIHNpbmNlCisgICAgICAgIHIyMjEwNTIuIFNhdmUgcmN4IGluIHRoZSBzdGFj
ay4KKworICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6Ollh
cnJHZW5lcmF0b3I6OmdlbmVyYXRlRW50ZXIpOiBQdXNoIGVjeC4KKyAgICAgICAgKEpTQzo6WWFy
cjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGVSZXR1cm4pOiBQb3AgZWN4LgorCiAyMDE3LTA5LTIx
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogUmVtb3ZlIHN1cHBvcnQgZm9yIENTUyBSZWdpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IGMwZDE2YjAxZjc1MDE2Mjg2NzFjNjk5MmIwNzk4M2I0
MDFlOWQ4ZGYuLjExMDIxZGU0YWUyOGYwYTRiNDIzNTM4NzkzNWRjYmI2MWFjZTg5NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0yODUyLDYgKzI4NTIsOCBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAjaWYgT1MoV0lO
RE9XUykKICAgICAgICAgaWYgKGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykKICAg
ICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhYODZSZWdpc3RlcnM6OmVicCwgNiAqIHNpemVvZih2
b2lkKikpLCBvdXRwdXQpOworICAgICAgICAvLyByY3ggaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGFs
bG9jYXRlZCBzcGFjZSBmb3IgcmVzdWx0IGluIHg2NCBXaW5kb3dzLgorICAgICAgICBwdXNoKFg4
NlJlZ2lzdGVyczo6ZWN4KTsKICNlbmRpZgogI2VsaWYgQ1BVKFg4NikKICAgICAgICAgcHVzaChY
ODZSZWdpc3RlcnM6OmVicCk7CkBAIC0yOTAxLDYgKzI5MDMsNyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAjaWYgQ1BVKFg4Nl82NCkKICNpZiBPUyhX
SU5ET1dTKQogICAgICAgICAvLyBTdG9yZSB0aGUgcmV0dXJuIHZhbHVlIGluIHRoZSBhbGxvY2F0
ZWQgc3BhY2UgcG9pbnRlZCBieSByY3guCisgICAgICAgIHBvcChYODZSZWdpc3RlcnM6OmVjeCk7
CiAgICAgICAgIHN0b3JlNjQocmV0dXJuUmVnaXN0ZXIsIEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjpl
Y3gpKTsKICAgICAgICAgc3RvcmU2NChyZXR1cm5SZWdpc3RlcjIsIEFkZHJlc3MoWDg2UmVnaXN0
ZXJzOjplY3gsIHNpemVvZih2b2lkKikpKTsKICAgICAgICAgbW92ZShYODZSZWdpc3RlcnM6OmVj
eCwgcmV0dXJuUmVnaXN0ZXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>