Skip to content

Commit cd6b26b

Browse files
fix: Remove symbolication that causes deadlocks (#6562)
* fix: Remove symbolication that causes deadlocks * PR feedback * fix thread inspector tests * Add comment --------- Co-authored-by: Philipp Hofmann <[email protected]>
1 parent 9ccc0f5 commit cd6b26b

31 files changed

+68
-727
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
- Properties on SentryOptions that had no effect on the WithoutUIKit variant are now removed from the API (#6644)
9898
- Removes the SentryOptions.inAppExclude property because it had no effect (#6646)
9999
- Removes segment property on SentryUser, SentryBaggage, and SentryTraceContext (#5638)
100+
- Removes local symbolication when `debug=True` which fixes various deadlocks (#6562)
100101
- Removes deprecated TraceContext initializers (#6348)
101102
- Removes deprecated user feedback API, this is replaced with the new feedback API (#5591)
102103
- Removes `enablePerformanceV2` option and makes this the default. The app start duration will now finish when the first frame is drawn instead of when the OS posts the UIWindowDidBecomeVisibleNotification. (#6008)

Sentry.xcodeproj/project.pbxproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,6 @@
252252
63FE711B20DA4C1000CDBAE8 /* SentryCrashString.c in Sources */ = {isa = PBXBuildFile; fileRef = 63FE701420DA4C1000CDBAE8 /* SentryCrashString.c */; };
253253
63FE711D20DA4C1000CDBAE8 /* SentryCrashCPU_arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = 63FE701520DA4C1000CDBAE8 /* SentryCrashCPU_arm64.c */; };
254254
63FE711F20DA4C1000CDBAE8 /* SentryCrashObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FE701620DA4C1000CDBAE8 /* SentryCrashObjC.h */; };
255-
63FE712120DA4C1000CDBAE8 /* SentryCrashSymbolicator.c in Sources */ = {isa = PBXBuildFile; fileRef = 63FE701720DA4C1000CDBAE8 /* SentryCrashSymbolicator.c */; };
256255
63FE712320DA4C1000CDBAE8 /* SentryCrashID.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FE701820DA4C1000CDBAE8 /* SentryCrashID.h */; };
257256
63FE712520DA4C1000CDBAE8 /* SentryCrashSignalInfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 63FE701920DA4C1000CDBAE8 /* SentryCrashSignalInfo.c */; };
258257
63FE712720DA4C1000CDBAE8 /* SentryCrashThread.c in Sources */ = {isa = PBXBuildFile; fileRef = 63FE701A20DA4C1000CDBAE8 /* SentryCrashThread.c */; };
@@ -281,7 +280,6 @@
281280
63FE715720DA4C1100CDBAE8 /* SentryCrashThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FE703220DA4C1000CDBAE8 /* SentryCrashThread.h */; };
282281
63FE715920DA4C1100CDBAE8 /* SentryCrashCPU_x86_32.c in Sources */ = {isa = PBXBuildFile; fileRef = 63FE703320DA4C1000CDBAE8 /* SentryCrashCPU_x86_32.c */; };
283282
63FE715B20DA4C1100CDBAE8 /* SentryCrashSignalInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FE703420DA4C1000CDBAE8 /* SentryCrashSignalInfo.h */; };
284-
63FE715D20DA4C1100CDBAE8 /* SentryCrashSymbolicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FE703520DA4C1000CDBAE8 /* SentryCrashSymbolicator.h */; };
285283
63FE715F20DA4C1100CDBAE8 /* SentryCrashID.c in Sources */ = {isa = PBXBuildFile; fileRef = 63FE703620DA4C1000CDBAE8 /* SentryCrashID.c */; };
286284
63FE716320DA4C1100CDBAE8 /* SentryCrashDynamicLinker.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FE703820DA4C1000CDBAE8 /* SentryCrashDynamicLinker.h */; };
287285
63FE716520DA4C1100CDBAE8 /* SentryCrashMemory.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FE703920DA4C1000CDBAE8 /* SentryCrashMemory.h */; };
@@ -1542,7 +1540,6 @@
15421540
63FE701420DA4C1000CDBAE8 /* SentryCrashString.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashString.c; sourceTree = "<group>"; };
15431541
63FE701520DA4C1000CDBAE8 /* SentryCrashCPU_arm64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashCPU_arm64.c; sourceTree = "<group>"; };
15441542
63FE701620DA4C1000CDBAE8 /* SentryCrashObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashObjC.h; sourceTree = "<group>"; };
1545-
63FE701720DA4C1000CDBAE8 /* SentryCrashSymbolicator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashSymbolicator.c; sourceTree = "<group>"; };
15461543
63FE701820DA4C1000CDBAE8 /* SentryCrashID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashID.h; sourceTree = "<group>"; };
15471544
63FE701920DA4C1000CDBAE8 /* SentryCrashSignalInfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashSignalInfo.c; sourceTree = "<group>"; };
15481545
63FE701A20DA4C1000CDBAE8 /* SentryCrashThread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashThread.c; sourceTree = "<group>"; };
@@ -1571,7 +1568,6 @@
15711568
63FE703220DA4C1000CDBAE8 /* SentryCrashThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryCrashThread.h; path = ../../../Sentry/include/SentryCrashThread.h; sourceTree = "<group>"; };
15721569
63FE703320DA4C1000CDBAE8 /* SentryCrashCPU_x86_32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashCPU_x86_32.c; sourceTree = "<group>"; };
15731570
63FE703420DA4C1000CDBAE8 /* SentryCrashSignalInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashSignalInfo.h; sourceTree = "<group>"; };
1574-
63FE703520DA4C1000CDBAE8 /* SentryCrashSymbolicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashSymbolicator.h; sourceTree = "<group>"; };
15751571
63FE703620DA4C1000CDBAE8 /* SentryCrashID.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashID.c; sourceTree = "<group>"; };
15761572
63FE703820DA4C1000CDBAE8 /* SentryCrashDynamicLinker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryCrashDynamicLinker.h; path = ../../../Sentry/include/SentryCrashDynamicLinker.h; sourceTree = "<group>"; };
15771573
63FE703920DA4C1000CDBAE8 /* SentryCrashMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashMemory.h; sourceTree = "<group>"; };
@@ -3290,8 +3286,6 @@
32903286
63FE701C20DA4C1000CDBAE8 /* SentryCrashStackCursor.h */,
32913287
63FE701420DA4C1000CDBAE8 /* SentryCrashString.c */,
32923288
63FE702C20DA4C1000CDBAE8 /* SentryCrashString.h */,
3293-
63FE701720DA4C1000CDBAE8 /* SentryCrashSymbolicator.c */,
3294-
63FE703520DA4C1000CDBAE8 /* SentryCrashSymbolicator.h */,
32953289
63FE701E20DA4C1000CDBAE8 /* SentryCrashSysCtl.c */,
32963290
63FE703D20DA4C1000CDBAE8 /* SentryCrashSysCtl.h */,
32973291
63FE701A20DA4C1000CDBAE8 /* SentryCrashThread.c */,
@@ -5147,7 +5141,6 @@
51475141
639FCF981EBC7B9700778193 /* SentryEvent.h in Headers */,
51485142
03F84D2527DD414C008FE43F /* SentryThreadState.hpp in Headers */,
51495143
8E4E7C6D25DAAAFE006AB9E2 /* SentryTransaction.h in Headers */,
5150-
63FE715D20DA4C1100CDBAE8 /* SentryCrashSymbolicator.h in Headers */,
51515144
FAE2DABA2E1F318900262307 /* SentryProfilingSwiftHelpers.h in Headers */,
51525145
D8ACE3CF2762187D00F5A213 /* SentryFileIOTrackingIntegration.h in Headers */,
51535146
FA27ECA12EBA325A00F2ECF7 /* SentryTraceContext+Private.h in Headers */,
@@ -5893,7 +5886,6 @@
58935886
63FE716720DA4C1100CDBAE8 /* SentryCrashCPU.c in Sources */,
58945887
63FE717320DA4C1100CDBAE8 /* SentryCrashC.c in Sources */,
58955888
6293F5752D422A95002BC3BD /* SentryStacktraceCodable.swift in Sources */,
5896-
63FE712120DA4C1000CDBAE8 /* SentryCrashSymbolicator.c in Sources */,
58975889
627C77892D50B6840055E966 /* SentryBreadcrumbCodable.swift in Sources */,
58985890
63FE70D720DA4C1000CDBAE8 /* SentryCrashMonitor_MachException.c in Sources */,
58995891
7B96572226830D2400C66E25 /* SentryScopeSyncC.c in Sources */,

Sources/Sentry/SentryCrashReportConverter.m

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,15 +307,11 @@ - (SentryFrame *)stackFrameAtIndex:(NSInteger)frameIndex inThreadIndex:(NSIntege
307307
= (uintptr_t)[frameDictionary[@"instruction_addr"] unsignedLongLongValue];
308308
NSDictionary *binaryImage = [self binaryImageForAddress:instructionAddress];
309309
SentryFrame *frame = [[SentryFrame alloc] init];
310-
frame.symbolAddress = sentry_formatHexAddress(frameDictionary[@"symbol_addr"]);
311310
frame.instructionAddress = sentry_formatHexAddress(frameDictionary[@"instruction_addr"]);
312311
frame.imageAddress = sentry_formatHexAddress(binaryImage[@"image_addr"]);
313312
frame.package = binaryImage[@"name"];
314313
BOOL isInApp = [self.inAppLogic isInApp:binaryImage[@"name"]];
315314
frame.inApp = @(isInApp);
316-
if (frameDictionary[@"symbol_name"]) {
317-
frame.function = frameDictionary[@"symbol_name"];
318-
}
319315
return frame;
320316
}
321317

Sources/Sentry/SentryCrashStackEntryMapper.m

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,36 +25,15 @@ - (SentryFrame *)sentryCrashStackEntryToSentryFrame:(SentryCrashStackEntry)stack
2525
{
2626
SentryFrame *frame = [[SentryFrame alloc] init];
2727

28-
if (stackEntry.symbolAddress != 0) {
29-
frame.symbolAddress = sentry_formatHexAddressUInt64(stackEntry.symbolAddress);
30-
}
31-
3228
frame.instructionAddress = sentry_formatHexAddressUInt64(stackEntry.address);
3329

34-
if (stackEntry.symbolName != NULL) {
35-
frame.function = [NSString stringWithCString:stackEntry.symbolName
36-
encoding:NSUTF8StringEncoding];
37-
}
38-
39-
// If there is no symbolication, because debug was disabled
40-
// we get image from the cache.
41-
if (stackEntry.imageAddress == 0 && stackEntry.imageName == NULL) {
42-
SentryBinaryImageInfo *info = [SentryDependencyContainer.sharedInstance.binaryImageCache
43-
imageByAddress:(uint64_t)stackEntry.address];
44-
45-
frame.imageAddress = sentry_formatHexAddressUInt64(info.address);
46-
frame.package = info.name;
47-
frame.inApp = @([self.inAppLogic isInApp:info.name]);
48-
} else {
49-
frame.imageAddress = sentry_formatHexAddressUInt64(stackEntry.imageAddress);
30+
// Get image from the cache.
31+
SentryBinaryImageInfo *info = [SentryDependencyContainer.sharedInstance.binaryImageCache
32+
imageByAddress:(uint64_t)stackEntry.address];
5033

51-
if (stackEntry.imageName != NULL) {
52-
NSString *imageName = [NSString stringWithCString:stackEntry.imageName
53-
encoding:NSUTF8StringEncoding];
54-
frame.package = imageName;
55-
frame.inApp = @([self.inAppLogic isInApp:imageName]);
56-
}
57-
}
34+
frame.imageAddress = sentry_formatHexAddressUInt64(info.address);
35+
frame.package = info.name;
36+
frame.inApp = @([self.inAppLogic isInApp:info.name]);
5837

5938
return frame;
6039
}

Sources/Sentry/SentryDefaultThreadInspector.m

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#import "SentryCrashStackCursor.h"
44
#include "SentryCrashStackCursor_MachineContext.h"
55
#import "SentryCrashStackEntryMapper.h"
6-
#include "SentryCrashSymbolicator.h"
76
#import "SentryFrame.h"
87
#import "SentryStacktrace.h"
98
#import "SentryStacktraceBuilder.h"
@@ -31,7 +30,7 @@ @interface SentryDefaultThreadInspector ()
3130
// async-signal-safe.
3231
unsigned int
3332
getStackEntriesFromThread(SentryCrashThread thread, struct SentryCrashMachineContext *context,
34-
SentryCrashStackEntry *buffer, unsigned int maxEntries, bool asyncUnsafeSymbolicate)
33+
SentryCrashStackEntry *buffer, unsigned int maxEntries)
3534
{
3635
sentrycrashmc_getContextForThread(thread, context, NO);
3736
SentryCrashStackCursor stackCursor;
@@ -42,10 +41,8 @@ @interface SentryDefaultThreadInspector ()
4241
while (stackCursor.advanceCursor(&stackCursor)) {
4342
if (entries == maxEntries)
4443
break;
45-
if (asyncUnsafeSymbolicate == false || stackCursor.symbolicate(&stackCursor)) {
46-
buffer[entries] = stackCursor.stackEntry;
47-
entries++;
48-
}
44+
buffer[entries] = stackCursor.stackEntry;
45+
entries++;
4946
}
5047

5148
return entries;
@@ -55,12 +52,10 @@ @implementation SentryDefaultThreadInspector
5552

5653
- (id)initWithStacktraceBuilder:(SentryStacktraceBuilder *)stacktraceBuilder
5754
andMachineContextWrapper:(id<SentryCrashMachineContextWrapper>)machineContextWrapper
58-
symbolicate:(BOOL)symbolicate
5955
{
6056
if (self = [super init]) {
6157
self.stacktraceBuilder = stacktraceBuilder;
6258
self.machineContextWrapper = machineContextWrapper;
63-
self.symbolicate = symbolicate;
6459
}
6560
return self;
6661
}
@@ -73,13 +68,11 @@ - (instancetype)initWithOptions:(SentryOptions *_Nullable)options
7368
[[SentryCrashStackEntryMapper alloc] initWithInAppLogic:inAppLogic];
7469
SentryStacktraceBuilder *stacktraceBuilder =
7570
[[SentryStacktraceBuilder alloc] initWithCrashStackEntryMapper:crashStackEntryMapper];
76-
stacktraceBuilder.symbolicate = options.debug;
7771

7872
id<SentryCrashMachineContextWrapper> machineContextWrapper =
7973
[[SentryCrashDefaultMachineContextWrapper alloc] init];
8074
return [self initWithStacktraceBuilder:stacktraceBuilder
81-
andMachineContextWrapper:machineContextWrapper
82-
symbolicate:options.debug];
75+
andMachineContextWrapper:machineContextWrapper];
8376
}
8477

8578
- (SentryStacktrace *)stacktraceForCurrentThreadAsyncUnsafe
@@ -142,8 +135,6 @@ - (SentryStacktrace *)stacktraceForCurrentThreadAsyncUnsafe
142135
thread_act_array_t suspendedThreads = NULL;
143136
mach_msg_type_number_t numSuspendedThreads = 0;
144137

145-
bool symbolicate = self.symbolicate;
146-
147138
// SentryThreadInspector is crashing when there is too many threads.
148139
// We add a limit of 70 threads because in test with up to 100 threads it seems fine.
149140
// We are giving it an extra safety margin.
@@ -163,7 +154,7 @@ - (SentryStacktrace *)stacktraceForCurrentThreadAsyncUnsafe
163154
for (int i = 0; i < numSuspendedThreads; i++) {
164155
if (suspendedThreads[i] != currentThread) {
165156
int numberOfEntries = getStackEntriesFromThread(suspendedThreads[i], context,
166-
threadsInfos[i].stackEntries, MAX_STACKTRACE_LENGTH, symbolicate);
157+
threadsInfos[i].stackEntries, MAX_STACKTRACE_LENGTH);
167158
threadsInfos[i].stackLength = numberOfEntries;
168159
} else {
169160
// We can't use 'getStackEntriesFromThread' to retrieve stack frames from the

Sources/Sentry/SentryStacktrace.m

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,9 @@ - (void)fixDuplicateFrames
2929
return;
3030
}
3131

32-
SentryFrame *lastFrame = self.frames.lastObject;
3332
SentryFrame *beforeLastFrame = [self.frames objectAtIndex:self.frames.count - 2];
3433

35-
if ([lastFrame.symbolAddress
36-
isEqualToString:SENTRY_UNWRAP_NULLABLE(NSString, beforeLastFrame.symbolAddress)]
37-
&& [self.registers[@"lr"]
34+
if ([self.registers[@"lr"]
3835
isEqualToString:SENTRY_UNWRAP_NULLABLE(NSString, beforeLastFrame.instructionAddress)]) {
3936
NSMutableArray *copyFrames = self.frames.mutableCopy;
4037
[copyFrames removeObjectAtIndex:self.frames.count - 2];

Sources/Sentry/SentryStacktraceBuilder.m

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#import "SentryCrashStackCursor_MachineContext.h"
44
#import "SentryCrashStackCursor_SelfThread.h"
55
#import "SentryCrashStackEntryMapper.h"
6-
#import "SentryCrashSymbolicator.h"
76
#import "SentryFrame.h"
87
#import "SentryLogC.h"
98
#import "SentryStacktrace.h"
@@ -24,7 +23,6 @@ - (id)initWithCrashStackEntryMapper:(SentryCrashStackEntryMapper *)crashStackEnt
2423
{
2524
if (self = [super init]) {
2625
self.crashStackEntryMapper = crashStackEntryMapper;
27-
self.symbolicate = NO;
2826
}
2927
return self;
3028
}
@@ -41,10 +39,8 @@ - (SentryStacktrace *)retrieveStacktraceFromCursor:(SentryCrashStackCursor)stack
4139
// skip the marker frame
4240
continue;
4341
}
44-
if (self.symbolicate == NO || stackCursor.symbolicate(&stackCursor)) {
45-
frame = [self.crashStackEntryMapper mapStackEntryWithCursor:stackCursor];
46-
[frames addObject:frame];
47-
}
42+
frame = [self.crashStackEntryMapper mapStackEntryWithCursor:stackCursor];
43+
[frames addObject:frame];
4844
}
4945

5046
return [SentryStacktraceBuilder buildStacktraceFromFrames:frames];
@@ -96,7 +92,6 @@ - (nullable SentryStacktrace *)buildStacktraceForCurrentThreadAsyncUnsafe
9692
SENTRY_LOG_DEBUG(@"Building async-unsafe stack trace...");
9793
SentryCrashStackCursor stackCursor;
9894
sentrycrashsc_initSelfThread(&stackCursor, 0);
99-
stackCursor.symbolicate = sentrycrashsymbolicator_symbolicate_async_unsafe;
10095
return [self retrieveStacktraceFromCursor:stackCursor];
10196
}
10297

Sources/Sentry/SentryUseNSExceptionCallstackWrapper.m

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#import "SentryUseNSExceptionCallstackWrapper.h"
22
#import "SentryCrashStackEntryMapper.h"
3-
#import "SentryCrashSymbolicator.h"
43
#import "SentrySDK+Private.h"
54
#import "SentryStacktraceBuilder.h"
65
#import "SentrySwift.h"
@@ -39,12 +38,15 @@ - (instancetype)initWithName:(NSExceptionName)aName
3938
SentryCrashStackEntryMapper *crashStackToEntryMapper = [self buildCrashStackToEntryMapper];
4039
NSMutableArray<SentryFrame *> *frames = [NSMutableArray array];
4140

42-
// Iterate over all the addresses, symbolicate and create a SentryFrame
41+
// Iterate over all the addresses and create a SentryFrame
4342
[self.returnAddressesArray
4443
enumerateObjectsUsingBlock:^(NSNumber *_Nonnull obj, NSUInteger idx, BOOL *_Nonnull stop) {
4544
SentryCrashStackCursor stackCursor;
4645
stackCursor.stackEntry.address = [obj unsignedLongValue];
47-
sentrycrashsymbolicator_symbolicate_async_unsafe_sentryDlAddr(&stackCursor);
46+
stackCursor.stackEntry.imageName = nil;
47+
stackCursor.stackEntry.imageAddress = 0;
48+
stackCursor.stackEntry.symbolAddress = 0;
49+
stackCursor.stackEntry.symbolName = nil;
4850

4951
[frames addObject:[crashStackToEntryMapper
5052
sentryCrashStackEntryToSentryFrame:stackCursor.stackEntry]];

Sources/Sentry/include/SentryCrashDynamicLinker.h

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -97,26 +97,6 @@ uint32_t sentrycrashdl_imageNamed(const char *const imageName, bool exactMatch);
9797
*/
9898
const uint8_t *sentrycrashdl_imageUUID(const char *const imageName, bool exactMatch);
9999

100-
/**
101-
* ATTENTION: This method isn't async-safe as it accesses @c _dyld_get_image_header, which acquires
102-
* a lock. We plan on removing this method with
103-
* https://github.com/getsentry/sentry-cocoa/issues/2996.
104-
*
105-
*
106-
* This method searches the dynamic loader for information about any image
107-
* containing the specified address. It may not be entirely successful in
108-
* finding information, in which case any fields it could not find will be set
109-
* to NULL.
110-
*
111-
* Unlike dladdr(), this method does not make use of locks, and does not call
112-
* async-unsafe functions.
113-
*
114-
* @param address The address to search for.
115-
* @param info Gets filled out by this function.
116-
* @return true if at least some information was found.
117-
*/
118-
bool sentrycrashdl_dladdr(const uintptr_t address, Dl_info *const info);
119-
120100
void sentrycrashdl_getCrashInfo(uint64_t address, SentryCrashBinaryImage *buffer);
121101

122102
void sentrycrashdl_initialize(void);

Sources/Sentry/include/SentryDefaultThreadInspector.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
1515
SENTRY_NO_INIT
1616

1717
- (id)initWithStacktraceBuilder:(SentryStacktraceBuilder *)stacktraceBuilder
18-
andMachineContextWrapper:(id<SentryCrashMachineContextWrapper>)machineContextWrapper
19-
symbolicate:(BOOL)symbolicate;
18+
andMachineContextWrapper:(id<SentryCrashMachineContextWrapper>)machineContextWrapper;
2019

2120
- (instancetype)initWithOptions:(SentryOptionsObjC *_Nullable)options;
2221

0 commit comments

Comments
 (0)