Closed Bug 777828 Opened 12 years ago Closed 3 years ago

Refactor the profiler stack unwinding facility to expose deadstack/location structure

Categories

(Core :: Gecko Profiler, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED INACTIVE

People

(Reporter: BenWa, Unassigned)

References

Details

We often want to know the source of a call grammatically but are not interested in profiling. It would be nice to have something like struct frame { // If we have an API to resolve the symbol in process, // otherwise you need to symbolicate it using addr2line // or a symbol server. char* symbol_name; char* library_name; void* library_offset; }; frame[] GeckoGetBacktrace(); which would return something like: main() process_event() js_foo() js_draw_canvas() or if you don't have an API to symbolicate: 0x<ADDRESS> 0x<ADDRESS> js_foo() js_draw_canvas()
Yeah, within SpiderMonkey itself we have about a dozen potential applications for a "dead stack" data structure: just a record of where execution was, not live frames or anything like that. If you can refactor this stack unwinding facility, that's what it should produce. We can make sure it can include C++ frames, too.
Blocks: 789712
Summary: Refactor the profiler stack unwinding facility to work outside the of profiling → Refactor the profiler stack unwinding facility to expose deadstack/location structure
Blocks: 887976
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → INACTIVE
You need to log in before you can comment on or make changes to this bug.