-
-
Notifications
You must be signed in to change notification settings - Fork 172
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
Get Sentry to use the debug symbols that are compiled in to the executable? #938
Comments
Assigning to @getsentry/support for routing ⏲️ |
With our This will only attach a symbolicated stack trace to the uploaded minidump in your crash event. That means it will have no line numbers (without uploading corresponding debug files). |
No, this is not a known issue. It seems like the first frame is already corrupted. I would expect the stack trace in a Qt application to look like this: which I have created from a test qt project with 0.7.0 on macOS. Can you provide more information on your setup (architecture, macOS version, etc.) or maybe send a link to the event to karl.struggl@sentry.io so we can inspect the event further? cc @Swatinem, have you seen something like this when using |
AFAIK the binary is not stripped; e.g. with Sentry disabled, the MacOS stack reporter shows a stack trace with the expected human-readable function names. (Also if I do run FWIW I have attached a file containing a couple of lines of output from my app's build log; one for compiling a .cpp file, and the second line is the link line. Perhaps there is a flag being used there that Sentry wasn't expecting? |
Thanks for the update and the build parameters. I don't see any parameters that should cause an issue, but this feature uses a curious subset of the It is also hard to debug the issue without access to the concrete artifacts. Could you produce a more minimal repro that shows the same behavior? @Swatinem, can I ask you to have a short look whether you can see something (either in the stack-trace, the event or the build parameters) that immediately comes to mind wrt the remote unwind feature we're using. |
@supervacuus I spent about 3 hours playing "how about now?" with my app and Sentry (removing and adding code to see what would trigger the fault and what would not) and unfortunately I wasn't able to come up with a clear cause-and-effect scenario that I could use to form a minimal reproducible case. The problem seems to occur whenever certain symbols are present in the executable, even if those functions are never executed and are implemented as no-ops; however, I don't think it's anything special about those symbols; more likely their presence just happens to tickle the fault in the right way. My suspicion is that newer Apple tools have modified or extended their object-code format in some way that the older version of libunwind wasn't expecting, and that is distorting libunwind's results. |
Thanks for the effort, @jfriesne!
That might be the case, although I wonder why I can get a relatively sensible stack trace on my M1 with a similar toolchain and target-os version. I could imagine two things that you can still try out:
I guess you are not using Rosetta 2 and run the x86-64 program on an Intel Mac, right? |
@supervacuus yes, I am compiling/running on an Intel Mac Mini running Sonoma 14.1.2 (with XCode 15.0.1). I've zipped up my database folder (including just one crash report with the fault) and attached it. I recompiled with I then also removed the |
Thanks for checking @jfriesne! I will check the dump tomorrow. |
I am very sorry for the delay @jfriesne, there is definitely something wrong. I had a look into that minidump you posted and the symbols are similarly corrupted (and not demangled, since that happens in the backend). I wanted to be sure that there is no corruption in the streamwriter or in the processing of the minidump in the backend. It seems the issue is solely in the remote unwinder we added to the snapshotting in the I have some good news though, interestingly it seems that frames from Last but not least, I cannot guarantee you that we can immediately focus on this issue since it is an experimental feature, but I will keep you in the loop. Thanks for your understanding. cc: @kahest sync agenda |
Environment
SaaS (https://sentry.io/)
What are you trying to accomplish?
I'm evaluating Sentry-native as a possible replacement for an existing (hand-crafted) crash-handling mechanism in my C++/Qt app.
Under Windows, my crash-handler implementation would use
_try/_except
to catch the crash, and callMiniDumpWriteDump()
to write a file containing a stack trace (etc) to the user's local disk. We would then have to rely on the user to send the file to us for analysis.Under MacOS/X, we just relied on the default MacOS crash-handler, which would do something similar (and present a nice crash-dialog containing the stack trace, etc)
In order for the generated stack traces to be easily readable, we shipped our executables with debug-symbols included. However, it seems that Sentry ignores the debug-symbols that are built in to the executable, and wants us to upload debug-symbols separately instead.
My question is, is there any way to convince Sentry to use/upload the debug-symbols that are present in the crashed executable file? That would be easier for us to work with than having to store and track separate symbols-files for every build. (I'm aware that it makes our executables larger, and potentially easier to reverse-engineer, and that's okay)
Thanks,
Jeremy
How are you getting stuck?
Not sure if Sentry supports the behavior I'd like to have, or not.
Where in the product are you?
Issues - Source Maps
Link
https://sentry.io/organizations/meyer-sound-b5217be22/projects/cuestation/?project=4506146063122432
DSN
https://3f24d5875acfd318421a573605556030@o4505915185823744.ingest.sentry.io/4506146063122432
Version
No response
The text was updated successfully, but these errors were encountered: