feat(diagnostics): native crash backtrace capture (RFC 0020 clause 7) - #69
Merged
Merged
Conversation
PostHog's Kotlin uncaught-exception handler cannot see native crashes — Heide's v0.1.21 emoji crash produced no error-tracking issue at all. Install SIGSEGV/SIGBUS/SIGABRT/SIGFPE handlers at JNI_OnLoad that log an _Unwind_Backtrace (symbolised via dladdr) under the DasherNativeCrash tag, then restore defaults and re-raise so the platform tombstone flow still records the crash. Next field-reported native crash becomes a readable stack in logcat. Signed-off-by: will wade <willwade@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Native crashes are invisible to PostHog (Kotlin uncaught handler sees nothing) — Heide's v0.1.21 emoji crash on Android 13 left no trace. This installs signal handlers at JNI_OnLoad (SIGSEGV/SIGBUS/SIGABRT/SIGFPE) that log an
_Unwind_Backtracesymbolised via dladdr under theDasherNativeCrashlogcat tag, then re-raise so tombstones still generate.Not async-signal-safe perfection (dladdr in a handler) — a garbled backtrace beats none. Unblocks RFC 0020 clause 7: the next field-reported native crash becomes a readable stack.