I'm trying to debug an electron app that is getting stuck in C++ code being
called by javascript, so I've decided to use v8 gdbjit integration to get
javascript stack trace from gdb. I've set `v8_enable_gdbjit` gn build
argument to `true` and also passed `--gdbjit` argument to v8, but the
renderer seems to be getting stuck in a call to `RemoveJITCodeEntries`.
Here's part of the stack:
#0 0x00007ffff6850d24 in (anonymous namespace)::(anonymous
namespace)::(anonymous namespace)::RemoveJITCodeEntries (
map=<optimized out>, range=...)
at ../../v8/src/gdb-jit.cc:2090
#1 (anonymous namespace)::(anonymous namespace)::(anonymous
namespace)::AddCode (name=<optimized out>,
code=<optimized out>, shared=<optimized out>,
lineinfo=<optimized out>)
at ../../v8/src/gdb-jit.cc:2148
#2 (anonymous namespace)::(anonymous namespace)::(anonymous
namespace)::EventHandler (event=<optimized out>)
at ../../v8/src/gdb-jit.cc:2192
#3 0x00007ffff69607b2 in (anonymous namespace)::(anonymous
namespace)::JitLogger::LogRecordedBuffer (
this=<optimized out>, code=<optimized out>,
shared=<optimized out>, name=<optimized out>,
length=<optimized out>) at ../../v8/src/log.cc:462
#4 0x00007ffff655f7f0 in (anonymous namespace)::(anonymous
namespace)::CodeEventDispatcher::CodeCreateEvent (
this=<optimized out>, tag=<optimized out>,
code=<optimized out>, shared=<optimized out>,
name=<optimized out>)
at ../../v8/src/code-events.h:142
#5 0x00007ffff655a480 in (anonymous namespace)::(anonymous
namespace)::(anonymous namespace)::CompileToplevel (
info=<optimized out>) at ../../v8/src/compiler.cc:1175
More specifically, it gets stuck in the following loop at the beginning of
the function:
static void RemoveJITCodeEntries(CodeMap* map, const AddressRange& range) {
DCHECK(range.start < range.end);
CodeMap::Locator cur;
if (map->FindGreatestLessThan(range, &cur) || map->FindLeast(&cur)) {
// Skip entries that are entirely less than the range of interest.
while (cur.key().end <= range.start) {
// CodeMap::FindLeastGreaterThan succeeds for entries whose key is
greater
// than _or equal to_ the given key, so we have to advance our key to
get
// the next one.
AddressRange new_key;
new_key.start = cur.key().end;
new_key.end = 0;
if (!map->FindLeastGreaterThan(new_key, &cur)) return;
}
Is there anything I can do to work around this, or is there an alternative
to gdbjit that would allow me to get javascript stack from C++?
--
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.