Open Bug 1290898 Opened 9 years ago Updated 3 years ago

re-enable gdb spidermonkey unwinder by default

Categories

(Core :: JavaScript Engine, defect, P3)

defect

Tracking

()

People

(Reporter: tromey, Unassigned)

References

(Depends on 1 open bug, Blocks 1 open bug)

Details

(Keywords: triage-deferred)

Bug 1259867 disabled the gdb spidermonkey unwinder by default. However, now that rr supports qGetTLSAddr (https://github.com/mozilla/rr/issues/146), it can maybe be re-enabled by default. (Or, if that fix is insufficient, we can use this bug to record other problems.)
Keywords: triage-deferred
Priority: -- → P3
I'm finding if I enable the unwinder on trunk, I get the following: Traceback (most recent call last): File "/usr/share/gdb/python/gdb/__init__.py", line 104, in execute_unwinders unwind_info = unwinder(pending_frame) File "/home/mgaudet/mozilla-unified/js/src/gdb/mozilla/unwind.py", line 571, in __call__ return self.unwinder_state.unwind(pending_frame) File "/home/mgaudet/mozilla-unified/js/src/gdb/mozilla/unwind.py", line 472, in unwind if not self.is_jit_address(long(pc)): File "/home/mgaudet/mozilla-unified/js/src/gdb/mozilla/unwind.py", line 342, in is_jit_address execAllocators = [jitRuntime['execAlloc_'], jitRuntime['backedgeExecAlloc_']] gdb.error: There is no member named execAlloc_. Haven't looked much deeper into this, so not sure what's going on.
It is broken in a new way now, see bug 1483323. Enabling it by default seems difficult because there isn't a way to find the frame descriptor if the newest frame is a JIT frame (there's some discussion of this in bug 1483323 as well). However when frame pointers are available, this could be done; see bug 1426134.
One possibility would be to detect if the gdb unwinder is running in rr and disable it only in that case (ideally with a brief explanation and a link to a Bugzilla bug). That would get us closer to this stuff Just Working. Of course, if it's relatively easy to get it working under rr too, then we should just go with that instead of playing funny business with brand-detection.
(In reply to Jim Porter (:squib) from comment #3) > One possibility would be to detect if the gdb unwinder is running in rr and > disable it only in that case (ideally with a brief explanation and a link to > a Bugzilla bug). That would get us closer to this stuff Just Working. > > Of course, if it's relatively easy to get it working under rr too, then we > should just go with that instead of playing funny business with > brand-detection. I don't think rr is a problem any more, since the TLS support went in there. The main problem remains having to use a heuristic when JS is the newest frame.
Depends on: 1255884
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.