Skip to content

Conversation

@noahsmartin
Copy link
Contributor

@noahsmartin noahsmartin commented Oct 28, 2025

Resolves #6560 (and all the other related issues)

This also has the benefit of unifying the debug and non-debug codepaths to reduce the chances that a bug affects one environment but not the other. For example, the debug behavior of buildStacktraceForCurrentThread would remove the frame for that function itself, but this wouldn't happen in non-debug (since it relied on symbolication). This PR preserves the non-debug behavior, now in all configurations

#skip-changelog

Closes #6698

@noahsmartin noahsmartin force-pushed the removeSymbolication branch 3 times, most recently from b87555b to 38f322d Compare October 28, 2025 12:25
@codecov
Copy link

codecov bot commented Oct 28, 2025

Codecov Report

❌ Patch coverage is 92.30769% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 84.898%. Comparing base (27be067) to head (8eaafcc).
⚠️ Report is 6 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
Sources/SentryCrash/Recording/SentryCrashDoctor.m 0.000% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@              Coverage Diff              @@
##              main     #6562       +/-   ##
=============================================
+ Coverage   84.779%   84.898%   +0.119%     
=============================================
  Files          452       451        -1     
  Lines        27686     27521      -165     
  Branches     12156     12061       -95     
=============================================
- Hits         23472     23365      -107     
+ Misses        4169      4113       -56     
+ Partials        45        43        -2     
Files with missing lines Coverage Δ
Sources/Sentry/SentryCrashReportConverter.m 96.407% <ø> (-0.032%) ⬇️
Sources/Sentry/SentryCrashStackEntryMapper.m 100.000% <100.000%> (ø)
Sources/Sentry/SentryDefaultThreadInspector.m 98.947% <100.000%> (-0.053%) ⬇️
Sources/Sentry/SentryStacktrace.m 100.000% <100.000%> (ø)
Sources/Sentry/SentryStacktraceBuilder.m 74.358% <100.000%> (-1.832%) ⬇️
Sources/Sentry/include/SentryCrashDynamicLinker.h 100.000% <ø> (ø)
Sources/SentryCrash/Recording/SentryCrashReport.c 54.150% <ø> (-0.636%) ⬇️
...es/SentryCrash/Recording/SentryCrashReportFields.h 79.279% <ø> (-0.721%) ⬇️
...ryCrash/Recording/Tools/SentryCrashDynamicLinker.c 86.792% <ø> (-1.100%) ⬇️
...ntryCrash/Recording/Tools/SentryCrashStackCursor.c 100.000% <ø> (ø)
... and 2 more

... and 16 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 27be067...8eaafcc. Read the comment docs.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 28, 2025

Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1202.61 ms 1230.31 ms 27.70 ms
Size 24.14 KiB 1.01 MiB 1012.20 KiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
7273bf4 1202.42 ms 1227.62 ms 25.21 ms
8d944ac 1236.92 ms 1254.91 ms 18.00 ms
c6c1cb7 1235.71 ms 1263.80 ms 28.08 ms
a4c5ddc 1239.61 ms 1266.41 ms 26.80 ms
1bf44b4 1238.14 ms 1275.45 ms 37.31 ms
e0e5391 1191.21 ms 1243.14 ms 51.93 ms
7dabfb9 1227.55 ms 1243.94 ms 16.39 ms
cbbc82c 1246.43 ms 1266.13 ms 19.70 ms
aa96485 1215.37 ms 1234.04 ms 18.67 ms
4f36ea5 1216.87 ms 1246.34 ms 29.47 ms

App size

Revision Plain With Sentry Diff
7273bf4 23.75 KiB 908.01 KiB 884.26 KiB
8d944ac 23.75 KiB 919.69 KiB 895.94 KiB
c6c1cb7 23.75 KiB 928.15 KiB 904.40 KiB
a4c5ddc 23.75 KiB 977.30 KiB 953.55 KiB
1bf44b4 23.75 KiB 1021.20 KiB 997.45 KiB
e0e5391 23.74 KiB 1022.21 KiB 998.46 KiB
7dabfb9 23.75 KiB 980.80 KiB 957.05 KiB
cbbc82c 23.75 KiB 995.22 KiB 971.47 KiB
aa96485 23.75 KiB 874.46 KiB 850.71 KiB
4f36ea5 23.75 KiB 995.08 KiB 971.33 KiB

Previous results on branch: removeSymbolication

Startup times

Revision Plain With Sentry Diff
0e8838d 1229.56 ms 1262.41 ms 32.85 ms
b97c496 1228.33 ms 1259.09 ms 30.77 ms
92024ac 1208.29 ms 1227.73 ms 19.45 ms
2a37909 1215.14 ms 1252.82 ms 37.68 ms
3c5e97a 1226.33 ms 1256.65 ms 30.32 ms
57eb364 1217.94 ms 1254.89 ms 36.95 ms
580eec7 1210.89 ms 1245.78 ms 34.89 ms
c31160d 1230.77 ms 1264.46 ms 33.69 ms
d683042 1220.33 ms 1257.30 ms 36.97 ms

App size

Revision Plain With Sentry Diff
0e8838d 23.75 KiB 1021.68 KiB 997.93 KiB
b97c496 23.75 KiB 1.00 MiB 1001.63 KiB
92024ac 23.75 KiB 1021.67 KiB 997.92 KiB
2a37909 23.75 KiB 1021.67 KiB 997.92 KiB
3c5e97a 24.14 KiB 1.01 MiB 1012.15 KiB
57eb364 24.15 KiB 1.01 MiB 1012.97 KiB
580eec7 24.14 KiB 1.01 MiB 1012.15 KiB
c31160d 23.74 KiB 1023.38 KiB 999.64 KiB
d683042 24.15 KiB 1.01 MiB 1013.05 KiB

@noahsmartin noahsmartin force-pushed the removeSymbolication branch 4 times, most recently from 1392a12 to 91847a3 Compare November 4, 2025 13:34
@noahsmartin noahsmartin force-pushed the removeSymbolication branch 7 times, most recently from b07a319 to 3d9e95a Compare November 6, 2025 14:12
@noahsmartin noahsmartin marked this pull request as ready for review November 6, 2025 14:30
@noahsmartin noahsmartin force-pushed the removeSymbolication branch 3 times, most recently from dc9beab to 827f677 Compare November 6, 2025 16:07
@noahsmartin noahsmartin force-pushed the removeSymbolication branch 3 times, most recently from 76f0817 to e3b3ad9 Compare November 6, 2025 22:28
Copy link
Member

@philipphofmann philipphofmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We definitely need a clear changelog entry to explain that local symbolication is gone now, and we should add a decision log entry here https://github.com/getsentry/sentry-cocoa/blob/main/develop-docs/DECISIONS.md to explain why we removed local symbolication.

Also, we must check our onboarding here https://docs.sentry.io/platforms/apple/guides/ios/ and the wizard if we shouldn't mention that you need to upload dSYMs to guarantee a great experience. Otherwise, some users might be frustrated during the onboarding, because it usuallally sets options.debug = true.

And huge thanks for doing this @noahsmartin

@noahsmartin
Copy link
Contributor Author

Thanks @philipphofmann just made those changes?

@noahsmartin noahsmartin added the ready-to-merge Use this label to trigger all PR workflows label Nov 7, 2025
Copy link
Member

@philipphofmann philipphofmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would still double check if we can ditch the 0x0000000000000000. I don't think it's required. Thanks

Copy link
Member

@philprime philprime left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@noahsmartin noahsmartin enabled auto-merge (squash) November 13, 2025 14:28
@noahsmartin noahsmartin merged commit cd6b26b into main Nov 13, 2025
203 of 210 checks passed
@noahsmartin noahsmartin deleted the removeSymbolication branch November 13, 2025 14:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Use this label to trigger all PR workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: Remove symbolication that causes deadlocks Deadlock when handling crashes

4 participants