-
Notifications
You must be signed in to change notification settings - Fork 9
Add crash tracking to profiler #411
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
* Make process_symbolization available * Remove `pprof` argurment (deduce address format from symbolizer) * Avoid passing a null pointer for symbolizer in unit tests
41caed9 to
17c1fc0
Compare
a830cbb to
cf6b57c
Compare
Crash tracker installs signal handlers to catch crashes. Upon crash, it forks and execs another instance of ddprof passing it `--report-crash` argument as well as crashed thread tid as `--pid` and then waits for this other process to finish before re-raising the signal. Other ddprof process does a ptrace attach on its parent, unwind crashed thread and reports the crash through libdatadog crash tracker.
* Add `--report-crash` option * Install crash tracker upon profiler startup
cf6b57c to
cd0d3df
Compare
Benchmark results for collatzParameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 1 metrics, 0 unstable metrics. See unchanged results
|
Benchmark results for BadBoggleSolver_runParameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 1 metrics, 0 unstable metrics. See unchanged results
|
r1viollet
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Looking forward to trying this out
| int regno, void *arg) { | ||
| (void)dwfl; | ||
| return memory_read(addr, result, regno, arg); | ||
| auto *us = static_cast<UnwindState *>(arg); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why would we not have 2 separate unwinding configurations ?
What does this PR do?
Add crash tracker and reporter to ddprof.
Crash tracker installs signal handlers to catch crashes in the profiler.
Upon crash, it forks and execs another instance of ddprof passing it
--report-crashargument as well as crashed thread tid as--pidand then waits for this other process to finish before re-raising the signal.Other ddprof process does a ptrace attach on its parent, unwind crashed thread and reports the crash through libdatadog crash tracker.