Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segfault in v8.2.1 #14567

Closed
myitcv opened this issue Aug 1, 2017 · 11 comments
Closed

Segfault in v8.2.1 #14567

myitcv opened this issue Aug 1, 2017 · 11 comments
Labels
v8 engine Issues and PRs related to the V8 dependency.

Comments

@myitcv
Copy link

myitcv commented Aug 1, 2017

Unclear whether this is a dup of #14228 so reporting separately for now.

$ node -v
v8.2.1
$ uname -a
Linux myitcv-virtual-machine 4.10.0-28-generic #32-Ubuntu SMP Fri Jun 30 05:32:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

The segfault occurs randomly when running the test suite for GopherJS (I can give more details if that is relevant)

Following the example of #14228 here is the gdb information I have from one of the core dumps (I'm absolutely no gdb expert so please shout where I'm going wrong):

core_dump.node.14386.myitcv-virtual-machine.1501588338
$ gdb /home/myitcv/nodes/bin/node core_dump.node.14386.myitcv-virtual-machine.1501588338
...
Reading symbols from /home/myitcv/nodes/bin/node...done.
[New LWP 14386]
[New LWP 14388]
[New LWP 14389]
[New LWP 14452]
[New LWP 14387]
[New LWP 14390]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `node --require source-map-support/register --stack_size=10000 /home/myitcv/gost'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00003f8939933ffa in ?? ()
[Current thread is 1 (Thread 0x7f3a56d81b80 (LWP 14386))]
(gdb) where
#0  0x00003f8939933ffa in ?? ()
Backtrace stopped: Cannot access memory at address 0x7ffca9b9ae88
(gdb) bt full
#0  0x00003f8939933ffa in ?? ()
No symbol table info available.
Backtrace stopped: Cannot access memory at address 0x7ffca9b9ae88
(gdb) info sharedlibrary
From                To                  Syms Read   Shared Object Library
0x00007f3a56982d80  0x00007f3a5698399e  Yes         /lib/x86_64-linux-gnu/libdl.so.2
0x00007f3a5677c0e0  0x00007f3a5677f1ff  Yes         /lib/x86_64-linux-gnu/librt.so.1
0x00007f3a5647d8c0  0x00007f3a5652d199  Yes (*)     /usr/lib/x86_64-linux-gnu/libstdc++.so.6
0x00007f3a560ee710  0x00007f3a5615fb7a  Yes         /lib/x86_64-linux-gnu/libm.so.6
0x00007f3a55ed4a90  0x00007f3a55ee48a5  Yes (*)     /lib/x86_64-linux-gnu/libgcc_s.so.1
0x00007f3a55cb9a20  0x00007f3a55cc6de1  Yes         /lib/x86_64-linux-gnu/libpthread.so.0
0x00007f3a5590c9c0  0x00007f3a55a5dd43  Yes         /lib/x86_64-linux-gnu/libc.so.6
0x00007f3a56b86aa0  0x00007f3a56ba45c0  Yes         /lib64/ld-linux-x86-64.so.2
(*): Shared library is missing debugging information.
(gdb) info registers
rax            0x200000000      8589934592
rbx            0x245172a7b6b9   39932234544825
rcx            0x2d0a76f02d89   49522968374665
rdx            0x2178e6fb5449   36803155022921
rsi            0x27d5ca6ef439   43799177786425
rdi            0x2178e6fb5449   36803155022921
rbp            0x7ffca9b9b350   0x7ffca9b9b350
rsp            0x7ffca9b9ae88   0x7ffca9b9ae88
r8             0x2d2cf4b40af1   49671107250929
r9             0x2d2cf4b40af1   49671107250929
r10            0x2d2cf4b40af1   49671107250929
r11            0x2178e6fb5349   36803155022665
r12            0x2178e6fb6901   36803155028225
r13            0x3883798        59258776
r14            0x2d0a76f02241   49522968371777
r15            0x2d0a76f02241   49522968371777
rip            0x3f8939933ffa   0x3f8939933ffa
eflags         0x10246  [ PF ZF IF RF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
(gdb) disassemble
No function contains program counter for selected frame.

Very happy to provide further information.

@myitcv
Copy link
Author

myitcv commented Aug 1, 2017

Updated to fix formatting of details block

Just got another more interesting version:

core_dump.node.20212.myitcv-virtual-machine.1501589446
(gdb) where
#0  0x0000000001019c91 in v8::internal::String::ComputeAndSetHash() ()
#1  0x000000000101b8a9 in v8::internal::String::SlowAsArrayIndex(unsigned int*) ()
#2  0x0000000000febf1b in v8::internal::LookupIterator::PropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, bool*, v8::internal::LookupIterator::Configuration) ()
#3  0x000000000114d461 in v8::internal::Runtime_KeyedGetProperty(int, v8::internal::Object**, v8::internal::Isolate*) ()
#4  0x0000172e225840bd in ?? ()
#5  0x0000172e22819775 in ?? ()
#6  0x0000172e22584001 in ?? ()
#7  0x00007fffcea191d0 in ?? ()
#8  0x0000000000000006 in ?? ()
#9  0x00007fffcea193b0 in ?? ()
#10 0x0000172e22f313fe in ?? ()
#11 0x0000080c36065b99 in ?? ()
#12 0x000029c581af0ab9 in ?? ()
#13 0x0000000000000000 in ?? ()
(gdb) bt full
#0  0x0000000001019c91 in v8::internal::String::ComputeAndSetHash() ()
No symbol table info available.
#1  0x000000000101b8a9 in v8::internal::String::SlowAsArrayIndex(unsigned int*) ()
No symbol table info available.
#2  0x0000000000febf1b in v8::internal::LookupIterator::PropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, bool*, v8::internal::LookupIterator::Configuration) ()
No symbol table info available.
#3  0x000000000114d461 in v8::internal::Runtime_KeyedGetProperty(int, v8::internal::Object**, v8::internal::Isolate*) ()
No symbol table info available.
#4  0x0000172e225840bd in ?? ()
No symbol table info available.
#5  0x0000172e22819775 in ?? ()
No symbol table info available.
#6  0x0000172e22584001 in ?? ()
No symbol table info available.
#7  0x00007fffcea191d0 in ?? ()
No symbol table info available.
#8  0x0000000000000006 in ?? ()
No symbol table info available.
#9  0x00007fffcea193b0 in ?? ()
No symbol table info available.
#10 0x0000172e22f313fe in ?? ()
No symbol table info available.
#11 0x0000080c36065b99 in ?? ()
No symbol table info available.
#12 0x000029c581af0ab9 in ?? ()
No symbol table info available.
#13 0x0000000000000000 in ?? ()
No symbol table info available.
(gdb) info registers
rax            0x80c36000000    8848538599424
rbx            0x80c36065b99    8848539016089
rcx            0x7fffcea19200   140736660083200
rdx            0x3      3
rsi            0x7fffcea19060   140736660082784
rdi            0x80c36065b99    8848539016089
rbp            0x7fffcea19010   0x7fffcea19010
rsp            0x7fffcea19000   0x7fffcea19000
r8             0x7fffcea19120   140736660082976
r9             0x3      3
r10            0x80c36065b99    8848539016089
r11            0x3      3
r12            0x7fffcea19208   140736660083208
r13            0x7fffcea19200   140736660083200
r14            0x3      3
r15            0x2458640        38110784
rip            0x1019c91        0x1019c91 <v8::internal::String::ComputeAndSetHash()+17>
eflags         0x10206  [ PF IF RF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
(gdb) disassemble
Dump of assembler code for function _ZN2v88internal6String17ComputeAndSetHashEv:
   0x0000000001019c80 <+0>:     push   %rbp
   0x0000000001019c81 <+1>:     mov    %rdi,%rax
   0x0000000001019c84 <+4>:     and    $0xfffffffffff80000,%rax
   0x0000000001019c8a <+10>:    mov    %rsp,%rbp
   0x0000000001019c8d <+13>:    push   %r15
   0x0000000001019c8f <+15>:    push   %r14
=> 0x0000000001019c91 <+17>:    push   %r13
   0x0000000001019c93 <+19>:    push   %r12
   0x0000000001019c95 <+21>:    mov    %rdi,%r12
   0x0000000001019c98 <+24>:    push   %rbx
   0x0000000001019c99 <+25>:    sub    $0x18,%rsp
   0x0000000001019c9d <+29>:    movslq 0x13(%rdi),%rbx
   0x0000000001019ca1 <+33>:    mov    0x38(%rax),%rax
   0x0000000001019ca5 <+37>:    movl   $0x0,-0x38(%rbp)
   0x0000000001019cac <+44>:    movb   $0x1,-0x33(%rbp)
   0x0000000001019cb0 <+48>:    movslq 0xd34(%rax),%rax
   0x0000000001019cb7 <+55>:    lea    -0x1(%rbx),%r13d
   0x0000000001019cbb <+59>:    mov    %ebx,-0x40(%rbp)
   0x0000000001019cbe <+62>:    cmp    $0x9,%r13d
   0x0000000001019cc2 <+66>:    setbe  -0x34(%rbp)
   0x0000000001019cc6 <+70>:    cmp    $0x3fff,%ebx
   0x0000000001019ccc <+76>:    mov    %eax,-0x3c(%rbp)
   0x0000000001019ccf <+79>:    jle    0x1019d00 <_ZN2v88internal6String17ComputeAndSetHashEv+128>
   0x0000000001019cd1 <+81>:    lea    0x2(,%rbx,4),%ebx
   0x0000000001019cd8 <+88>:    mov    %ebx,%eax
   0x0000000001019cda <+90>:    shr    $0x2,%eax
   0x0000000001019cdd <+93>:    mov    %ebx,0x7(%r12)
   0x0000000001019ce2 <+98>:    movl   $0x0,0xb(%r12)
   0x0000000001019ceb <+107>:   add    $0x18,%rsp
   0x0000000001019cef <+111>:   pop    %rbx
   0x0000000001019cf0 <+112>:   pop    %r12
   0x0000000001019cf2 <+114>:   pop    %r13
   0x0000000001019cf4 <+116>:   pop    %r14
   0x0000000001019cf6 <+118>:   pop    %r15
   0x0000000001019cf8 <+120>:   pop    %rbp
   0x0000000001019cf9 <+121>:   retq
   0x0000000001019cfa <+122>:   nopw   0x0(%rax,%rax,1)
   0x0000000001019d00 <+128>:   mov    %ebx,%r14d
   0x0000000001019d03 <+131>:   mov    %rdi,%rsi
   0x0000000001019d06 <+134>:   xor    %r15d,%r15d
   0x0000000001019d09 <+137>:   mov    -0x1(%rsi),%rax
   0x0000000001019d0d <+141>:   movzbl 0xb(%rax),%eax
   0x0000000001019d11 <+145>:   and    $0xf,%eax
   0x0000000001019d14 <+148>:   cmp    $0xd,%al
   0x0000000001019d16 <+150>:   ja     0x101a140 <_ZN2v88internal6String17ComputeAndSetHashEv+1216>
   0x0000000001019d1c <+156>:   movzbl %al,%eax
   0x0000000001019d1f <+159>:   jmpq   *0x1794120(,%rax,8)
   0x0000000001019d26 <+166>:   nopw   %cs:0x0(%rax,%rax,1)
   0x0000000001019d30 <+176>:   mov    0x17(%rsi),%rdi
   0x0000000001019d34 <+180>:   movslq %r15d,%r15
   0x0000000001019d37 <+183>:   mov    (%rdi),%rax
   0x0000000001019d3a <+186>:   callq  *0x20(%rax)
   0x0000000001019d3d <+189>:   add    %rax,%r15
   0x0000000001019d40 <+192>:   cmpb   $0x0,-0x34(%rbp)
   0x0000000001019d44 <+196>:   je     0x101a258 <_ZN2v88internal6String17ComputeAndSetHashEv+1496>
   0x0000000001019d4a <+202>:   test   %ebx,%ebx
   0x0000000001019d4c <+204>:   jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x0000000001019d52 <+210>:   movzbl (%r15),%eax
   0x0000000001019d56 <+214>:   add    -0x3c(%rbp),%eax
   0x0000000001019d59 <+217>:   mov    %eax,%edx
   0x0000000001019d5b <+219>:   shl    $0xa,%edx
   0x0000000001019d5e <+222>:   add    %edx,%eax
   0x0000000001019d60 <+224>:   mov    %eax,%ecx
   0x0000000001019d62 <+226>:   shr    $0x6,%ecx
   0x0000000001019d65 <+229>:   xor    %eax,%ecx
   0x0000000001019d67 <+231>:   mov    %ecx,-0x3c(%rbp)
   0x0000000001019d6a <+234>:   movzbl (%r15),%edx
   0x0000000001019d6e <+238>:   movzbl %dl,%eax
   0x0000000001019d71 <+241>:   sub    $0x30,%eax
   0x0000000001019d74 <+244>:   cmp    $0x9,%ax
   0x0000000001019d78 <+248>:   ja     0x101a507 <_ZN2v88internal6String17ComputeAndSetHashEv+2183>
   0x0000000001019d7e <+254>:   cmpl   $0x1,-0x40(%rbp)
   0x0000000001019d82 <+258>:   jle    0x101a408 <_ZN2v88internal6String17ComputeAndSetHashEv+1928>
   0x0000000001019d88 <+264>:   lea    0x1(%r15),%rsi
   0x0000000001019d8c <+268>:   xor    %edi,%edi
   0x0000000001019d8e <+270>:   mov    $0x19999999,%r8d
   0x0000000001019d94 <+276>:   jmp    0x1019de5 <_ZN2v88internal6String17ComputeAndSetHashEv+357>
   0x0000000001019d96 <+278>:   nopw   %cs:0x0(%rax,%rax,1)
   0x0000000001019da0 <+288>:   lea    (%rax,%rax,4),%eax
   0x0000000001019da3 <+291>:   add    $0x1,%edi
   0x0000000001019da6 <+294>:   cmp    %edi,%r14d
   0x0000000001019da9 <+297>:   lea    -0x30(%r9,%rax,2),%eax
   0x0000000001019dae <+302>:   mov    %eax,-0x38(%rbp)
   0x0000000001019db1 <+305>:   jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x0000000001019db7 <+311>:   movzbl (%rsi),%eax
   0x0000000001019dba <+314>:   add    $0x1,%rsi
   0x0000000001019dbe <+318>:   add    %eax,%ecx
   0x0000000001019dc0 <+320>:   mov    %ecx,%edx
   0x0000000001019dc2 <+322>:   shl    $0xa,%edx
   0x0000000001019dc5 <+325>:   add    %ecx,%edx
   0x0000000001019dc7 <+327>:   mov    %edx,%ecx
   0x0000000001019dc9 <+329>:   shr    $0x6,%ecx
   0x0000000001019dcc <+332>:   xor    %edx,%ecx
---Type <return> to continue, or q <return> to quit---
   0x0000000001019dce <+334>:   mov    %ecx,-0x3c(%rbp)
   0x0000000001019dd1 <+337>:   movzbl -0x1(%rsi),%edx
   0x0000000001019dd5 <+341>:   movzbl %dl,%eax
   0x0000000001019dd8 <+344>:   sub    $0x30,%eax
   0x0000000001019ddb <+347>:   cmp    $0x9,%ax
   0x0000000001019ddf <+351>:   ja     0x101a2f8 <_ZN2v88internal6String17ComputeAndSetHashEv+1656>
   0x0000000001019de5 <+357>:   cmpb   $0x0,-0x33(%rbp)
   0x0000000001019de9 <+361>:   movzbl %dl,%r9d
   0x0000000001019ded <+365>:   je     0x1019df8 <_ZN2v88internal6String17ComputeAndSetHashEv+376>
   0x0000000001019def <+367>:   cmp    $0x30,%dl
   0x0000000001019df2 <+370>:   movb   $0x0,-0x33(%rbp)
   0x0000000001019df6 <+374>:   je     0x1019e0d <_ZN2v88internal6String17ComputeAndSetHashEv+397>
   0x0000000001019df8 <+376>:   lea    -0x2d(%r9),%edx
   0x0000000001019dfc <+380>:   mov    -0x38(%rbp),%eax
   0x0000000001019dff <+383>:   mov    %r8d,%r11d
   0x0000000001019e02 <+386>:   sar    $0x3,%edx
   0x0000000001019e05 <+389>:   sub    %edx,%r11d
   0x0000000001019e08 <+392>:   cmp    %r11d,%eax
   0x0000000001019e0b <+395>:   jbe    0x1019da0 <_ZN2v88internal6String17ComputeAndSetHashEv+288>
   0x0000000001019e0d <+397>:   movb   $0x0,-0x34(%rbp)
   0x0000000001019e11 <+401>:   add    $0x1,%edi
   0x0000000001019e14 <+404>:   jmpq   0x101a260 <_ZN2v88internal6String17ComputeAndSetHashEv+1504>
   0x0000000001019e19 <+409>:   nopl   0x0(%rax)
   0x0000000001019e20 <+416>:   cmpb   $0x0,-0x34(%rbp)
   0x0000000001019e24 <+420>:   movslq %r15d,%r15
   0x0000000001019e27 <+423>:   lea    0x17(%rsi,%r15,1),%rdi
   0x0000000001019e2c <+428>:   je     0x101a208 <_ZN2v88internal6String17ComputeAndSetHashEv+1416>
   0x0000000001019e32 <+434>:   test   %ebx,%ebx
   0x0000000001019e34 <+436>:   jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x0000000001019e3a <+442>:   movzbl (%rdi),%eax
   0x0000000001019e3d <+445>:   add    -0x3c(%rbp),%eax
   0x0000000001019e40 <+448>:   mov    %eax,%edx
   0x0000000001019e42 <+450>:   shl    $0xa,%edx
   0x0000000001019e45 <+453>:   add    %edx,%eax
   0x0000000001019e47 <+455>:   mov    %eax,%edx
   0x0000000001019e49 <+457>:   shr    $0x6,%edx
   0x0000000001019e4c <+460>:   xor    %eax,%edx
   0x0000000001019e4e <+462>:   mov    %edx,-0x3c(%rbp)
   0x0000000001019e51 <+465>:   movzbl (%rdi),%eax
   0x0000000001019e54 <+468>:   movzbl %al,%ecx
   0x0000000001019e57 <+471>:   sub    $0x30,%ecx
   0x0000000001019e5a <+474>:   cmp    $0x9,%cx
   0x0000000001019e5e <+478>:   ja     0x101a511 <_ZN2v88internal6String17ComputeAndSetHashEv+2193>
   0x0000000001019e64 <+484>:   xor    %esi,%esi
   0x0000000001019e66 <+486>:   cmpl   $0x1,-0x40(%rbp)
   0x0000000001019e6a <+490>:   lea    0x1(%rdi),%rcx
   0x0000000001019e6e <+494>:   mov    $0x19999999,%r9d
   0x0000000001019e74 <+500>:   jg     0x1019ec9 <_ZN2v88internal6String17ComputeAndSetHashEv+585>
   0x0000000001019e76 <+502>:   jmpq   0x101a489 <_ZN2v88internal6String17ComputeAndSetHashEv+2057>
   0x0000000001019e7b <+507>:   nopl   0x0(%rax,%rax,1)
   0x0000000001019e80 <+512>:   lea    (%r8,%r8,4),%eax
   0x0000000001019e84 <+516>:   add    $0x1,%esi
   0x0000000001019e87 <+519>:   cmp    %esi,%r14d
   0x0000000001019e8a <+522>:   lea    -0x30(%r10,%rax,2),%eax
   0x0000000001019e8f <+527>:   mov    %eax,-0x38(%rbp)
   0x0000000001019e92 <+530>:   jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x0000000001019e98 <+536>:   movzbl (%rcx),%eax
   0x0000000001019e9b <+539>:   add    $0x1,%rcx
   0x0000000001019e9f <+543>:   add    %eax,%edx
   0x0000000001019ea1 <+545>:   mov    %edx,%eax
   0x0000000001019ea3 <+547>:   shl    $0xa,%eax
   0x0000000001019ea6 <+550>:   add    %edx,%eax
   0x0000000001019ea8 <+552>:   mov    %eax,%edx
   0x0000000001019eaa <+554>:   shr    $0x6,%edx
   0x0000000001019ead <+557>:   xor    %eax,%edx
   0x0000000001019eaf <+559>:   mov    %edx,-0x3c(%rbp)
   0x0000000001019eb2 <+562>:   movzbl -0x1(%rcx),%eax
   0x0000000001019eb6 <+566>:   movzbl %al,%r8d
   0x0000000001019eba <+570>:   sub    $0x30,%r8d
   0x0000000001019ebe <+574>:   cmp    $0x9,%r8w
   0x0000000001019ec3 <+579>:   ja     0x101a308 <_ZN2v88internal6String17ComputeAndSetHashEv+1672>
   0x0000000001019ec9 <+585>:   cmpb   $0x0,-0x33(%rbp)
   0x0000000001019ecd <+589>:   movzbl %al,%r10d
   0x0000000001019ed1 <+593>:   je     0x1019edb <_ZN2v88internal6String17ComputeAndSetHashEv+603>
   0x0000000001019ed3 <+595>:   cmp    $0x30,%al
   0x0000000001019ed5 <+597>:   movb   $0x0,-0x33(%rbp)
   0x0000000001019ed9 <+601>:   je     0x1019ef1 <_ZN2v88internal6String17ComputeAndSetHashEv+625>
   0x0000000001019edb <+603>:   lea    -0x2d(%r10),%eax
   0x0000000001019edf <+607>:   mov    -0x38(%rbp),%r8d
   0x0000000001019ee3 <+611>:   mov    %r9d,%r11d
   0x0000000001019ee6 <+614>:   sar    $0x3,%eax
   0x0000000001019ee9 <+617>:   sub    %eax,%r11d
   0x0000000001019eec <+620>:   cmp    %r11d,%r8d
   0x0000000001019eef <+623>:   jbe    0x1019e80 <_ZN2v88internal6String17ComputeAndSetHashEv+512>
   0x0000000001019ef1 <+625>:   movb   $0x0,-0x34(%rbp)
   0x0000000001019ef5 <+629>:   add    $0x1,%esi
   0x0000000001019ef8 <+632>:   jmpq   0x101a210 <_ZN2v88internal6String17ComputeAndSetHashEv+1424>
   0x0000000001019efd <+637>:   nopl   (%rax)
   0x0000000001019f00 <+640>:   mov    0x17(%rsi),%rsi
   0x0000000001019f04 <+644>:   jmpq   0x1019d09 <_ZN2v88internal6String17ComputeAndSetHashEv+137>
   0x0000000001019f09 <+649>:   nopl   0x0(%rax)
   0x0000000001019f10 <+656>:   add    0x23(%rsi),%r15d
   0x0000000001019f14 <+660>:   mov    0x17(%rsi),%rsi
   0x0000000001019f18 <+664>:   jmpq   0x1019d09 <_ZN2v88internal6String17ComputeAndSetHashEv+137>
---Type <return> to continue, or q <return> to quit---
   0x0000000001019f1d <+669>:   nopl   (%rax)
   0x0000000001019f20 <+672>:   mov    0x17(%rsi),%rdi
   0x0000000001019f24 <+676>:   movslq %r15d,%r15
   0x0000000001019f27 <+679>:   mov    (%rdi),%rax
   0x0000000001019f2a <+682>:   callq  *0x20(%rax)
   0x0000000001019f2d <+685>:   cmpb   $0x0,-0x34(%rbp)
   0x0000000001019f31 <+689>:   lea    (%rax,%r15,2),%rdi
   0x0000000001019f35 <+693>:   je     0x101a158 <_ZN2v88internal6String17ComputeAndSetHashEv+1240>
   0x0000000001019f3b <+699>:   test   %ebx,%ebx
   0x0000000001019f3d <+701>:   jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x0000000001019f43 <+707>:   movzwl (%rdi),%eax
   0x0000000001019f46 <+710>:   add    -0x3c(%rbp),%eax
   0x0000000001019f49 <+713>:   mov    %eax,%edx
   0x0000000001019f4b <+715>:   shl    $0xa,%edx
   0x0000000001019f4e <+718>:   add    %edx,%eax
   0x0000000001019f50 <+720>:   mov    %eax,%edx
   0x0000000001019f52 <+722>:   shr    $0x6,%edx
   0x0000000001019f55 <+725>:   xor    %eax,%edx
   0x0000000001019f57 <+727>:   mov    %edx,-0x3c(%rbp)
   0x0000000001019f5a <+730>:   movzwl (%rdi),%eax
   0x0000000001019f5d <+733>:   lea    -0x30(%rax),%ecx
   0x0000000001019f60 <+736>:   cmp    $0x9,%cx
   0x0000000001019f64 <+740>:   ja     0x101a525 <_ZN2v88internal6String17ComputeAndSetHashEv+2213>
   0x0000000001019f6a <+746>:   xor    %esi,%esi
   0x0000000001019f6c <+748>:   cmpl   $0x1,-0x40(%rbp)
   0x0000000001019f70 <+752>:   lea    0x2(%rdi),%rcx
   0x0000000001019f74 <+756>:   mov    $0x19999999,%r9d
   0x0000000001019f7a <+762>:   jg     0x1019fcd <_ZN2v88internal6String17ComputeAndSetHashEv+845>
   0x0000000001019f7c <+764>:   jmpq   0x101a38b <_ZN2v88internal6String17ComputeAndSetHashEv+1803>
   0x0000000001019f81 <+769>:   nopl   0x0(%rax)
   0x0000000001019f88 <+776>:   lea    (%r8,%r8,4),%eax
   0x0000000001019f8c <+780>:   add    $0x1,%esi
   0x0000000001019f8f <+783>:   cmp    %esi,%r14d
   0x0000000001019f92 <+786>:   lea    -0x30(%r10,%rax,2),%eax
   0x0000000001019f97 <+791>:   mov    %eax,-0x38(%rbp)
   0x0000000001019f9a <+794>:   jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x0000000001019fa0 <+800>:   movzwl (%rcx),%eax
   0x0000000001019fa3 <+803>:   add    $0x2,%rcx
   0x0000000001019fa7 <+807>:   add    %eax,%edx
   0x0000000001019fa9 <+809>:   mov    %edx,%eax
   0x0000000001019fab <+811>:   shl    $0xa,%eax
   0x0000000001019fae <+814>:   add    %edx,%eax
   0x0000000001019fb0 <+816>:   mov    %eax,%edx
   0x0000000001019fb2 <+818>:   shr    $0x6,%edx
   0x0000000001019fb5 <+821>:   xor    %eax,%edx
   0x0000000001019fb7 <+823>:   mov    %edx,-0x3c(%rbp)
   0x0000000001019fba <+826>:   movzwl -0x2(%rcx),%eax
   0x0000000001019fbe <+830>:   lea    -0x30(%rax),%r8d
   0x0000000001019fc2 <+834>:   cmp    $0x9,%r8w
   0x0000000001019fc7 <+839>:   ja     0x101a2e8 <_ZN2v88internal6String17ComputeAndSetHashEv+1640>
   0x0000000001019fcd <+845>:   cmpb   $0x0,-0x33(%rbp)
   0x0000000001019fd1 <+849>:   movzwl %ax,%r10d
   0x0000000001019fd5 <+853>:   je     0x1019fe1 <_ZN2v88internal6String17ComputeAndSetHashEv+865>
   0x0000000001019fd7 <+855>:   cmp    $0x30,%ax
   0x0000000001019fdb <+859>:   movb   $0x0,-0x33(%rbp)
   0x0000000001019fdf <+863>:   je     0x1019ff7 <_ZN2v88internal6String17ComputeAndSetHashEv+887>
   0x0000000001019fe1 <+865>:   lea    -0x2d(%r10),%eax
   0x0000000001019fe5 <+869>:   mov    -0x38(%rbp),%r8d
   0x0000000001019fe9 <+873>:   mov    %r9d,%r15d
   0x0000000001019fec <+876>:   sar    $0x3,%eax
   0x0000000001019fef <+879>:   sub    %eax,%r15d
   0x0000000001019ff2 <+882>:   cmp    %r15d,%r8d
   0x0000000001019ff5 <+885>:   jbe    0x1019f88 <_ZN2v88internal6String17ComputeAndSetHashEv+776>
   0x0000000001019ff7 <+887>:   movb   $0x0,-0x34(%rbp)
   0x0000000001019ffb <+891>:   add    $0x1,%esi
   0x0000000001019ffe <+894>:   jmpq   0x101a160 <_ZN2v88internal6String17ComputeAndSetHashEv+1248>
   0x000000000101a003 <+899>:   nopl   0x0(%rax,%rax,1)
   0x000000000101a008 <+904>:   cmpb   $0x0,-0x34(%rbp)
   0x000000000101a00c <+908>:   movslq %r15d,%r15
   0x000000000101a00f <+911>:   lea    0x17(%rsi,%r15,2),%rdi
   0x000000000101a014 <+916>:   je     0x101a1b8 <_ZN2v88internal6String17ComputeAndSetHashEv+1336>
   0x000000000101a01a <+922>:   test   %ebx,%ebx
   0x000000000101a01c <+924>:   jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a022 <+930>:   movzwl (%rdi),%eax
   0x000000000101a025 <+933>:   add    -0x3c(%rbp),%eax
   0x000000000101a028 <+936>:   mov    %eax,%edx
   0x000000000101a02a <+938>:   shl    $0xa,%edx
   0x000000000101a02d <+941>:   add    %edx,%eax
   0x000000000101a02f <+943>:   mov    %eax,%edx
   0x000000000101a031 <+945>:   shr    $0x6,%edx
   0x000000000101a034 <+948>:   xor    %eax,%edx
   0x000000000101a036 <+950>:   mov    %edx,-0x3c(%rbp)
   0x000000000101a039 <+953>:   movzwl (%rdi),%eax
   0x000000000101a03c <+956>:   lea    -0x30(%rax),%ecx
   0x000000000101a03f <+959>:   cmp    $0x9,%cx
   0x000000000101a043 <+963>:   ja     0x101a51b <_ZN2v88internal6String17ComputeAndSetHashEv+2203>
   0x000000000101a049 <+969>:   xor    %esi,%esi
   0x000000000101a04b <+971>:   cmpl   $0x1,-0x40(%rbp)
   0x000000000101a04f <+975>:   lea    0x2(%rdi),%rcx
   0x000000000101a053 <+979>:   mov    $0x19999999,%r9d
   0x000000000101a059 <+985>:   jg     0x101a0a5 <_ZN2v88internal6String17ComputeAndSetHashEv+1061>
   0x000000000101a05b <+987>:   jmpq   0x101a314 <_ZN2v88internal6String17ComputeAndSetHashEv+1684>
   0x000000000101a060 <+992>:   lea    (%r8,%r8,4),%eax
   0x000000000101a064 <+996>:   add    $0x1,%esi
---Type <return> to continue, or q <return> to quit---
   0x000000000101a067 <+999>:   cmp    %esi,%r14d
   0x000000000101a06a <+1002>:  lea    -0x30(%r10,%rax,2),%eax
   0x000000000101a06f <+1007>:  mov    %eax,-0x38(%rbp)
   0x000000000101a072 <+1010>:  jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a078 <+1016>:  movzwl (%rcx),%eax
   0x000000000101a07b <+1019>:  add    $0x2,%rcx
   0x000000000101a07f <+1023>:  add    %eax,%edx
   0x000000000101a081 <+1025>:  mov    %edx,%eax
   0x000000000101a083 <+1027>:  shl    $0xa,%eax
   0x000000000101a086 <+1030>:  add    %edx,%eax
   0x000000000101a088 <+1032>:  mov    %eax,%edx
   0x000000000101a08a <+1034>:  shr    $0x6,%edx
   0x000000000101a08d <+1037>:  xor    %eax,%edx
   0x000000000101a08f <+1039>:  mov    %edx,-0x3c(%rbp)
   0x000000000101a092 <+1042>:  movzwl -0x2(%rcx),%eax
   0x000000000101a096 <+1046>:  lea    -0x30(%rax),%r8d
   0x000000000101a09a <+1050>:  cmp    $0x9,%r8w
   0x000000000101a09f <+1055>:  ja     0x101a2d8 <_ZN2v88internal6String17ComputeAndSetHashEv+1624>
   0x000000000101a0a5 <+1061>:  cmpb   $0x0,-0x33(%rbp)
   0x000000000101a0a9 <+1065>:  movzwl %ax,%r10d
   0x000000000101a0ad <+1069>:  je     0x101a0b9 <_ZN2v88internal6String17ComputeAndSetHashEv+1081>
   0x000000000101a0af <+1071>:  cmp    $0x30,%ax
   0x000000000101a0b3 <+1075>:  movb   $0x0,-0x33(%rbp)
   0x000000000101a0b7 <+1079>:  je     0x101a0cf <_ZN2v88internal6String17ComputeAndSetHashEv+1103>
   0x000000000101a0b9 <+1081>:  lea    -0x2d(%r10),%eax
   0x000000000101a0bd <+1085>:  mov    -0x38(%rbp),%r8d
   0x000000000101a0c1 <+1089>:  mov    %r9d,%r11d
   0x000000000101a0c4 <+1092>:  sar    $0x3,%eax
   0x000000000101a0c7 <+1095>:  sub    %eax,%r11d
   0x000000000101a0ca <+1098>:  cmp    %r11d,%r8d
   0x000000000101a0cd <+1101>:  jbe    0x101a060 <_ZN2v88internal6String17ComputeAndSetHashEv+992>
   0x000000000101a0cf <+1103>:  movb   $0x0,-0x34(%rbp)
   0x000000000101a0d3 <+1107>:  add    $0x1,%esi
   0x000000000101a0d6 <+1110>:  jmpq   0x101a1c0 <_ZN2v88internal6String17ComputeAndSetHashEv+1344>
   0x000000000101a0db <+1115>:  nopl   0x0(%rax,%rax,1)
   0x000000000101a0e0 <+1120>:  test   %rsi,%rsi
   0x000000000101a0e3 <+1123>:  je     0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a0e9 <+1129>:  lea    -0x40(%rbp),%rdi
   0x000000000101a0ed <+1133>:  callq  0x10194d0 <_ZN2v88internal21IteratingStringHasher15VisitConsStringEPNS0_10ConsStringE>
   0x000000000101a0f2 <+1138>:  mov    -0x40(%rbp),%ebx
   0x000000000101a0f5 <+1141>:  cmp    $0x3fff,%ebx
   0x000000000101a0fb <+1147>:  jg     0x1019cd1 <_ZN2v88internal6String17ComputeAndSetHashEv+81>
   0x000000000101a101 <+1153>:  cmpb   $0x0,-0x34(%rbp)
   0x000000000101a105 <+1157>:  jne    0x101a2c0 <_ZN2v88internal6String17ComputeAndSetHashEv+1600>
   0x000000000101a10b <+1163>:  mov    -0x3c(%rbp),%eax
   0x000000000101a10e <+1166>:  lea    (%rax,%rax,8),%edx
   0x000000000101a111 <+1169>:  mov    %edx,%eax
   0x000000000101a113 <+1171>:  shr    $0xb,%eax
   0x000000000101a116 <+1174>:  xor    %edx,%eax
   0x000000000101a118 <+1176>:  mov    %eax,%ebx
   0x000000000101a11a <+1178>:  shl    $0xf,%ebx
   0x000000000101a11d <+1181>:  add    %ebx,%eax
   0x000000000101a11f <+1183>:  test   $0x3fffffff,%eax
   0x000000000101a124 <+1188>:  je     0x101a2a8 <_ZN2v88internal6String17ComputeAndSetHashEv+1576>
   0x000000000101a12a <+1194>:  lea    0x2(,%rax,4),%ebx
   0x000000000101a131 <+1201>:  mov    %ebx,%eax
   0x000000000101a133 <+1203>:  shr    $0x2,%eax
   0x000000000101a136 <+1206>:  jmpq   0x1019cdd <_ZN2v88internal6String17ComputeAndSetHashEv+93>
   0x000000000101a13b <+1211>:  nopl   0x0(%rax,%rax,1)
   0x000000000101a140 <+1216>:  mov    $0x17684d0,%edx
   0x000000000101a145 <+1221>:  xor    %esi,%esi
   0x000000000101a147 <+1223>:  mov    $0x16b0cd7,%edi
   0x000000000101a14c <+1228>:  xor    %eax,%eax
   0x000000000101a14e <+1230>:  callq  0x15871d0 <V8_Fatal>
   0x000000000101a153 <+1235>:  nopl   0x0(%rax,%rax,1)
   0x000000000101a158 <+1240>:  xor    %esi,%esi
   0x000000000101a15a <+1242>:  nopw   0x0(%rax,%rax,1)
   0x000000000101a160 <+1248>:  cmp    %esi,%ebx
   0x000000000101a162 <+1250>:  jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a164 <+1252>:  movslq %esi,%rcx
   0x000000000101a167 <+1255>:  sub    %esi,%r13d
   0x000000000101a16a <+1258>:  mov    -0x3c(%rbp),%eax
   0x000000000101a16d <+1261>:  lea    (%rdi,%rcx,2),%rdx
   0x000000000101a171 <+1265>:  add    %r13,%rcx
   0x000000000101a174 <+1268>:  lea    0x2(%rdi,%rcx,2),%rsi
   0x000000000101a179 <+1273>:  nopl   0x0(%rax)
   0x000000000101a180 <+1280>:  movzwl (%rdx),%ecx
   0x000000000101a183 <+1283>:  add    $0x2,%rdx
   0x000000000101a187 <+1287>:  add    %ecx,%eax
   0x000000000101a189 <+1289>:  mov    %eax,%ecx
   0x000000000101a18b <+1291>:  shl    $0xa,%ecx
   0x000000000101a18e <+1294>:  add    %eax,%ecx
   0x000000000101a190 <+1296>:  mov    %ecx,%eax
   0x000000000101a192 <+1298>:  shr    $0x6,%eax
   0x000000000101a195 <+1301>:  xor    %ecx,%eax
   0x000000000101a197 <+1303>:  cmp    %rsi,%rdx
   0x000000000101a19a <+1306>:  mov    %eax,-0x3c(%rbp)
   0x000000000101a19d <+1309>:  jne    0x101a180 <_ZN2v88internal6String17ComputeAndSetHashEv+1280>
   0x000000000101a19f <+1311>:  lea    -0x40(%rbp),%rdi
   0x000000000101a1a3 <+1315>:  callq  0x1007080 <_ZN2v88internal12StringHasher12GetHashFieldEv>
   0x000000000101a1a8 <+1320>:  mov    %eax,%ebx
   0x000000000101a1aa <+1322>:  shr    $0x2,%eax
   0x000000000101a1ad <+1325>:  jmpq   0x1019cdd <_ZN2v88internal6String17ComputeAndSetHashEv+93>
   0x000000000101a1b2 <+1330>:  nopw   0x0(%rax,%rax,1)
---Type <return> to continue, or q <return> to quit---
   0x000000000101a1b8 <+1336>:  xor    %esi,%esi
   0x000000000101a1ba <+1338>:  nopw   0x0(%rax,%rax,1)
   0x000000000101a1c0 <+1344>:  cmp    %esi,%ebx
   0x000000000101a1c2 <+1346>:  jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a1c4 <+1348>:  movslq %esi,%rcx
   0x000000000101a1c7 <+1351>:  sub    %esi,%r13d
   0x000000000101a1ca <+1354>:  mov    -0x3c(%rbp),%eax
   0x000000000101a1cd <+1357>:  lea    (%rdi,%rcx,2),%rdx
   0x000000000101a1d1 <+1361>:  add    %r13,%rcx
   0x000000000101a1d4 <+1364>:  lea    0x2(%rdi,%rcx,2),%rsi
   0x000000000101a1d9 <+1369>:  nopl   0x0(%rax)
   0x000000000101a1e0 <+1376>:  movzwl (%rdx),%ecx
   0x000000000101a1e3 <+1379>:  add    $0x2,%rdx
   0x000000000101a1e7 <+1383>:  add    %ecx,%eax
   0x000000000101a1e9 <+1385>:  mov    %eax,%ecx
   0x000000000101a1eb <+1387>:  shl    $0xa,%ecx
   0x000000000101a1ee <+1390>:  add    %eax,%ecx
   0x000000000101a1f0 <+1392>:  mov    %ecx,%eax
   0x000000000101a1f2 <+1394>:  shr    $0x6,%eax
   0x000000000101a1f5 <+1397>:  xor    %ecx,%eax
   0x000000000101a1f7 <+1399>:  cmp    %rsi,%rdx
   0x000000000101a1fa <+1402>:  mov    %eax,-0x3c(%rbp)
   0x000000000101a1fd <+1405>:  jne    0x101a1e0 <_ZN2v88internal6String17ComputeAndSetHashEv+1376>
   0x000000000101a1ff <+1407>:  jmp    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a201 <+1409>:  nopl   0x0(%rax)
   0x000000000101a208 <+1416>:  xor    %esi,%esi
   0x000000000101a20a <+1418>:  nopw   0x0(%rax,%rax,1)
   0x000000000101a210 <+1424>:  cmp    %ebx,%esi
   0x000000000101a212 <+1426>:  jge    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a214 <+1428>:  movslq %esi,%rcx
   0x000000000101a217 <+1431>:  mov    -0x3c(%rbp),%eax
   0x000000000101a21a <+1434>:  sub    %esi,%r13d
   0x000000000101a21d <+1437>:  lea    (%rdi,%rcx,1),%rdx
   0x000000000101a221 <+1441>:  lea    0x1(%rdi,%rcx,1),%rcx
   0x000000000101a226 <+1446>:  add    %rcx,%r13
   0x000000000101a229 <+1449>:  nopl   0x0(%rax)
   0x000000000101a230 <+1456>:  movzbl (%rdx),%ecx
   0x000000000101a233 <+1459>:  add    $0x1,%rdx
   0x000000000101a237 <+1463>:  add    %ecx,%eax
   0x000000000101a239 <+1465>:  mov    %eax,%ecx
   0x000000000101a23b <+1467>:  shl    $0xa,%ecx
   0x000000000101a23e <+1470>:  add    %eax,%ecx
   0x000000000101a240 <+1472>:  mov    %ecx,%eax
   0x000000000101a242 <+1474>:  shr    $0x6,%eax
   0x000000000101a245 <+1477>:  xor    %ecx,%eax
   0x000000000101a247 <+1479>:  cmp    %r13,%rdx
   0x000000000101a24a <+1482>:  mov    %eax,-0x3c(%rbp)
   0x000000000101a24d <+1485>:  jne    0x101a230 <_ZN2v88internal6String17ComputeAndSetHashEv+1456>
   0x000000000101a24f <+1487>:  jmpq   0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a254 <+1492>:  nopl   0x0(%rax)
   0x000000000101a258 <+1496>:  xor    %edi,%edi
   0x000000000101a25a <+1498>:  nopw   0x0(%rax,%rax,1)
   0x000000000101a260 <+1504>:  cmp    %edi,%ebx
   0x000000000101a262 <+1506>:  jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a268 <+1512>:  movslq %edi,%rcx
   0x000000000101a26b <+1515>:  mov    -0x3c(%rbp),%eax
   0x000000000101a26e <+1518>:  sub    %edi,%r13d
   0x000000000101a271 <+1521>:  lea    (%r15,%rcx,1),%rdx
   0x000000000101a275 <+1525>:  lea    0x1(%r15,%rcx,1),%rcx
   0x000000000101a27a <+1530>:  add    %rcx,%r13
   0x000000000101a27d <+1533>:  nopl   (%rax)
   0x000000000101a280 <+1536>:  movzbl (%rdx),%ecx
   0x000000000101a283 <+1539>:  add    $0x1,%rdx
   0x000000000101a287 <+1543>:  add    %ecx,%eax
   0x000000000101a289 <+1545>:  mov    %eax,%ecx
   0x000000000101a28b <+1547>:  shl    $0xa,%ecx
   0x000000000101a28e <+1550>:  add    %eax,%ecx
   0x000000000101a290 <+1552>:  mov    %ecx,%eax
   0x000000000101a292 <+1554>:  shr    $0x6,%eax
   0x000000000101a295 <+1557>:  xor    %ecx,%eax
   0x000000000101a297 <+1559>:  cmp    %r13,%rdx
   0x000000000101a29a <+1562>:  mov    %eax,-0x3c(%rbp)
   0x000000000101a29d <+1565>:  jne    0x101a280 <_ZN2v88internal6String17ComputeAndSetHashEv+1536>
   0x000000000101a29f <+1567>:  jmpq   0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a2a4 <+1572>:  nopl   0x0(%rax)
   0x000000000101a2a8 <+1576>:  mov    $0x1b,%eax
   0x000000000101a2ad <+1581>:  mov    $0x6e,%ebx
   0x000000000101a2b2 <+1586>:  jmpq   0x1019cdd <_ZN2v88internal6String17ComputeAndSetHashEv+93>
   0x000000000101a2b7 <+1591>:  nopw   0x0(%rax,%rax,1)
   0x000000000101a2c0 <+1600>:  mov    -0x38(%rbp),%eax
   0x000000000101a2c3 <+1603>:  shl    $0x1a,%ebx
   0x000000000101a2c6 <+1606>:  shl    $0x2,%eax
   0x000000000101a2c9 <+1609>:  or     %eax,%ebx
   0x000000000101a2cb <+1611>:  mov    %ebx,%eax
   0x000000000101a2cd <+1613>:  shr    $0x2,%eax
   0x000000000101a2d0 <+1616>:  jmpq   0x1019cdd <_ZN2v88internal6String17ComputeAndSetHashEv+93>
   0x000000000101a2d5 <+1621>:  nopl   (%rax)
   0x000000000101a2d8 <+1624>:  add    $0x1,%esi
   0x000000000101a2db <+1627>:  movb   $0x0,-0x34(%rbp)
   0x000000000101a2df <+1631>:  jmpq   0x101a1c0 <_ZN2v88internal6String17ComputeAndSetHashEv+1344>
   0x000000000101a2e4 <+1636>:  nopl   0x0(%rax)
   0x000000000101a2e8 <+1640>:  add    $0x1,%esi
   0x000000000101a2eb <+1643>:  movb   $0x0,-0x34(%rbp)
   0x000000000101a2ef <+1647>:  jmpq   0x101a160 <_ZN2v88internal6String17ComputeAndSetHashEv+1248>
---Type <return> to continue, or q <return> to quit---
   0x000000000101a2f4 <+1652>:  nopl   0x0(%rax)
   0x000000000101a2f8 <+1656>:  add    $0x1,%edi
   0x000000000101a2fb <+1659>:  movb   $0x0,-0x34(%rbp)
   0x000000000101a2ff <+1663>:  jmpq   0x101a260 <_ZN2v88internal6String17ComputeAndSetHashEv+1504>
   0x000000000101a304 <+1668>:  nopl   0x0(%rax)
   0x000000000101a308 <+1672>:  add    $0x1,%esi
   0x000000000101a30b <+1675>:  movb   $0x0,-0x34(%rbp)
   0x000000000101a30f <+1679>:  jmpq   0x101a210 <_ZN2v88internal6String17ComputeAndSetHashEv+1424>
   0x000000000101a314 <+1684>:  mov    $0x19999999,%r10d
   0x000000000101a31a <+1690>:  jmp    0x101a365 <_ZN2v88internal6String17ComputeAndSetHashEv+1765>
   0x000000000101a31c <+1692>:  nopl   0x0(%rax)
   0x000000000101a320 <+1696>:  lea    (%r9,%r9,4),%r8d
   0x000000000101a324 <+1700>:  add    $0x1,%esi
   0x000000000101a327 <+1703>:  cmp    %esi,%r14d
   0x000000000101a32a <+1706>:  lea    -0x30(%rax,%r8,2),%eax
   0x000000000101a32f <+1711>:  mov    %eax,-0x38(%rbp)
   0x000000000101a332 <+1714>:  jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a338 <+1720>:  movzwl (%rcx),%eax
   0x000000000101a33b <+1723>:  add    $0x2,%rcx
   0x000000000101a33f <+1727>:  add    %eax,%edx
   0x000000000101a341 <+1729>:  mov    %edx,%eax
   0x000000000101a343 <+1731>:  shl    $0xa,%eax
   0x000000000101a346 <+1734>:  add    %edx,%eax
   0x000000000101a348 <+1736>:  mov    %eax,%edx
   0x000000000101a34a <+1738>:  shr    $0x6,%edx
   0x000000000101a34d <+1741>:  xor    %eax,%edx
   0x000000000101a34f <+1743>:  mov    %edx,-0x3c(%rbp)
   0x000000000101a352 <+1746>:  movzwl -0x2(%rcx),%eax
   0x000000000101a356 <+1750>:  lea    -0x30(%rax),%r8d
   0x000000000101a35a <+1754>:  cmp    $0x9,%r8w
   0x000000000101a35f <+1759>:  ja     0x101a2d8 <_ZN2v88internal6String17ComputeAndSetHashEv+1624>
   0x000000000101a365 <+1765>:  cmpb   $0x0,-0x33(%rbp)
   0x000000000101a369 <+1769>:  je     0x101a36f <_ZN2v88internal6String17ComputeAndSetHashEv+1775>
   0x000000000101a36b <+1771>:  movb   $0x0,-0x33(%rbp)
   0x000000000101a36f <+1775>:  lea    -0x2d(%rax),%r8d
   0x000000000101a373 <+1779>:  mov    -0x38(%rbp),%r9d
   0x000000000101a377 <+1783>:  mov    %r10d,%r11d
   0x000000000101a37a <+1786>:  sar    $0x3,%r8d
   0x000000000101a37e <+1790>:  sub    %r8d,%r11d
   0x000000000101a381 <+1793>:  cmp    %r9d,%r11d
   0x000000000101a384 <+1796>:  jae    0x101a320 <_ZN2v88internal6String17ComputeAndSetHashEv+1696>
   0x000000000101a386 <+1798>:  jmpq   0x101a0cf <_ZN2v88internal6String17ComputeAndSetHashEv+1103>
   0x000000000101a38b <+1803>:  mov    $0x19999999,%r10d
   0x000000000101a391 <+1809>:  jmp    0x101a3dd <_ZN2v88internal6String17ComputeAndSetHashEv+1885>
   0x000000000101a393 <+1811>:  nopl   0x0(%rax,%rax,1)
   0x000000000101a398 <+1816>:  lea    (%r9,%r9,4),%r8d
   0x000000000101a39c <+1820>:  add    $0x1,%esi
   0x000000000101a39f <+1823>:  cmp    %esi,%r14d
   0x000000000101a3a2 <+1826>:  lea    -0x30(%rax,%r8,2),%eax
   0x000000000101a3a7 <+1831>:  mov    %eax,-0x38(%rbp)
   0x000000000101a3aa <+1834>:  jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a3b0 <+1840>:  movzwl (%rcx),%eax
   0x000000000101a3b3 <+1843>:  add    $0x2,%rcx
   0x000000000101a3b7 <+1847>:  add    %eax,%edx
   0x000000000101a3b9 <+1849>:  mov    %edx,%eax
   0x000000000101a3bb <+1851>:  shl    $0xa,%eax
   0x000000000101a3be <+1854>:  add    %edx,%eax
   0x000000000101a3c0 <+1856>:  mov    %eax,%edx
   0x000000000101a3c2 <+1858>:  shr    $0x6,%edx
   0x000000000101a3c5 <+1861>:  xor    %eax,%edx
   0x000000000101a3c7 <+1863>:  mov    %edx,-0x3c(%rbp)
   0x000000000101a3ca <+1866>:  movzwl -0x2(%rcx),%eax
   0x000000000101a3ce <+1870>:  lea    -0x30(%rax),%r8d
   0x000000000101a3d2 <+1874>:  cmp    $0x9,%r8w
   0x000000000101a3d7 <+1879>:  ja     0x101a2e8 <_ZN2v88internal6String17ComputeAndSetHashEv+1640>
   0x000000000101a3dd <+1885>:  cmpb   $0x0,-0x33(%rbp)
   0x000000000101a3e1 <+1889>:  je     0x101a3e7 <_ZN2v88internal6String17ComputeAndSetHashEv+1895>
   0x000000000101a3e3 <+1891>:  movb   $0x0,-0x33(%rbp)
   0x000000000101a3e7 <+1895>:  lea    -0x2d(%rax),%r8d
   0x000000000101a3eb <+1899>:  mov    -0x38(%rbp),%r9d
   0x000000000101a3ef <+1903>:  mov    %r10d,%r15d
   0x000000000101a3f2 <+1906>:  sar    $0x3,%r8d
   0x000000000101a3f6 <+1910>:  sub    %r8d,%r15d
   0x000000000101a3f9 <+1913>:  cmp    %r9d,%r15d
   0x000000000101a3fc <+1916>:  jae    0x101a398 <_ZN2v88internal6String17ComputeAndSetHashEv+1816>
   0x000000000101a3fe <+1918>:  jmpq   0x1019ff7 <_ZN2v88internal6String17ComputeAndSetHashEv+887>
   0x000000000101a403 <+1923>:  nopl   0x0(%rax,%rax,1)
   0x000000000101a408 <+1928>:  lea    0x1(%r15),%rax
   0x000000000101a40c <+1932>:  xor    %edi,%edi
   0x000000000101a40e <+1934>:  mov    $0x19999999,%r9d
   0x000000000101a414 <+1940>:  jmp    0x101a465 <_ZN2v88internal6String17ComputeAndSetHashEv+2021>
   0x000000000101a416 <+1942>:  nopw   %cs:0x0(%rax,%rax,1)
   0x000000000101a420 <+1952>:  lea    (%r8,%r8,4),%esi
   0x000000000101a424 <+1956>:  add    $0x1,%edi
   0x000000000101a427 <+1959>:  cmp    %edi,%r14d
   0x000000000101a42a <+1962>:  lea    -0x30(%rdx,%rsi,2),%edx
   0x000000000101a42e <+1966>:  mov    %edx,-0x38(%rbp)
   0x000000000101a431 <+1969>:  jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a437 <+1975>:  movzbl (%rax),%edx
   0x000000000101a43a <+1978>:  add    $0x1,%rax
   0x000000000101a43e <+1982>:  add    %edx,%ecx
   0x000000000101a440 <+1984>:  mov    %ecx,%edx
   0x000000000101a442 <+1986>:  shl    $0xa,%edx
   0x000000000101a445 <+1989>:  add    %ecx,%edx
---Type <return> to continue, or q <return> to quit---
   0x000000000101a447 <+1991>:  mov    %edx,%ecx
   0x000000000101a449 <+1993>:  shr    $0x6,%ecx
   0x000000000101a44c <+1996>:  xor    %edx,%ecx
   0x000000000101a44e <+1998>:  mov    %ecx,-0x3c(%rbp)
   0x000000000101a451 <+2001>:  movzbl -0x1(%rax),%edx
   0x000000000101a455 <+2005>:  movzbl %dl,%esi
   0x000000000101a458 <+2008>:  sub    $0x30,%esi
   0x000000000101a45b <+2011>:  cmp    $0x9,%si
   0x000000000101a45f <+2015>:  ja     0x101a2f8 <_ZN2v88internal6String17ComputeAndSetHashEv+1656>
   0x000000000101a465 <+2021>:  cmpb   $0x0,-0x33(%rbp)
   0x000000000101a469 <+2025>:  je     0x101a46f <_ZN2v88internal6String17ComputeAndSetHashEv+2031>
   0x000000000101a46b <+2027>:  movb   $0x0,-0x33(%rbp)
   0x000000000101a46f <+2031>:  lea    -0x2d(%rdx),%esi
   0x000000000101a472 <+2034>:  mov    -0x38(%rbp),%r8d
   0x000000000101a476 <+2038>:  mov    %r9d,%r10d
   0x000000000101a479 <+2041>:  sar    $0x3,%esi
   0x000000000101a47c <+2044>:  sub    %esi,%r10d
   0x000000000101a47f <+2047>:  cmp    %r10d,%r8d
   0x000000000101a482 <+2050>:  jbe    0x101a420 <_ZN2v88internal6String17ComputeAndSetHashEv+1952>
   0x000000000101a484 <+2052>:  jmpq   0x1019e0d <_ZN2v88internal6String17ComputeAndSetHashEv+397>
   0x000000000101a489 <+2057>:  mov    $0x19999999,%r10d
   0x000000000101a48f <+2063>:  jmp    0x101a4e1 <_ZN2v88internal6String17ComputeAndSetHashEv+2145>
   0x000000000101a491 <+2065>:  nopl   0x0(%rax)
   0x000000000101a498 <+2072>:  lea    (%r9,%r9,4),%r8d
   0x000000000101a49c <+2076>:  add    $0x1,%esi
   0x000000000101a49f <+2079>:  cmp    %esi,%r14d
   0x000000000101a4a2 <+2082>:  lea    -0x30(%rax,%r8,2),%eax
   0x000000000101a4a7 <+2087>:  mov    %eax,-0x38(%rbp)
   0x000000000101a4aa <+2090>:  jle    0x101a19f <_ZN2v88internal6String17ComputeAndSetHashEv+1311>
   0x000000000101a4b0 <+2096>:  movzbl (%rcx),%eax
   0x000000000101a4b3 <+2099>:  add    $0x1,%rcx
   0x000000000101a4b7 <+2103>:  add    %eax,%edx
   0x000000000101a4b9 <+2105>:  mov    %edx,%eax
   0x000000000101a4bb <+2107>:  shl    $0xa,%eax
   0x000000000101a4be <+2110>:  add    %edx,%eax
   0x000000000101a4c0 <+2112>:  mov    %eax,%edx
   0x000000000101a4c2 <+2114>:  shr    $0x6,%edx
   0x000000000101a4c5 <+2117>:  xor    %eax,%edx
   0x000000000101a4c7 <+2119>:  mov    %edx,-0x3c(%rbp)
   0x000000000101a4ca <+2122>:  movzbl -0x1(%rcx),%eax
   0x000000000101a4ce <+2126>:  movzbl %al,%r8d
   0x000000000101a4d2 <+2130>:  sub    $0x30,%r8d
   0x000000000101a4d6 <+2134>:  cmp    $0x9,%r8w
   0x000000000101a4db <+2139>:  ja     0x101a308 <_ZN2v88internal6String17ComputeAndSetHashEv+1672>
   0x000000000101a4e1 <+2145>:  cmpb   $0x0,-0x33(%rbp)
   0x000000000101a4e5 <+2149>:  je     0x101a4eb <_ZN2v88internal6String17ComputeAndSetHashEv+2155>
   0x000000000101a4e7 <+2151>:  movb   $0x0,-0x33(%rbp)
   0x000000000101a4eb <+2155>:  lea    -0x2d(%rax),%r8d
   0x000000000101a4ef <+2159>:  mov    -0x38(%rbp),%r9d
   0x000000000101a4f3 <+2163>:  mov    %r10d,%r11d
   0x000000000101a4f6 <+2166>:  sar    $0x3,%r8d
   0x000000000101a4fa <+2170>:  sub    %r8d,%r11d
   0x000000000101a4fd <+2173>:  cmp    %r9d,%r11d
   0x000000000101a500 <+2176>:  jae    0x101a498 <_ZN2v88internal6String17ComputeAndSetHashEv+2072>
   0x000000000101a502 <+2178>:  jmpq   0x1019ef1 <_ZN2v88internal6String17ComputeAndSetHashEv+625>
   0x000000000101a507 <+2183>:  mov    $0x1,%edi
   0x000000000101a50c <+2188>:  jmpq   0x101a2fb <_ZN2v88internal6String17ComputeAndSetHashEv+1659>
   0x000000000101a511 <+2193>:  mov    $0x1,%esi
   0x000000000101a516 <+2198>:  jmpq   0x101a30b <_ZN2v88internal6String17ComputeAndSetHashEv+1675>
   0x000000000101a51b <+2203>:  mov    $0x1,%esi
   0x000000000101a520 <+2208>:  jmpq   0x101a2db <_ZN2v88internal6String17ComputeAndSetHashEv+1627>
   0x000000000101a525 <+2213>:  mov    $0x1,%esi
   0x000000000101a52a <+2218>:  jmpq   0x101a2eb <_ZN2v88internal6String17ComputeAndSetHashEv+1643>
End of assembler dump.

@refack
Copy link
Contributor

refack commented Aug 1, 2017

/cc @nodejs/v8 @hashseed

@refack refack added the v8 engine Issues and PRs related to the V8 dependency. label Aug 1, 2017
@myitcv
Copy link
Author

myitcv commented Aug 1, 2017

Reproduced using v6.11.1

$ node -v
v6.11.1
$ uname -a
Linux myitcv-virtual-machine 4.10.0-28-generic #32-Ubuntu SMP Fri Jun 30 05:32:18 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
core_dump.node.23896.myitcv-virtual-machine.1501590439
(gdb) where
#0  0x0000000000d97e28 in v8::internal::String::SlowEquals(v8::internal::String*) ()
#1  0x0000000000d9a159 in v8::internal::HashTable<v8::internal::StringTable, v8::internal::StringTableShape, v8::internal::HashTableKey*>::FindEntry(v8::internal::Isolate*, v8::internal::HashTableKey*) ()
#2  0x0000000000d9af40 in v8::internal::StringTable::LookupString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>) ()
#3  0x0000000000d6b2e1 in v8::internal::LookupIterator::PropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, bool*, v8::internal::LookupIterator::Configuration) ()
#4  0x0000000000ed3440 in v8::internal::Runtime::GetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>) ()
#5  0x0000000000ed3501 in v8::internal::KeyedGetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>) ()
#6  0x0000000000ed6720 in v8::internal::Runtime_KeyedGetProperty(int, v8::internal::Object**, v8::internal::Isolate*) ()
#7  0x000003c9d9b060c7 in ?? ()
#8  0x000003c9d9d3bb35 in ?? ()
#9  0x000003c9d9b06001 in ?? ()
#10 0x00007ffc2fb445b0 in ?? ()
#11 0x0000000300000000 in ?? ()
#12 0x00007ffc2fb44788 in ?? ()
#13 0x000003c9da144065 in ?? ()
#14 0x00000c17cd40f171 in ?? ()
#15 0x0000257af7ea17e9 in ?? ()
#16 0x0000000000000000 in ?? ()
(gdb) bt full
#0  0x0000000000d97e28 in v8::internal::String::SlowEquals(v8::internal::String*) ()
No symbol table info available.
#1  0x0000000000d9a159 in v8::internal::HashTable<v8::internal::StringTable, v8::internal::StringTableShape, v8::internal::HashTableKey*>::FindEntry(v8::internal::Isolate*, v8::internal::HashTableKey*) ()
No symbol table info available.
#2  0x0000000000d9af40 in v8::internal::StringTable::LookupString(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>) ()
No symbol table info available.
#3  0x0000000000d6b2e1 in v8::internal::LookupIterator::PropertyOrElement(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, bool*, v8::internal::LookupIterator::Configuration) ()
No symbol table info available.
#4  0x0000000000ed3440 in v8::internal::Runtime::GetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>) ()
No symbol table info available.
#5  0x0000000000ed3501 in v8::internal::KeyedGetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>) ()
No symbol table info available.
#6  0x0000000000ed6720 in v8::internal::Runtime_KeyedGetProperty(int, v8::internal::Object**, v8::internal::Isolate*) ()
No symbol table info available.
#7  0x000003c9d9b060c7 in ?? ()
No symbol table info available.
#8  0x000003c9d9d3bb35 in ?? ()
No symbol table info available.
#9  0x000003c9d9b06001 in ?? ()
No symbol table info available.
#10 0x00007ffc2fb445b0 in ?? ()
No symbol table info available.
#11 0x0000000300000000 in ?? ()
No symbol table info available.
#12 0x00007ffc2fb44788 in ?? ()
No symbol table info available.
#13 0x000003c9da144065 in ?? ()
No symbol table info available.
#14 0x00000c17cd40f171 in ?? ()
No symbol table info available.
#15 0x0000257af7ea17e9 in ?? ()
No symbol table info available.
#16 0x0000000000000000 in ?? ()
No symbol table info available.
(gdb) info registers
rax            0x3da7804bf9     264803208185
rbx            0x24     36
rcx            0x14edbd0        21945296
rdx            0x5      5
rsi            0xc17cd40f188    13296367366536
rdi            0xdc8e7ddeaf8    15156534700792
rbp            0x7ffc2fb44290   0x7ffc2fb44290
rsp            0x7ffc2fb43fe0   0x7ffc2fb43fe0
r8             0xc17cd40f188    13296367366536
r9             0x7      7
r10            0xc17cd40f171    13296367366513
r11            0x4      4
r12            0xdc8e7ddeae1    15156534700769
r13            0x5      5
r14            0xc17cd40f171    13296367366513
r15            0x2ed3290        49099408
rip            0xd97e28 0xd97e28 <v8::internal::String::SlowEquals(v8::internal::String*)+1720>
eflags         0x10202  [ IF RF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
(gdb) disassemble
Dump of assembler code for function _ZN2v88internal6String10SlowEqualsEPS1_:
   0x0000000000d97770 <+0>:     push   %rbp
   0x0000000000d97771 <+1>:     mov    %rsp,%rbp
   0x0000000000d97774 <+4>:     push   %r15
   0x0000000000d97776 <+6>:     push   %r14
   0x0000000000d97778 <+8>:     mov    %rsi,%r14
   0x0000000000d9777b <+11>:    push   %r13
   0x0000000000d9777d <+13>:    push   %r12
   0x0000000000d9777f <+15>:    mov    %rdi,%r12
   0x0000000000d97782 <+18>:    push   %rbx
   0x0000000000d97783 <+19>:    sub    $0x288,%rsp
   0x0000000000d9778a <+26>:    movslq 0x13(%rdi),%r13
   0x0000000000d9778e <+30>:    cmp    %r13d,0x13(%rsi)
   0x0000000000d97792 <+34>:    je     0xd977b0 <_ZN2v88internal6String10SlowEqualsEPS1_+64>
   0x0000000000d97794 <+36>:    xor    %ebx,%ebx
   0x0000000000d97796 <+38>:    add    $0x288,%rsp
   0x0000000000d9779d <+45>:    mov    %ebx,%eax
   0x0000000000d9779f <+47>:    pop    %rbx
   0x0000000000d977a0 <+48>:    pop    %r12
   0x0000000000d977a2 <+50>:    pop    %r13
   0x0000000000d977a4 <+52>:    pop    %r14
   0x0000000000d977a6 <+54>:    pop    %r15
   0x0000000000d977a8 <+56>:    pop    %rbp
   0x0000000000d977a9 <+57>:    retq
   0x0000000000d977aa <+58>:    nopw   0x0(%rax,%rax,1)
   0x0000000000d977b0 <+64>:    test   %r13d,%r13d
   0x0000000000d977b3 <+67>:    mov    $0x1,%ebx
   0x0000000000d977b8 <+72>:    je     0xd97796 <_ZN2v88internal6String10SlowEqualsEPS1_+38>
   0x0000000000d977ba <+74>:    mov    0x7(%rdi),%eax
   0x0000000000d977bd <+77>:    test   $0x1,%al
   0x0000000000d977bf <+79>:    jne    0xd977d3 <_ZN2v88internal6String10SlowEqualsEPS1_+99>
   0x0000000000d977c1 <+81>:    mov    0x7(%rsi),%edx
   0x0000000000d977c4 <+84>:    test   $0x1,%dl
   0x0000000000d977c7 <+87>:    jne    0xd977d3 <_ZN2v88internal6String10SlowEqualsEPS1_+99>
   0x0000000000d977c9 <+89>:    shr    $0x2,%eax
   0x0000000000d977cc <+92>:    shr    $0x2,%edx
   0x0000000000d977cf <+95>:    cmp    %edx,%eax
   0x0000000000d977d1 <+97>:    jne    0xd97794 <_ZN2v88internal6String10SlowEqualsEPS1_+36>
   0x0000000000d977d3 <+99>:    mov    -0x1(%r12),%rax
   0x0000000000d977d8 <+104>:   movzbl 0xb(%rax),%eax
   0x0000000000d977dc <+108>:   and    $0x7,%eax
   0x0000000000d977df <+111>:   jmpq   *0x14ed118(,%rax,8)
   0x0000000000d977e6 <+118>:   nopw   %cs:0x0(%rax,%rax,1)
   0x0000000000d977f0 <+128>:   movzbl 0x17(%r12),%ebx
   0x0000000000d977f6 <+134>:   nopw   %cs:0x0(%rax,%rax,1)
   0x0000000000d97800 <+144>:   mov    -0x1(%r14),%rdx
   0x0000000000d97804 <+148>:   movzbl 0xb(%rdx),%edx
   0x0000000000d97808 <+152>:   and    $0x7,%edx
   0x0000000000d9780b <+155>:   jmpq   *0x14ed158(,%rdx,8)
   0x0000000000d97812 <+162>:   nopw   0x0(%rax,%rax,1)
   0x0000000000d97818 <+168>:   xor    %esi,%esi
   0x0000000000d9781a <+170>:   mov    %r12,%rdi
   0x0000000000d9781d <+173>:   callq  0xd7eb60 <_ZN2v88internal12SlicedString15SlicedStringGetEi>
   0x0000000000d97822 <+178>:   mov    %eax,%ebx
   0x0000000000d97824 <+180>:   jmp    0xd97800 <_ZN2v88internal6String10SlowEqualsEPS1_+144>
   0x0000000000d97826 <+182>:   nopw   %cs:0x0(%rax,%rax,1)
   0x0000000000d97830 <+192>:   xor    %esi,%esi
   0x0000000000d97832 <+194>:   mov    %r12,%rdi
   0x0000000000d97835 <+197>:   callq  0xc5c5e0 <_ZN2v88internal21ExternalTwoByteString24ExternalTwoByteStringGetEi>
   0x0000000000d9783a <+202>:   mov    %eax,%ebx
   0x0000000000d9783c <+204>:   jmp    0xd97800 <_ZN2v88internal6String10SlowEqualsEPS1_+144>
   0x0000000000d9783e <+206>:   xchg   %ax,%ax
   0x0000000000d97840 <+208>:   xor    %esi,%esi
   0x0000000000d97842 <+210>:   mov    %r12,%rdi
   0x0000000000d97845 <+213>:   callq  0xd7ebf0 <_ZN2v88internal10ConsString13ConsStringGetEi>
   0x0000000000d9784a <+218>:   mov    %eax,%ebx
   0x0000000000d9784c <+220>:   jmp    0xd97800 <_ZN2v88internal6String10SlowEqualsEPS1_+144>
   0x0000000000d9784e <+222>:   xchg   %ax,%ax
   0x0000000000d97850 <+224>:   movzwl 0x17(%r12),%ebx
   0x0000000000d97856 <+230>:   jmp    0xd97800 <_ZN2v88internal6String10SlowEqualsEPS1_+144>
   0x0000000000d97858 <+232>:   nopl   0x0(%rax,%rax,1)
   0x0000000000d97860 <+240>:   movzbl 0x17(%r14),%eax
   0x0000000000d97865 <+245>:   nopl   (%rax)
   0x0000000000d97868 <+248>:   cmp    %ax,%bx
   0x0000000000d9786b <+251>:   jne    0xd97794 <_ZN2v88internal6String10SlowEqualsEPS1_+36>
   0x0000000000d97871 <+257>:   mov    -0x1(%r12),%rax
   0x0000000000d97876 <+262>:   movzbl 0xb(%rax),%eax
   0x0000000000d9787a <+266>:   cmp    $0x7f,%eax
   0x0000000000d9787d <+269>:   jle    0xd97dd1 <_ZN2v88internal6String10SlowEqualsEPS1_+1633>
   0x0000000000d97883 <+275>:   movslq 0x13(%r12),%rbx
   0x0000000000d97888 <+280>:   movb   $0x1,-0x168(%rbp)
   0x0000000000d9788f <+287>:   xor    %r13d,%r13d
   0x0000000000d97892 <+290>:   movl   $0x0,-0x164(%rbp)
   0x0000000000d9789c <+300>:   movq   $0x0,-0x160(%rbp)
   0x0000000000d978a7 <+311>:   movb   $0x1,-0x40(%rbp)
   0x0000000000d978ab <+315>:   movl   $0x0,-0x3c(%rbp)
   0x0000000000d978b2 <+322>:   movq   $0x0,-0x38(%rbp)
   0x0000000000d978ba <+330>:   mov    %ebx,%r15d
   0x0000000000d978bd <+333>:   mov    -0x1(%r12),%rax
   0x0000000000d978c2 <+338>:   movzbl 0xb(%rax),%eax
   0x0000000000d978c6 <+342>:   and    $0x7,%eax
   0x0000000000d978c9 <+345>:   jmpq   *0x14ed198(,%rax,8)
   0x0000000000d978d0 <+352>:   xor    %esi,%esi
   0x0000000000d978d2 <+354>:   mov    %r14,%rdi
---Type <return> to continue, or q <return> to quit---
   0x0000000000d978d5 <+357>:   callq  0xd7eb60 <_ZN2v88internal12SlicedString15SlicedStringGetEi>
   0x0000000000d978da <+362>:   jmp    0xd97868 <_ZN2v88internal6String10SlowEqualsEPS1_+248>
   0x0000000000d978dc <+364>:   nopl   0x0(%rax)
   0x0000000000d978e0 <+368>:   xor    %esi,%esi
   0x0000000000d978e2 <+370>:   mov    %r14,%rdi
   0x0000000000d978e5 <+373>:   callq  0xc5c5e0 <_ZN2v88internal21ExternalTwoByteString24ExternalTwoByteStringGetEi>
   0x0000000000d978ea <+378>:   jmpq   0xd97868 <_ZN2v88internal6String10SlowEqualsEPS1_+248>
   0x0000000000d978ef <+383>:   nop
   0x0000000000d978f0 <+384>:   xor    %esi,%esi
   0x0000000000d978f2 <+386>:   mov    %r14,%rdi
   0x0000000000d978f5 <+389>:   callq  0xd7ebf0 <_ZN2v88internal10ConsString13ConsStringGetEi>
   0x0000000000d978fa <+394>:   jmpq   0xd97868 <_ZN2v88internal6String10SlowEqualsEPS1_+248>
   0x0000000000d978ff <+399>:   nop
   0x0000000000d97900 <+400>:   movzwl 0x17(%r14),%eax
   0x0000000000d97905 <+405>:   jmpq   0xd97868 <_ZN2v88internal6String10SlowEqualsEPS1_+248>
   0x0000000000d9790a <+410>:   xor    %esi,%esi
   0x0000000000d9790c <+412>:   mov    %r12,%rdi
   0x0000000000d9790f <+415>:   callq  0xc5c5b0 <_ZN2v88internal21ExternalOneByteString24ExternalOneByteStringGetEi>
   0x0000000000d97914 <+420>:   mov    %eax,%ebx
   0x0000000000d97916 <+422>:   jmpq   0xd97800 <_ZN2v88internal6String10SlowEqualsEPS1_+144>
   0x0000000000d9791b <+427>:   xor    %esi,%esi
   0x0000000000d9791d <+429>:   mov    %r14,%rdi
   0x0000000000d97920 <+432>:   callq  0xc5c5b0 <_ZN2v88internal21ExternalOneByteString24ExternalOneByteStringGetEi>
   0x0000000000d97925 <+437>:   jmpq   0xd97868 <_ZN2v88internal6String10SlowEqualsEPS1_+248>
   0x0000000000d9792a <+442>:   movslq %r13d,%r13
   0x0000000000d9792d <+445>:   mov    %ebx,-0x164(%rbp)
   0x0000000000d97933 <+451>:   lea    0x17(%r12,%r13,1),%rax
   0x0000000000d97938 <+456>:   mov    %rax,-0x160(%rbp)
   0x0000000000d9793f <+463>:   lea    -0x280(%rbp),%rax
   0x0000000000d97946 <+470>:   movl   $0x0,-0x178(%rbp)
   0x0000000000d97950 <+480>:   mov    %rax,-0x2a8(%rbp)
   0x0000000000d97957 <+487>:   mov    -0x2a8(%rbp),%rax
   0x0000000000d9795e <+494>:   mov    %r14,%rsi
   0x0000000000d97961 <+497>:   lea    0x128(%rax),%r13
   0x0000000000d97968 <+504>:   mov    %r13,%rdi
   0x0000000000d9796b <+507>:   callq  0xd7f0e0 <_ZN2v88internal16StringComparator5State4InitEPNS0_6StringE>
   0x0000000000d97970 <+512>:   movzbl -0x40(%rbp),%eax
   0x0000000000d97974 <+516>:   mov    -0x3c(%rbp),%r12d
   0x0000000000d97978 <+520>:   mov    -0x38(%rbp),%rsi
   0x0000000000d9797c <+524>:   mov    %r13,-0x2a0(%rbp)
   0x0000000000d97983 <+531>:   nopl   0x0(%rax,%rax,1)
   0x0000000000d97988 <+536>:   mov    -0x164(%rbp),%r13d
   0x0000000000d9798f <+543>:   movzbl -0x168(%rbp),%ebx
   0x0000000000d97996 <+550>:   mov    -0x160(%rbp),%r9
   0x0000000000d9799d <+557>:   cmp    %r13d,%r12d
   0x0000000000d979a0 <+560>:   mov    %r13d,%r14d
   0x0000000000d979a3 <+563>:   cmovle %r12d,%r14d
   0x0000000000d979a7 <+567>:   test   %bl,%bl
   0x0000000000d979a9 <+569>:   je     0xd97bd8 <_ZN2v88internal6String10SlowEqualsEPS1_+1128>
   0x0000000000d979af <+575>:   test   %al,%al
   0x0000000000d979b1 <+577>:   je     0xd97d15 <_ZN2v88internal6String10SlowEqualsEPS1_+1445>
   0x0000000000d979b7 <+583>:   mov    %r9,%rdi
   0x0000000000d979ba <+586>:   movslq %r14d,%rdx
   0x0000000000d979bd <+589>:   mov    %r9,-0x298(%rbp)
   0x0000000000d979c4 <+596>:   callq  0x7b3710 <memcmp@plt>
   0x0000000000d979c9 <+601>:   mov    -0x298(%rbp),%r9
   0x0000000000d979d0 <+608>:   test   %eax,%eax
   0x0000000000d979d2 <+610>:   sete   %al
   0x0000000000d979d5 <+613>:   test   %al,%al
   0x0000000000d979d7 <+615>:   je     0xd97794 <_ZN2v88internal6String10SlowEqualsEPS1_+36>
   0x0000000000d979dd <+621>:   sub    %r14d,%r15d
   0x0000000000d979e0 <+624>:   je     0xd97e71 <_ZN2v88internal6String10SlowEqualsEPS1_+1793>
   0x0000000000d979e6 <+630>:   cmp    %r13d,%r14d
   0x0000000000d979e9 <+633>:   je     0xd97c43 <_ZN2v88internal6String10SlowEqualsEPS1_+1235>
   0x0000000000d979ef <+639>:   test   %bl,%bl
   0x0000000000d979f1 <+641>:   movslq %r14d,%rax
   0x0000000000d979f4 <+644>:   je     0xd97c22 <_ZN2v88internal6String10SlowEqualsEPS1_+1202>
   0x0000000000d979fa <+650>:   add    %rax,%r9
   0x0000000000d979fd <+653>:   mov    %r9,-0x160(%rbp)
   0x0000000000d97a04 <+660>:   mov    %r13d,%r8d
   0x0000000000d97a07 <+663>:   sub    %r14d,%r8d
   0x0000000000d97a0a <+666>:   mov    %r8d,-0x164(%rbp)
   0x0000000000d97a11 <+673>:   cmp    %r12d,%r14d
   0x0000000000d97a14 <+676>:   je     0xd97d9b <_ZN2v88internal6String10SlowEqualsEPS1_+1579>
   0x0000000000d97a1a <+682>:   movzbl -0x40(%rbp),%eax
   0x0000000000d97a1e <+686>:   movslq %r14d,%rsi
   0x0000000000d97a21 <+689>:   test   %al,%al
   0x0000000000d97a23 <+691>:   je     0xd97c32 <_ZN2v88internal6String10SlowEqualsEPS1_+1218>
   0x0000000000d97a29 <+697>:   add    -0x38(%rbp),%rsi
   0x0000000000d97a2d <+701>:   mov    %rsi,-0x38(%rbp)
   0x0000000000d97a31 <+705>:   sub    %r14d,%r12d
   0x0000000000d97a34 <+708>:   mov    %r12d,-0x3c(%rbp)
   0x0000000000d97a38 <+712>:   jmpq   0xd97988 <_ZN2v88internal6String10SlowEqualsEPS1_+536>
   0x0000000000d97a3d <+717>:   add    0x23(%r12),%r13d
   0x0000000000d97a42 <+722>:   mov    0x17(%r12),%r12
   0x0000000000d97a47 <+727>:   jmpq   0xd978bd <_ZN2v88internal6String10SlowEqualsEPS1_+333>
   0x0000000000d97a4c <+732>:   mov    0x17(%r12),%rdi
   0x0000000000d97a51 <+737>:   movslq %r13d,%r13
   0x0000000000d97a54 <+740>:   mov    (%rdi),%rax
   0x0000000000d97a57 <+743>:   callq  *0x20(%rax)
   0x0000000000d97a5a <+746>:   lea    (%rax,%r13,2),%rax
   0x0000000000d97a5e <+750>:   movb   $0x0,-0x168(%rbp)
   0x0000000000d97a65 <+757>:   mov    %ebx,-0x164(%rbp)
   0x0000000000d97a6b <+763>:   mov    %rax,-0x160(%rbp)
---Type <return> to continue, or q <return> to quit---
   0x0000000000d97a72 <+770>:   jmpq   0xd9793f <_ZN2v88internal6String10SlowEqualsEPS1_+463>
   0x0000000000d97a77 <+775>:   lea    -0x280(%rbp),%rax
   0x0000000000d97a7e <+782>:   lea    -0x290(%rbp),%rsi
   0x0000000000d97a85 <+789>:   mov    %r12,-0x180(%rbp)
   0x0000000000d97a8c <+796>:   movl   $0x0,-0x170(%rbp)
   0x0000000000d97a96 <+806>:   movl   $0x1,-0x178(%rbp)
   0x0000000000d97aa0 <+816>:   mov    %rax,%rdi
   0x0000000000d97aa3 <+819>:   movl   $0x21,-0x174(%rbp)
   0x0000000000d97aad <+829>:   movl   $0x0,-0x290(%rbp)
   0x0000000000d97ab7 <+839>:   mov    %rax,-0x2a8(%rbp)
   0x0000000000d97abe <+846>:   callq  0xd7d5b0 <_ZN2v88internal18ConsStringIterator8ContinueEPi>
   0x0000000000d97ac3 <+851>:   mov    -0x290(%rbp),%ecx
   0x0000000000d97ac9 <+857>:   movslq 0x13(%rax),%rbx
   0x0000000000d97acd <+861>:   mov    %ecx,%r13d
   0x0000000000d97ad0 <+864>:   mov    -0x1(%rax),%rdx
   0x0000000000d97ad4 <+868>:   movzbl 0xb(%rdx),%edx
   0x0000000000d97ad8 <+872>:   and    $0x7,%edx
   0x0000000000d97adb <+875>:   jmpq   *0x14ed1d8(,%rdx,8)
   0x0000000000d97ae2 <+882>:   movslq %r13d,%r13
   0x0000000000d97ae5 <+885>:   movb   $0x0,-0x168(%rbp)
   0x0000000000d97aec <+892>:   mov    %ebx,-0x164(%rbp)
   0x0000000000d97af2 <+898>:   lea    0x17(%r12,%r13,2),%rax
   0x0000000000d97af7 <+903>:   mov    %rax,-0x160(%rbp)
   0x0000000000d97afe <+910>:   jmpq   0xd9793f <_ZN2v88internal6String10SlowEqualsEPS1_+463>
   0x0000000000d97b03 <+915>:   movslq %r13d,%r13
   0x0000000000d97b06 <+918>:   sub    %ecx,%ebx
   0x0000000000d97b08 <+920>:   movb   $0x1,-0x168(%rbp)
   0x0000000000d97b0f <+927>:   lea    0x17(%rax,%r13,1),%rax
   0x0000000000d97b14 <+932>:   mov    %ebx,-0x164(%rbp)
   0x0000000000d97b1a <+938>:   mov    %rax,-0x160(%rbp)
   0x0000000000d97b21 <+945>:   jmpq   0xd97957 <_ZN2v88internal6String10SlowEqualsEPS1_+487>
   0x0000000000d97b26 <+950>:   add    0x23(%rax),%r13d
   0x0000000000d97b2a <+954>:   mov    0x17(%rax),%rax
   0x0000000000d97b2e <+958>:   jmp    0xd97ad0 <_ZN2v88internal6String10SlowEqualsEPS1_+864>
   0x0000000000d97b30 <+960>:   mov    0x17(%rax),%rdi
   0x0000000000d97b34 <+964>:   movslq %r13d,%r13
   0x0000000000d97b37 <+967>:   sub    %ecx,%ebx
   0x0000000000d97b39 <+969>:   mov    (%rdi),%rax
   0x0000000000d97b3c <+972>:   callq  *0x20(%rax)
   0x0000000000d97b3f <+975>:   lea    (%rax,%r13,2),%rax
   0x0000000000d97b43 <+979>:   movb   $0x0,-0x168(%rbp)
   0x0000000000d97b4a <+986>:   mov    %ebx,-0x164(%rbp)
   0x0000000000d97b50 <+992>:   mov    %rax,-0x160(%rbp)
   0x0000000000d97b57 <+999>:   jmpq   0xd97957 <_ZN2v88internal6String10SlowEqualsEPS1_+487>
   0x0000000000d97b5c <+1004>:  movslq %r13d,%r13
   0x0000000000d97b5f <+1007>:  sub    %ecx,%ebx
   0x0000000000d97b61 <+1009>:  movb   $0x0,-0x168(%rbp)
   0x0000000000d97b68 <+1016>:  lea    0x17(%rax,%r13,2),%rax
   0x0000000000d97b6d <+1021>:  mov    %ebx,-0x164(%rbp)
   0x0000000000d97b73 <+1027>:  mov    %rax,-0x160(%rbp)
   0x0000000000d97b7a <+1034>:  jmpq   0xd97957 <_ZN2v88internal6String10SlowEqualsEPS1_+487>
   0x0000000000d97b7f <+1039>:  mov    0x17(%r12),%rdi
   0x0000000000d97b84 <+1044>:  movslq %r13d,%r13
   0x0000000000d97b87 <+1047>:  mov    (%rdi),%rax
   0x0000000000d97b8a <+1050>:  callq  *0x20(%rax)
   0x0000000000d97b8d <+1053>:  add    %r13,%rax
   0x0000000000d97b90 <+1056>:  movb   $0x1,-0x168(%rbp)
   0x0000000000d97b97 <+1063>:  mov    %ebx,-0x164(%rbp)
   0x0000000000d97b9d <+1069>:  mov    %rax,-0x160(%rbp)
   0x0000000000d97ba4 <+1076>:  jmpq   0xd9793f <_ZN2v88internal6String10SlowEqualsEPS1_+463>
   0x0000000000d97ba9 <+1081>:  mov    0x17(%rax),%rdi
   0x0000000000d97bad <+1085>:  movslq %r13d,%r13
   0x0000000000d97bb0 <+1088>:  sub    %ecx,%ebx
   0x0000000000d97bb2 <+1090>:  mov    (%rdi),%rax
   0x0000000000d97bb5 <+1093>:  callq  *0x20(%rax)
   0x0000000000d97bb8 <+1096>:  add    %r13,%rax
   0x0000000000d97bbb <+1099>:  movb   $0x1,-0x168(%rbp)
   0x0000000000d97bc2 <+1106>:  mov    %ebx,-0x164(%rbp)
   0x0000000000d97bc8 <+1112>:  mov    %rax,-0x160(%rbp)
   0x0000000000d97bcf <+1119>:  jmpq   0xd97957 <_ZN2v88internal6String10SlowEqualsEPS1_+487>
   0x0000000000d97bd4 <+1124>:  nopl   0x0(%rax)
   0x0000000000d97bd8 <+1128>:  test   %al,%al
   0x0000000000d97bda <+1130>:  je     0xd97d56 <_ZN2v88internal6String10SlowEqualsEPS1_+1510>
   0x0000000000d97be0 <+1136>:  test   %r14d,%r14d
   0x0000000000d97be3 <+1139>:  jle    0xd979dd <_ZN2v88internal6String10SlowEqualsEPS1_+621>
   0x0000000000d97be9 <+1145>:  movzbl (%rsi),%eax
   0x0000000000d97bec <+1148>:  cmp    %ax,(%r9)
   0x0000000000d97bf0 <+1152>:  jne    0xd97796 <_ZN2v88internal6String10SlowEqualsEPS1_+38>
   0x0000000000d97bf6 <+1158>:  lea    -0x1(%r14),%r10d
   0x0000000000d97bfa <+1162>:  xor    %eax,%eax
   0x0000000000d97bfc <+1164>:  jmp    0xd97c18 <_ZN2v88internal6String10SlowEqualsEPS1_+1192>
   0x0000000000d97bfe <+1166>:  xchg   %ax,%ax
   0x0000000000d97c00 <+1168>:  movzwl 0x2(%r9,%rax,2),%edi
   0x0000000000d97c06 <+1174>:  movzbl 0x1(%rsi,%rax,1),%edx
   0x0000000000d97c0b <+1179>:  add    $0x1,%rax
   0x0000000000d97c0f <+1183>:  cmp    %dx,%di
   0x0000000000d97c12 <+1186>:  jne    0xd97796 <_ZN2v88internal6String10SlowEqualsEPS1_+38>
   0x0000000000d97c18 <+1192>:  cmp    %r10,%rax
   0x0000000000d97c1b <+1195>:  jne    0xd97c00 <_ZN2v88internal6String10SlowEqualsEPS1_+1168>
   0x0000000000d97c1d <+1197>:  jmpq   0xd979dd <_ZN2v88internal6String10SlowEqualsEPS1_+621>
   0x0000000000d97c22 <+1202>:  lea    (%r9,%rax,2),%rax
   0x0000000000d97c26 <+1206>:  mov    %rax,-0x160(%rbp)
   0x0000000000d97c2d <+1213>:  jmpq   0xd97a04 <_ZN2v88internal6String10SlowEqualsEPS1_+660>
   0x0000000000d97c32 <+1218>:  mov    -0x38(%rbp),%rdx
---Type <return> to continue, or q <return> to quit---
   0x0000000000d97c36 <+1222>:  lea    (%rdx,%rsi,2),%rsi
   0x0000000000d97c3a <+1226>:  mov    %rsi,-0x38(%rbp)
   0x0000000000d97c3e <+1230>:  jmpq   0xd97a31 <_ZN2v88internal6String10SlowEqualsEPS1_+705>
   0x0000000000d97c43 <+1235>:  mov    -0x178(%rbp),%edx
   0x0000000000d97c49 <+1241>:  xor    %eax,%eax
   0x0000000000d97c4b <+1243>:  movl   $0x0,-0x290(%rbp)
   0x0000000000d97c55 <+1253>:  test   %edx,%edx
   0x0000000000d97c57 <+1255>:  jne    0xd97e3e <_ZN2v88internal6String10SlowEqualsEPS1_+1742>
   0x0000000000d97c5d <+1261>:  movslq 0x13(%rax),%r12
   0x0000000000d97c61 <+1265>:  xor    %ebx,%ebx
   0x0000000000d97c63 <+1267>:  mov    -0x1(%rax),%rdx
   0x0000000000d97c67 <+1271>:  movzbl 0xb(%rdx),%edx
   0x0000000000d97c6b <+1275>:  and    $0x7,%edx
   0x0000000000d97c6e <+1278>:  jmpq   *0x14ed218(,%rdx,8)
   0x0000000000d97c75 <+1285>:  mov    0x17(%rax),%rdi
   0x0000000000d97c79 <+1289>:  movslq %ebx,%rbx
   0x0000000000d97c7c <+1292>:  mov    (%rdi),%rax
   0x0000000000d97c7f <+1295>:  callq  *0x20(%rax)
   0x0000000000d97c82 <+1298>:  add    %rbx,%rax
   0x0000000000d97c85 <+1301>:  movb   $0x1,-0x168(%rbp)
   0x0000000000d97c8c <+1308>:  mov    %r12d,-0x164(%rbp)
   0x0000000000d97c93 <+1315>:  mov    %rax,-0x160(%rbp)
   0x0000000000d97c9a <+1322>:  mov    -0x3c(%rbp),%r12d
   0x0000000000d97c9e <+1326>:  jmpq   0xd97a11 <_ZN2v88internal6String10SlowEqualsEPS1_+673>
   0x0000000000d97ca3 <+1331>:  movslq %ebx,%rbx
   0x0000000000d97ca6 <+1334>:  movb   $0x0,-0x168(%rbp)
   0x0000000000d97cad <+1341>:  mov    %r12d,-0x164(%rbp)
   0x0000000000d97cb4 <+1348>:  lea    0x17(%rax,%rbx,2),%rax
   0x0000000000d97cb9 <+1353>:  mov    %rax,-0x160(%rbp)
   0x0000000000d97cc0 <+1360>:  jmp    0xd97c9a <_ZN2v88internal6String10SlowEqualsEPS1_+1322>
   0x0000000000d97cc2 <+1362>:  movslq %ebx,%rbx
   0x0000000000d97cc5 <+1365>:  movb   $0x1,-0x168(%rbp)
   0x0000000000d97ccc <+1372>:  mov    %r12d,-0x164(%rbp)
   0x0000000000d97cd3 <+1379>:  lea    0x17(%rax,%rbx,1),%rax
   0x0000000000d97cd8 <+1384>:  mov    %rax,-0x160(%rbp)
   0x0000000000d97cdf <+1391>:  jmp    0xd97c9a <_ZN2v88internal6String10SlowEqualsEPS1_+1322>
   0x0000000000d97ce1 <+1393>:  add    0x23(%rax),%ebx
   0x0000000000d97ce4 <+1396>:  mov    0x17(%rax),%rax
   0x0000000000d97ce8 <+1400>:  jmpq   0xd97c63 <_ZN2v88internal6String10SlowEqualsEPS1_+1267>
   0x0000000000d97ced <+1405>:  mov    0x17(%rax),%rdi
   0x0000000000d97cf1 <+1409>:  movslq %ebx,%rbx
   0x0000000000d97cf4 <+1412>:  mov    (%rdi),%rax
   0x0000000000d97cf7 <+1415>:  callq  *0x20(%rax)
   0x0000000000d97cfa <+1418>:  lea    (%rax,%rbx,2),%rax
   0x0000000000d97cfe <+1422>:  movb   $0x0,-0x168(%rbp)
   0x0000000000d97d05 <+1429>:  mov    %r12d,-0x164(%rbp)
   0x0000000000d97d0c <+1436>:  mov    %rax,-0x160(%rbp)
   0x0000000000d97d13 <+1443>:  jmp    0xd97c9a <_ZN2v88internal6String10SlowEqualsEPS1_+1322>
   0x0000000000d97d15 <+1445>:  test   %r14d,%r14d
   0x0000000000d97d18 <+1448>:  jle    0xd979dd <_ZN2v88internal6String10SlowEqualsEPS1_+621>
   0x0000000000d97d1e <+1454>:  movzbl (%r9),%eax
   0x0000000000d97d22 <+1458>:  cmp    (%rsi),%ax
   0x0000000000d97d25 <+1461>:  jne    0xd97794 <_ZN2v88internal6String10SlowEqualsEPS1_+36>
   0x0000000000d97d2b <+1467>:  lea    -0x1(%r14),%edi
   0x0000000000d97d2f <+1471>:  xor    %eax,%eax
   0x0000000000d97d31 <+1473>:  nopl   0x0(%rax)
   0x0000000000d97d38 <+1480>:  cmp    %rdi,%rax
   0x0000000000d97d3b <+1483>:  je     0xd979dd <_ZN2v88internal6String10SlowEqualsEPS1_+621>
   0x0000000000d97d41 <+1489>:  movzbl 0x1(%r9,%rax,1),%edx
   0x0000000000d97d47 <+1495>:  add    $0x1,%rax
   0x0000000000d97d4b <+1499>:  cmp    (%rsi,%rax,2),%dx
   0x0000000000d97d4f <+1503>:  je     0xd97d38 <_ZN2v88internal6String10SlowEqualsEPS1_+1480>
   0x0000000000d97d51 <+1505>:  jmpq   0xd97794 <_ZN2v88internal6String10SlowEqualsEPS1_+36>
   0x0000000000d97d56 <+1510>:  movslq %r14d,%rax
   0x0000000000d97d59 <+1513>:  lea    (%r9,%rax,2),%rdx
   0x0000000000d97d5d <+1517>:  cmp    %rdx,%r9
   0x0000000000d97d60 <+1520>:  jae    0xd97d91 <_ZN2v88internal6String10SlowEqualsEPS1_+1569>
   0x0000000000d97d62 <+1522>:  movzwl (%r9),%eax
   0x0000000000d97d66 <+1526>:  cmp    %ax,(%rsi)
   0x0000000000d97d69 <+1529>:  jne    0xd97e37 <_ZN2v88internal6String10SlowEqualsEPS1_+1735>
   0x0000000000d97d6f <+1535>:  mov    %r9,%rax
   0x0000000000d97d72 <+1538>:  jmp    0xd97d84 <_ZN2v88internal6String10SlowEqualsEPS1_+1556>
   0x0000000000d97d74 <+1540>:  nopl   0x0(%rax)
   0x0000000000d97d78 <+1544>:  movzwl (%rax),%ecx
   0x0000000000d97d7b <+1547>:  cmp    %cx,(%rsi)
   0x0000000000d97d7e <+1550>:  jne    0xd97e37 <_ZN2v88internal6String10SlowEqualsEPS1_+1735>
   0x0000000000d97d84 <+1556>:  add    $0x2,%rax
   0x0000000000d97d88 <+1560>:  add    $0x2,%rsi
   0x0000000000d97d8c <+1564>:  cmp    %rax,%rdx
   0x0000000000d97d8f <+1567>:  ja     0xd97d78 <_ZN2v88internal6String10SlowEqualsEPS1_+1544>
   0x0000000000d97d91 <+1569>:  mov    $0x1,%eax
   0x0000000000d97d96 <+1574>:  jmpq   0xd979d5 <_ZN2v88internal6String10SlowEqualsEPS1_+613>
   0x0000000000d97d9b <+1579>:  mov    -0x50(%rbp),%eax
   0x0000000000d97d9e <+1582>:  xor    %esi,%esi
   0x0000000000d97da0 <+1584>:  movl   $0x0,-0x290(%rbp)
   0x0000000000d97daa <+1594>:  test   %eax,%eax
   0x0000000000d97dac <+1596>:  jne    0xd97e56 <_ZN2v88internal6String10SlowEqualsEPS1_+1766>
   0x0000000000d97db2 <+1602>:  mov    -0x2a0(%rbp),%rdi
   0x0000000000d97db9 <+1609>:  xor    %edx,%edx
   0x0000000000d97dbb <+1611>:  callq  0xd97640 <_ZN2v88internal6String9VisitFlatINS0_16StringComparator5StateEEEPNS0_10ConsStringEPT_PS1_i>
   0x0000000000d97dc0 <+1616>:  mov    -0x3c(%rbp),%r12d
   0x0000000000d97dc4 <+1620>:  movzbl -0x40(%rbp),%eax
   0x0000000000d97dc8 <+1624>:  mov    -0x38(%rbp),%rsi
   0x0000000000d97dcc <+1628>:  jmpq   0xd97988 <_ZN2v88internal6String10SlowEqualsEPS1_+536>
---Type <return> to continue, or q <return> to quit---
   0x0000000000d97dd1 <+1633>:  mov    -0x1(%r12),%rax
   0x0000000000d97dd6 <+1638>:  testb  $0x3,0xb(%rax)
   0x0000000000d97dda <+1642>:  jne    0xd97883 <_ZN2v88internal6String10SlowEqualsEPS1_+275>
   0x0000000000d97de0 <+1648>:  mov    -0x1(%r12),%rax
   0x0000000000d97de5 <+1653>:  testb  $0x4,0xb(%rax)
   0x0000000000d97de9 <+1657>:  je     0xd97883 <_ZN2v88internal6String10SlowEqualsEPS1_+275>
   0x0000000000d97def <+1663>:  mov    -0x1(%r14),%rax
   0x0000000000d97df3 <+1667>:  movzbl 0xb(%rax),%eax
   0x0000000000d97df7 <+1671>:  cmp    $0x7f,%eax
   0x0000000000d97dfa <+1674>:  jg     0xd97883 <_ZN2v88internal6String10SlowEqualsEPS1_+275>
   0x0000000000d97e00 <+1680>:  mov    -0x1(%r14),%rax
   0x0000000000d97e04 <+1684>:  testb  $0x3,0xb(%rax)
   0x0000000000d97e08 <+1688>:  jne    0xd97883 <_ZN2v88internal6String10SlowEqualsEPS1_+275>
   0x0000000000d97e0e <+1694>:  mov    -0x1(%r14),%rax
   0x0000000000d97e12 <+1698>:  testb  $0x4,0xb(%rax)
   0x0000000000d97e16 <+1702>:  je     0xd97883 <_ZN2v88internal6String10SlowEqualsEPS1_+275>
   0x0000000000d97e1c <+1708>:  lea    0x17(%r14),%rsi
   0x0000000000d97e20 <+1712>:  lea    0x17(%r12),%rdi
   0x0000000000d97e25 <+1717>:  movslq %r13d,%rdx
=> 0x0000000000d97e28 <+1720>:  callq  0x7b3710 <memcmp@plt>
   0x0000000000d97e2d <+1725>:  test   %eax,%eax
   0x0000000000d97e2f <+1727>:  sete   %bl
   0x0000000000d97e32 <+1730>:  jmpq   0xd97796 <_ZN2v88internal6String10SlowEqualsEPS1_+38>
   0x0000000000d97e37 <+1735>:  xor    %eax,%eax
   0x0000000000d97e39 <+1737>:  jmpq   0xd979d5 <_ZN2v88internal6String10SlowEqualsEPS1_+613>
   0x0000000000d97e3e <+1742>:  mov    -0x2a8(%rbp),%rdi
   0x0000000000d97e45 <+1749>:  lea    -0x290(%rbp),%rsi
   0x0000000000d97e4c <+1756>:  callq  0xd7d5b0 <_ZN2v88internal18ConsStringIterator8ContinueEPi>
   0x0000000000d97e51 <+1761>:  jmpq   0xd97c5d <_ZN2v88internal6String10SlowEqualsEPS1_+1261>
   0x0000000000d97e56 <+1766>:  mov    -0x2a0(%rbp),%rdi
   0x0000000000d97e5d <+1773>:  lea    -0x290(%rbp),%rsi
   0x0000000000d97e64 <+1780>:  callq  0xd7d5b0 <_ZN2v88internal18ConsStringIterator8ContinueEPi>
   0x0000000000d97e69 <+1785>:  mov    %rax,%rsi
   0x0000000000d97e6c <+1788>:  jmpq   0xd97db2 <_ZN2v88internal6String10SlowEqualsEPS1_+1602>
   0x0000000000d97e71 <+1793>:  mov    $0x1,%ebx
   0x0000000000d97e76 <+1798>:  jmpq   0xd97796 <_ZN2v88internal6String10SlowEqualsEPS1_+38>
End of assembler dump.
(gdb)

@refack
Copy link
Contributor

refack commented Aug 1, 2017

@myitcv could you try and capture a stacktrace with lldb (v8 bt as per #8074 (comment)), that should contain the JS frames as well

@hashseed
Copy link
Member

hashseed commented Aug 1, 2017

If it reproduces with v6.11.1, then at least the string rehashing patch cannot be responsible for it.

@bnoordhuis
Copy link
Member

@myitcv What happens when you remove --stack_size=10000? Common misunderstanding: it doesn't set the stack size, it tells V8 to assume the stack is that big.

@myitcv
Copy link
Author

myitcv commented Aug 1, 2017

@refack with a new core dump: https://gist.github.com/myitcv/4fbcb7b34ea44f645b81ba4c3c139e78

You will notice that there is a fair amount of recursion going on here. This is expected given the test it is running.

@myitcv
Copy link
Author

myitcv commented Aug 1, 2017

@bnoordhuis thanks, I didn't set that myself... going with the status quo.

If I remove --stack_size=10000 then I get:

RangeError: Maximum call stack size exceeded

So I suspect that flag was put in there intentionally... will check.

@bnoordhuis
Copy link
Member

@myitcv Try setting ulimit -s to a value > than --stack_size=....

@myitcv
Copy link
Author

myitcv commented Aug 1, 2017

@bnoordhuis 👍 - that seems to have sorted things.

Prior to your suggestion my ulimit -s was less than --stack_size

With the two equal I now cannot repro this in v8.2.1

I'm tempted to close this now unless there's some merit in keeping it open from your perspective?

Thanks again

@myitcv
Copy link
Author

myitcv commented Aug 1, 2017

I'll close for now, but please feel free to re-open if as I say there's a reason you would like to keep it open.

@myitcv myitcv closed this as completed Aug 1, 2017
myitcv added a commit to myitcv/gopherjs that referenced this issue Aug 3, 2017
As outlined in gopherjs#661, the
compiler fails to generate code to copy a struct/array value for an
assignment when the target's underlying type is an interface type,
whether for explicit variable assignments, implicit function/method
parameters etc. Instead, taking the example of explicit variable
assignment, the interface variable is assigned a value that contains the
same pointer to the source struct/array val (we're in Javascript world,
so everything is a pointer). This means that changes to the struct/array
value via the source variable are, incorrectly, visible via the target
variable. gopherjs#661 gives a simple
example. There is a further issue when interface values are assigned to
interface-typed variables: struct/array values are not copied when they
should be.

For some reason the changes that address the aforementioned issues start
to tip the std library tests over the V8 stack size limit, causing
text/template TestMaxExecDepth to fail randomly locally and on CI. This
had previously been addressed by @neelance in
1f89545; the --stack_size flag was
passed to NodeJS which in turn passed the value onto V8. But per
nodejs/node#14567 (comment) it
was pointed out that the value of ulimit -s must be >= the value of
--stack_size for the --stack_size to make any sort of sense. Hence this
commit also harmonises the setting of ulimit -s during the CI test run
with the value of --stack_size that is passed to NodeJS (which in turn
passes that value onto V8) when running either gopherjs test or gopherjs
run.

Fixes gopherjs#661.
myitcv added a commit to myitcv/gopherjs that referenced this issue Aug 26, 2017
Picking up on @shurcooL's comment in
gopherjs#669 (comment).

We've started randomly seeing std library tests tip over the V8 stack
size limit, causing text/template TestMaxExecDepth to fail randomly
locally and on CI. This had previously been addressed by @neelance in
1f89545; the --stack_size flag was passed to NodeJS which in turn passed
the value onto V8. But per
nodejs/node#14567 (comment) it
was pointed out that the value of ulimit -s must be >= the value of
--stack_size for the --stack_size to make any sort of sense. Hence this
commit also harmonises the setting of ulimit -s during the CI test run
with the value of --stack_size that is passed to NodeJS (which in turn
passes that value onto V8) when running either gopherjs test or gopherjs
run.
myitcv added a commit to myitcv/gopherjs that referenced this issue Aug 27, 2017
Picking up on @shurcooL's comment in
gopherjs#669 (comment).

We've started randomly seeing std library tests tip over the V8 stack
size limit, causing text/template TestMaxExecDepth to fail randomly
locally and on CI. This had previously been addressed by @neelance in
1f89545; the --stack_size flag was passed to NodeJS which in turn passed
the value onto V8. But per
nodejs/node#14567 (comment) it
was pointed out that the value of ulimit -s must be >= the value of
--stack_size for the --stack_size to make any sort of sense. Hence this
commit also harmonises the setting of ulimit -s during the CI test run
with the value of --stack_size that is passed to NodeJS (which in turn
passes that value onto V8) when running either gopherjs test or gopherjs
run.
dmitshur pushed a commit to gopherjs/gopherjs that referenced this issue Sep 6, 2017
The goal of this change is to fix intermittent test failures we've started seeing
recently:

	=== RUN   TestMaxExecDepth
	FAIL	text/template	2.272s

In 1f89545, the --stack_size flag was
passed to Node.js. In nodejs/node#14567, it was pointed
out that the value of ulimit -s must be >= the value of --stack_size.

This change makes that so by setting --stack_size based on the current value
of ulimit, and sets ulimit to 10000 in CI.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
Development

No branches or pull requests

4 participants