Skip to content

Commit 8a49ea0

Browse files
committed
fix: Remove symbolication that causes deadlocks
1 parent 2991d63 commit 8a49ea0

26 files changed

+50
-593
lines changed

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 */; };
@@ -1589,7 +1587,6 @@
15891587
63FE701420DA4C1000CDBAE8 /* SentryCrashString.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashString.c; sourceTree = "<group>"; };
15901588
63FE701520DA4C1000CDBAE8 /* SentryCrashCPU_arm64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashCPU_arm64.c; sourceTree = "<group>"; };
15911589
63FE701620DA4C1000CDBAE8 /* SentryCrashObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashObjC.h; sourceTree = "<group>"; };
1592-
63FE701720DA4C1000CDBAE8 /* SentryCrashSymbolicator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashSymbolicator.c; sourceTree = "<group>"; };
15931590
63FE701820DA4C1000CDBAE8 /* SentryCrashID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashID.h; sourceTree = "<group>"; };
15941591
63FE701920DA4C1000CDBAE8 /* SentryCrashSignalInfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashSignalInfo.c; sourceTree = "<group>"; };
15951592
63FE701A20DA4C1000CDBAE8 /* SentryCrashThread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashThread.c; sourceTree = "<group>"; };
@@ -1618,7 +1615,6 @@
16181615
63FE703220DA4C1000CDBAE8 /* SentryCrashThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryCrashThread.h; path = ../../../Sentry/include/SentryCrashThread.h; sourceTree = "<group>"; };
16191616
63FE703320DA4C1000CDBAE8 /* SentryCrashCPU_x86_32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashCPU_x86_32.c; sourceTree = "<group>"; };
16201617
63FE703420DA4C1000CDBAE8 /* SentryCrashSignalInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashSignalInfo.h; sourceTree = "<group>"; };
1621-
63FE703520DA4C1000CDBAE8 /* SentryCrashSymbolicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashSymbolicator.h; sourceTree = "<group>"; };
16221618
63FE703620DA4C1000CDBAE8 /* SentryCrashID.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SentryCrashID.c; sourceTree = "<group>"; };
16231619
63FE703820DA4C1000CDBAE8 /* SentryCrashDynamicLinker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryCrashDynamicLinker.h; path = ../../../Sentry/include/SentryCrashDynamicLinker.h; sourceTree = "<group>"; };
16241620
63FE703920DA4C1000CDBAE8 /* SentryCrashMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SentryCrashMemory.h; sourceTree = "<group>"; };
@@ -3366,8 +3362,6 @@
33663362
63FE701C20DA4C1000CDBAE8 /* SentryCrashStackCursor.h */,
33673363
63FE701420DA4C1000CDBAE8 /* SentryCrashString.c */,
33683364
63FE702C20DA4C1000CDBAE8 /* SentryCrashString.h */,
3369-
63FE701720DA4C1000CDBAE8 /* SentryCrashSymbolicator.c */,
3370-
63FE703520DA4C1000CDBAE8 /* SentryCrashSymbolicator.h */,
33713365
63FE701E20DA4C1000CDBAE8 /* SentryCrashSysCtl.c */,
33723366
63FE703D20DA4C1000CDBAE8 /* SentryCrashSysCtl.h */,
33733367
63FE701A20DA4C1000CDBAE8 /* SentryCrashThread.c */,
@@ -5239,7 +5233,6 @@
52395233
639FCF981EBC7B9700778193 /* SentryEvent.h in Headers */,
52405234
03F84D2527DD414C008FE43F /* SentryThreadState.hpp in Headers */,
52415235
8E4E7C6D25DAAAFE006AB9E2 /* SentryTransaction.h in Headers */,
5242-
63FE715D20DA4C1100CDBAE8 /* SentryCrashSymbolicator.h in Headers */,
52435236
FAE2DABA2E1F318900262307 /* SentryProfilingSwiftHelpers.h in Headers */,
52445237
D8ACE3CF2762187D00F5A213 /* SentryFileIOTrackingIntegration.h in Headers */,
52455238
FA27ECA12EBA325A00F2ECF7 /* SentryTraceContext+Private.h in Headers */,
@@ -6061,7 +6054,6 @@
60616054
63FE716720DA4C1100CDBAE8 /* SentryCrashCPU.c in Sources */,
60626055
63FE717320DA4C1100CDBAE8 /* SentryCrashC.c in Sources */,
60636056
6293F5752D422A95002BC3BD /* SentryStacktraceCodable.swift in Sources */,
6064-
63FE712120DA4C1000CDBAE8 /* SentryCrashSymbolicator.c in Sources */,
60656057
627C77892D50B6840055E966 /* SentryBreadcrumbCodable.swift in Sources */,
60666058
63FE70D720DA4C1000CDBAE8 /* SentryCrashMonitor_MachException.c in Sources */,
60676059
7B96572226830D2400C66E25 /* SentryScopeSyncC.c in Sources */,

Sources/Sentry/SentryCrashReportConverter.m

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,15 +307,13 @@ - (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"]);
310+
// The symbol address is not known, so it defaults to 0
311+
frame.symbolAddress = @"0x0000000000000000";
311312
frame.instructionAddress = sentry_formatHexAddress(frameDictionary[@"instruction_addr"]);
312313
frame.imageAddress = sentry_formatHexAddress(binaryImage[@"image_addr"]);
313314
frame.package = binaryImage[@"name"];
314315
BOOL isInApp = [self.inAppLogic isInApp:binaryImage[@"name"]];
315316
frame.inApp = @(isInApp);
316-
if (frameDictionary[@"symbol_name"]) {
317-
frame.function = frameDictionary[@"symbol_name"];
318-
}
319317
return frame;
320318
}
321319

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/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: 1 addition & 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,11 @@ - (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);
4846

4947
[frames addObject:[crashStackToEntryMapper
5048
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

Sources/Sentry/include/SentryStacktraceBuilder.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,6 @@ NS_ASSUME_NONNULL_BEGIN
1515
@interface SentryStacktraceBuilder : NSObject
1616
SENTRY_NO_INIT
1717

18-
/**
19-
* Whether the stack trace frames should be fully symbolicated
20-
* or only contain instruction address and binary image.
21-
*/
22-
@property (nonatomic) BOOL symbolicate;
23-
2418
- (id)initWithCrashStackEntryMapper:(SentryCrashStackEntryMapper *)crashStackEntryMapper;
2519

2620
/**

Sources/SentryCrash/Recording/SentryCrashReport.c

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -799,20 +799,6 @@ writeBacktrace(const SentryCrashReportWriter *const writer, const char *const ke
799799
while (stackCursor->advanceCursor(stackCursor)) {
800800
writer->beginObject(writer, NULL);
801801
{
802-
if (stackCursor->symbolicate(stackCursor)) {
803-
if (stackCursor->stackEntry.imageName != NULL) {
804-
writer->addStringElement(writer, SentryCrashField_ObjectName,
805-
sentrycrashfu_lastPathEntry(stackCursor->stackEntry.imageName));
806-
}
807-
writer->addUIntegerElement(writer, SentryCrashField_ObjectAddr,
808-
stackCursor->stackEntry.imageAddress);
809-
if (stackCursor->stackEntry.symbolName != NULL) {
810-
writer->addStringElement(writer, SentryCrashField_SymbolName,
811-
stackCursor->stackEntry.symbolName);
812-
}
813-
writer->addUIntegerElement(writer, SentryCrashField_SymbolAddr,
814-
stackCursor->stackEntry.symbolAddress);
815-
}
816802
writer->addUIntegerElement(
817803
writer, SentryCrashField_InstructionAddr, stackCursor->stackEntry.address);
818804
}

0 commit comments

Comments
 (0)