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
v8-users@googlegroups.com
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 v8-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to