Skip to content
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

Regression: 4.9.0 NDK stacktraces are 1 line only #382

Closed
peterdk opened this issue Nov 1, 2018 · 0 comments
Closed

Regression: 4.9.0 NDK stacktraces are 1 line only #382

peterdk opened this issue Nov 1, 2018 · 0 comments

Comments

@peterdk
Copy link

peterdk commented Nov 1, 2018

Expected behavior

Get full stacktrace when having a native crash.

SIGSEGV: Segmentation violation (invalid memory reference)
        at bsg_unwind_stack_libunwind(/data/app/FOO/lib/arm/libbugsnag-ndk.so:27562)
        at bsg_unwind_stack(/data/app/FOO/lib/arm/libbugsnag-ndk.so:26862)
        at bsg_handle_signal(/data/app/FOO/lib/arm/libbugsnag-ndk.so:26316)
        at art::FaultManager::HandleFault(int, siginfo*, void*)(/system/lib/libart.so:3534022)
        at 0xb6c73514(/system/lib/libc.so:95508)
        at unknown_symbol(C:/Users/Peter/git/FOO/src/main/jni/FileCache.cpp:45)
        at unknown_symbol(C:/Users/Peter/git/FOO/src/main/jni/NativeSampler.cpp:112)
        at unknown_symbol(C:/Users/Peter/git/FOO/src/main/jni/SamplerSynth.cpp:32)

Observed behavior

I get for the same crashes now a single line stacktrace. (all my crashes have single lines now)

SIGSEGV: Segmentation violation (invalid memory reference)
        at unknown_symbol(C:/Users/Peter/git/FOO/src/main/jni/FileCache.cpp:45)

Steps to reproduce

Use 4.9.0 and crash in NDK code.

Version

4.9.0
Previous version used: 4.8.2

Additional information

kattrali added a commit that referenced this issue Nov 2, 2018
While the stack enhancements added in #378 are intended only to be run
on 32-bit devices and gated to the __arm__ build, when 64-bit devices
are running the 32-bit library, the stacktraces for those devices were
unintentionally affected. This is the case when an app is configured to
only run 32-bit binaries (Android cannot run both 64-bit and 32-bit
binaries at once), and many popular libraries (e.g. React Native) only
distribute 32-bit libraries.

Fixes #382
kattrali added a commit that referenced this issue Nov 7, 2018
While the stack enhancements added in #378 are intended only to be run
on 32-bit devices and gated to the __arm__ build, when 64-bit devices
are running the 32-bit library, the stacktraces for those devices were
unintentionally affected. This is the case when an app is configured to
only run 32-bit binaries (Android cannot run both 64-bit and 32-bit
binaries at once), and many popular libraries (e.g. React Native) only
distribute 32-bit libraries.

To further improve the stack quality on 32-bit, switches the underlying
unwinder from gnu unwind to non-gnu libunwind. Improves frame resolution
and does not have the crash in unwind when setting registers.

Fixes #382
kattrali added a commit that referenced this issue Nov 7, 2018
While the stack enhancements added in #378 are intended only to be run
on 32-bit devices and gated to the __arm__ build, when 64-bit devices
are running the 32-bit library, the stacktraces for those devices were
unintentionally affected. This is the case when an app is configured to
only run 32-bit binaries (Android cannot run both 64-bit and 32-bit
binaries at once), and many popular libraries (e.g. React Native) only
distribute 32-bit libraries.

To further improve the stack quality on 32-bit, switches the underlying
unwinder from gnu unwind to non-gnu libunwind. Improves frame resolution
and does not have the crash in unwind when setting registers.

Fixes #382
kattrali added a commit that referenced this issue Nov 7, 2018
Uses the ABI list to conditionally switch unwinders on ARM.

While the stack enhancements added in #378 are intended only to be run
on 32-bit devices and gated to the __arm__ build, when 64-bit devices
are running the 32-bit library, the stacktraces for those devices were
unintentionally affected. This is the case when an app is configured to
only run 32-bit binaries (Android cannot run both 64-bit and 32-bit
binaries at once), and many popular libraries (e.g. React Native) only
distribute 32-bit libraries.

To further improve the stack quality on 32-bit, switches the underlying
unwinder from gnu unwind to non-gnu libunwind. Improves frame resolution
and does not have the crash in unwind when setting registers.

Fixes #382
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant