|
|
DescriptionReplace DumpBacktrace with Chromium's StackTrace implementation.
Adds support for dumping the stack on Windows. Also enables in-process
stack dumping in d8 to dump the stack on exceptions and signals.
This CL changes the format of stack dumps from:
1: V8_Fatal
2: 0x1ac6ba5
3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)
4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*)
...
To:
./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e]
./out/x64.debug/d8() [0x1c6ede5]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330]
./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2]
./out/x64.debug/d8() [0x1c67538]
./out/x64.debug/d8() [0x1ac80b5]
./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator
::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b]
./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator
::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570]
Committed: https://crrev.com/49c14f63ef1ea94b8d7b5a9dfe939b2dbc02e42e
Cr-Commit-Position: refs/heads/master@{#38717}
Patch Set 1 #Patch Set 2 : cl formatted #Patch Set 3 : Fix windows #Patch Set 4 : Fix a few things #Patch Set 5 : More fixes #Patch Set 6 : Fix Win Build. #Patch Set 7 : Fix Android #Patch Set 8 : More fixes #Patch Set 9 : Fix mac #
Total comments: 21
Patch Set 10 : Address Comments #
Messages
Total messages: 55 (44 generated)
Description was changed from ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] You may also see two dumps (one with symbols and the second without) on an Abort as the second dump will be printed when handling the abort signal handler. BUG= ========== to ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ==========
The CQ bit was checked by rmcilroy@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_android_arm_compile_rel on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_android_arm_compile_rel/...) v8_linux64_asan_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_asan_rel_ng/buil...)
Description was changed from ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ========== to ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ==========
Description was changed from ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ========== to ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ==========
Description was changed from ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ========== to ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ==========
The CQ bit was checked by rmcilroy@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_win64_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win64_rel_ng/builds/12610) v8_win_compile_dbg on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_compile_dbg/builds/2...) v8_win_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_rel_ng/builds/12625)
The CQ bit was checked by rmcilroy@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux64_avx2_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_avx2_rel_ng/buil...) v8_linux_dbg_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_dbg_ng/builds/11087) v8_linux_gcc_compile_rel on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_gcc_compile_rel/bu...) v8_linux_nodcheck_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_nodcheck_rel_ng/bu...) v8_linux_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_rel_ng/builds/11032)
The CQ bit was checked by rmcilroy@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_win_nosnap_shared_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_nosnap_shared_rel_ng...) v8_win_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_rel_ng/builds/12628)
Patchset #7 (id:120001) has been deleted
The CQ bit was checked by rmcilroy@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Description was changed from ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ========== to ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ==========
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_mac_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_mac_rel_ng/builds/7124)
The CQ bit was checked by rmcilroy@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_mac_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_mac_rel_ng/builds/7126)
The CQ bit was checked by rmcilroy@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
rmcilroy@chromium.org changed reviewers: + mstarzinger@chromium.org
Michi: could you take a look. This is mostly a copy of the Chromium implementation, with some unnecessary things removed and then tweaked to avoid pulling in more of Chromium base library. It gives us Windows dumps and also signal and uncaught C++ exception dumps on d8. I'll send out a PSA before landing this.
mstarzinger@chromium.org changed reviewers: + jkummerow@chromium.org, rossberg@chromium.org
I would be fine with this (integration looks good, didn't look at the actual implementation within base::debug yet). But please do send out the PSA (maybe even an RFC) as you suggested. Also I would like to hear Andreas' opinion, as he wrote the old rudimentary stack trace dumping. Also Jakob might have an opinion about the build changes. One question I have: Does the mocking with signals in d8 somehow interfere with debugging via GDB and friends in any way (i.e. does GDB still pause at the at exactly the same places when signals happen)? Andreas: WDYT? Jakob: WDYT in general? PTAL at build system changes.
On 2016/08/18 08:01:51, Michael Starzinger wrote: > I would be fine with this (integration looks good, didn't look at the actual > implementation within base::debug yet). But please do send out the PSA (maybe > even an RFC) as you suggested. Also I would like to hear Andreas' opinion, as he > wrote the old rudimentary stack trace dumping. Also Jakob might have an opinion > about the build changes. > > One question I have: Does the mocking with signals in d8 somehow interfere with > debugging via GDB and friends in any way (i.e. does GDB still pause at the at > exactly the same places when signals happen)? It doesn't seem to interfere. Breakpoints are completely unaffected (SIGBREAK isn't handled by the stack dumper). For signals which are handled, the GDB signal handlers end up running first, so you get the (e.g.) SEGV at the same place you would see it otherwise. If you hit continue at this point (which would usually just kill the program), it then runs the stack dump signal handler which prints out the (unsymbolized) stack trace, and then re-throws the signal, which GDB catches again (so you get a second chance at the same SEGV point). Example gdb backtrace from a induced SEGV in VisitObjectLiteral: Program received signal SIGSEGV, Segmentation fault. v8::internal::interpreter::BytecodeGenerator::VisitObjectLiteral ( this=0x7fffffffbf50, expr=0x243ff70) at ../src/interpreter/bytecode-generator.cc:1696 1696 (*((int*)0))++; (gdb) bt #0 v8::internal::interpreter::BytecodeGenerator::VisitObjectLiteral ( this=0x7fffffffbf50, expr=0x243ff70) at ../src/interpreter/bytecode-generator.cc:1696 #1 0x0000000001ac324b in v8::internal::interpreter::BytecodeGenerator::Visit ( this=0x7fffffffbf50, node=0x243ff70) ... (gdb) c Continuing. Received signal 11 SEGV_MAPERR 000000000000 ==== C stack trace =============================== [0x000001c7009e] [0x000001c70013] ... [0x0ee9e0a063a7] [end of stack trace] Program received signal SIGSEGV, Segmentation fault. v8::internal::interpreter::BytecodeGenerator::VisitObjectLiteral ( this=0x7fffffffbf50, expr=0x243ff70) at ../src/interpreter/bytecode-generator.cc:1696 1696 (*((int*)0))++; (gdb) c Continuing. [Thread 0x7ffff5a20700 (LWP 22778) exited] ...
On 2016/08/18 09:23:44, rmcilroy wrote: > On 2016/08/18 08:01:51, Michael Starzinger wrote: > > I would be fine with this (integration looks good, didn't look at the actual > > implementation within base::debug yet). But please do send out the PSA (maybe > > even an RFC) as you suggested. Also I would like to hear Andreas' opinion, as > he > > wrote the old rudimentary stack trace dumping. Also Jakob might have an > opinion > > about the build changes. > > > > One question I have: Does the mocking with signals in d8 somehow interfere > with > > debugging via GDB and friends in any way (i.e. does GDB still pause at the at > > exactly the same places when signals happen)? > > It doesn't seem to interfere. Breakpoints are completely unaffected (SIGBREAK > isn't handled by the stack dumper). For signals which are handled, the GDB > signal handlers end up running first, so you get the (e.g.) SEGV at the same > place you would see it otherwise. If you hit continue at this point (which would > usually just kill the program), it then runs the stack dump signal handler which > prints out the (unsymbolized) stack trace, and then re-throws the signal, which > GDB catches again (so you get a second chance at the same SEGV point). > > Example gdb backtrace from a induced SEGV in VisitObjectLiteral: > > Program received signal SIGSEGV, Segmentation fault. > v8::internal::interpreter::BytecodeGenerator::VisitObjectLiteral ( > this=0x7fffffffbf50, expr=0x243ff70) > at ../src/interpreter/bytecode-generator.cc:1696 > 1696 (*((int*)0))++; > (gdb) bt > #0 v8::internal::interpreter::BytecodeGenerator::VisitObjectLiteral ( > this=0x7fffffffbf50, expr=0x243ff70) > at ../src/interpreter/bytecode-generator.cc:1696 > #1 0x0000000001ac324b in v8::internal::interpreter::BytecodeGenerator::Visit ( > this=0x7fffffffbf50, node=0x243ff70) > > ... > > (gdb) c > Continuing. > Received signal 11 SEGV_MAPERR 000000000000 > > ==== C stack trace =============================== > > [0x000001c7009e] > [0x000001c70013] > > ... > > [0x0ee9e0a063a7] > [end of stack trace] > > Program received signal SIGSEGV, Segmentation fault. > v8::internal::interpreter::BytecodeGenerator::VisitObjectLiteral ( > this=0x7fffffffbf50, expr=0x243ff70) > at ../src/interpreter/bytecode-generator.cc:1696 > 1696 (*((int*)0))++; > (gdb) c > Continuing. > [Thread 0x7ffff5a20700 (LWP 22778) exited] > > ... Cool. Thanks for elaborating/investigating! This behavior works for me.
LGTM with nits. https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn File BUILD.gn (right): https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn#newcode2047 BUILD.gn:2047: "src/base/functional.cc", why is "src/base/free_deleter.h" not required here? https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn#newcode2092 BUILD.gn:2092: "src/base/debug/stack_trace_posix.cc", nit: "d" alpha-sorts before "p" https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn#newcode2114 BUILD.gn:2114: "src/base/debug/stack_trace_android.cc", again https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn#newcode2120 BUILD.gn:2120: "src/base/debug/stack_trace_posix.cc", again https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... File src/base/debug/stack_trace.h (right): https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... src/base/debug/stack_trace.h:1: // Copyright 2016 the V8 project authors. All rights reserved. If this is copied from Chromium, it should probably retain its original copyright header, maybe with an added remark (see src/base/safe_math.h for an existing example). https://codereview.chromium.org/2248393002/diff/180001/src/v8.gyp File src/v8.gyp (right): https://codereview.chromium.org/2248393002/diff/180001/src/v8.gyp#newcode1825 src/v8.gyp:1825: 'base/debug/stack_trace_posix.cc' nit: "d" alpha-sorts before "p", again several times below
If this makes stack traces work on Windows I'm all for it (even though I find the new format unnecessarily verbose).
LGTM from my side. Just nits. https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... File src/base/debug/stack_trace.h (right): https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... src/base/debug/stack_trace.h:1: // Copyright 2016 the V8 project authors. All rights reserved. On 2016/08/18 09:36:13, Jakob wrote: > If this is copied from Chromium, it should probably retain its original > copyright header, maybe with an added remark (see src/base/safe_math.h for an > existing example). +1. Applies to all five stack-trace files I suppose. https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... src/base/debug/stack_trace.h:5: #ifndef BASE_DEBUG_STACK_TRACE_H_ nit: V8_BASE_DEBUG_STACK_TRACE_H_ https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... src/base/debug/stack_trace.h:93: #endif // BASE_DEBUG_STACK_TRACE_H_ nit: V8_BASE_DEBUG_STACK_TRACE_H_ https://codereview.chromium.org/2248393002/diff/180001/src/base/free_deleter.h File src/base/free_deleter.h (right): https://codereview.chromium.org/2248393002/diff/180001/src/base/free_deleter.... src/base/free_deleter.h:5: #ifndef BASE_MEMORY_FREE_DELETER_H_ nit: V8_BASE_FREE_DELETER_H_ https://codereview.chromium.org/2248393002/diff/180001/src/base/free_deleter.... src/base/free_deleter.h:25: #endif // BASE_MEMORY_FREE_DELETER_H_ nit: V8_BASE_FREE_DELETER_H_
The CQ bit was checked by rmcilroy@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
> If this makes stack traces work on Windows I'm all for it (even though I find > the new format unnecessarily verbose). Yeah I'm not super keen on the new format either, but I wanted to keep the changes from Chromium minimal, and there is some info in the new format that can be useful (e.g., code offset in the function). https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn File BUILD.gn (right): https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn#newcode2047 BUILD.gn:2047: "src/base/functional.cc", On 2016/08/18 09:36:13, Jakob wrote: > why is "src/base/free_deleter.h" not required here? Oops, good catch, thanks. Done https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn#newcode2092 BUILD.gn:2092: "src/base/debug/stack_trace_posix.cc", On 2016/08/18 09:36:13, Jakob wrote: > nit: "d" alpha-sorts before "p" Done https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn#newcode2114 BUILD.gn:2114: "src/base/debug/stack_trace_android.cc", On 2016/08/18 09:36:13, Jakob wrote: > again Done. https://codereview.chromium.org/2248393002/diff/180001/BUILD.gn#newcode2120 BUILD.gn:2120: "src/base/debug/stack_trace_posix.cc", On 2016/08/18 09:36:13, Jakob wrote: > again Done. https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... File src/base/debug/stack_trace.h (right): https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... src/base/debug/stack_trace.h:1: // Copyright 2016 the V8 project authors. All rights reserved. On 2016/08/18 10:39:18, Michael Starzinger wrote: > On 2016/08/18 09:36:13, Jakob wrote: > > If this is copied from Chromium, it should probably retain its original > > copyright header, maybe with an added remark (see src/base/safe_math.h for an > > existing example). > > +1. Applies to all five stack-trace files I suppose. Thanks. I changed this since presumbit hooks complained, but the approach in safe_math.h works. Done. https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... src/base/debug/stack_trace.h:5: #ifndef BASE_DEBUG_STACK_TRACE_H_ On 2016/08/18 10:39:19, Michael Starzinger wrote: > nit: V8_BASE_DEBUG_STACK_TRACE_H_ Done. https://codereview.chromium.org/2248393002/diff/180001/src/base/debug/stack_t... src/base/debug/stack_trace.h:93: #endif // BASE_DEBUG_STACK_TRACE_H_ On 2016/08/18 10:39:18, Michael Starzinger wrote: > nit: V8_BASE_DEBUG_STACK_TRACE_H_ Done. https://codereview.chromium.org/2248393002/diff/180001/src/base/free_deleter.h File src/base/free_deleter.h (right): https://codereview.chromium.org/2248393002/diff/180001/src/base/free_deleter.... src/base/free_deleter.h:5: #ifndef BASE_MEMORY_FREE_DELETER_H_ On 2016/08/18 10:39:19, Michael Starzinger wrote: > nit: V8_BASE_FREE_DELETER_H_ Done. https://codereview.chromium.org/2248393002/diff/180001/src/base/free_deleter.... src/base/free_deleter.h:25: #endif // BASE_MEMORY_FREE_DELETER_H_ On 2016/08/18 10:39:19, Michael Starzinger wrote: > nit: V8_BASE_FREE_DELETER_H_ Done. https://codereview.chromium.org/2248393002/diff/180001/src/v8.gyp File src/v8.gyp (right): https://codereview.chromium.org/2248393002/diff/180001/src/v8.gyp#newcode1825 src/v8.gyp:1825: 'base/debug/stack_trace_posix.cc' On 2016/08/18 09:36:13, Jakob wrote: > nit: "d" alpha-sorts before "p", again several times below Done.
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by rmcilroy@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from mstarzinger@chromium.org, jkummerow@chromium.org Link to the patchset: https://codereview.chromium.org/2248393002/#ps200001 (title: "Address Comments")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ========== to ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ==========
Message was sent while issue was closed.
Committed patchset #10 (id:200001)
Message was sent while issue was closed.
Description was changed from ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] ========== to ========== Replace DumpBacktrace with Chromium's StackTrace implementation. Adds support for dumping the stack on Windows. Also enables in-process stack dumping in d8 to dump the stack on exceptions and signals. This CL changes the format of stack dumps from: 1: V8_Fatal 2: 0x1ac6ba5 3: v8::internal::interpreter::BytecodeGenerator::Visit(v8::internal::AstNode*) 4: v8::internal::interpreter::BytecodeGenerator::VisitForAccumulatorValue(v8::internal::Expression*) ... To: ./out/x64.debug/d8(v8::base::debug::StackTrace::StackTrace()+0x1e) [0x1c6ee5e] ./out/x64.debug/d8() [0x1c6ede5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330) [0x7fa01193e330] ./out/x64.debug/d8(v8::base::OS::Abort()+0x12) [0x1c6cea2] ./out/x64.debug/d8() [0x1c67538] ./out/x64.debug/d8() [0x1ac80b5] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::Visit(v8::internal::AstNode*)+0x3cb) [0x1ac323b] ./out/x64.debug/d8(v8::internal::interpreter::BytecodeGenerator ::VisitForAccumulatorValue(v8::internal::Expression*)+0x40) [0x1ac2570] Committed: https://crrev.com/49c14f63ef1ea94b8d7b5a9dfe939b2dbc02e42e Cr-Commit-Position: refs/heads/master@{#38717} ==========
Message was sent while issue was closed.
Patchset 10 (id:??) landed as https://crrev.com/49c14f63ef1ea94b8d7b5a9dfe939b2dbc02e42e Cr-Commit-Position: refs/heads/master@{#38717} |