@DTS Engineer
you have mentioned the issue under the following ticket:
(r. 32863680). Do we as developers have the right to access that ticket? For instance the following
http://www.openradar.me/32863680,
http://www.openradar.me/FB32863680
Doesnt lean to anything, my guess is that its internal apple issues, can you please confirm
Post
Replies
Boosts
Views
Activity
We see the similar logs on just iOS app
@DTS Engineer
We have similar issues any insight about that crash or how to prevent it.
In our case we have the following stack trace:
What the OUTLINED_FUNCTION means ? how it can be prevented?
0 libswiftCore.dylib 0x37445c __swift_allocate_boxed_opaque_existential_0 + 28
1 libswiftCore.dylib 0x1797d4 swift_getAtKeyPath + 100
2 SwiftUI 0x5a6520 OUTLINED_FUNCTION_23 + 532
3 SwiftUI 0x244114 OUTLINED_FUNCTION_651 + 88
4 SwiftUI 0x17c394 __swift_memcpy25_8 + 2024
5 SwiftUI 0xce172c OUTLINED_FUNCTION_12 + 1084
6 SwiftUI 0xce19c8 OUTLINED_FUNCTION_12 + 1752
7 SwiftUI 0x7a7538 OUTLINED_FUNCTION_28 + 3104
8 SwiftUI 0x15dc268 OUTLINED_FUNCTION_39 + 6700
9 SwiftUI 0x15de2ac OUTLINED_FUNCTION_39 + 14960
10 SwiftUI 0x15de308 OUTLINED_FUNCTION_39 + 15052
11 Pendo 0x13d5bc UIView.extensionMethod() + 5364
12 Pendo 0x13d620 @objc UIView.extensionMethod() + 5464
@DTS Engineer
Thanks for you answer (I was pretty sure that was the reason but just wanted a confirmation.) If possible I would like to ask a follow up question.
Some time arg1, arg2 doesnt work correctly for some frames:
So for instance I have the following frame:
frame #0: 0x000000010587ef98 Pendo`-[PNDScreenManager mymethod:arg1:arg2:](self=0x000060000176b300, _cmd="PNDScreenManager mymethod:arg1:arg2:", dict=0 key/value pairs, window=0x000000010370a400, rootViewController=0x000000010450b350) at PNDScreenManager.m:313:9
and those are the registers:
register read
General Purpose Registers:
x0 = 0x0000000000000002
x1 = 0x000000000000000d
x2 = 0x000060000029ed80
x3 = 0x0000000000000000
x4 = 0x000000010450b350
x5 = 0x0000000000000000
x6 = 0x0000000000000000
x7 = 0x0000000000000000
x8 = 0x0000000105b5b4df "PNDScreenManager mymethod:arg1:arg2:"
x9 = 0x0abc76522d81005b
x10 = 0x000000010371f948
x11 = 0x000000000000001f
x12 = 0x000000010371f940
x13 = 0x0000000000000000
...
arg1 , and arg2 will print x0 and x1 as u suggested BUT not self and SEL and so on with rest of the parameters(as I would like). (only x4 the last parameter can be spotted).
My question is:
What will be the accurate and easy alternative for arg1, arg2 and etc (as it seems like x1,x2 are not consistent in that sense )
Thanks
(if you could share any documentation about arm64 registers and how to work/debug with them will be appreciated )
I have the same issue here is my gist:
gist
@DTS Engineer
Thanks BUT that not what I am asking. I will try to make it more clear:
GIVEN:
@interface User2 : NSObject
@property (nonatomic) NSString * firstName;
@end
AND firstName will NOT have assignment of ANY mutable subclasses like NSMutableString i.e the only assignment is of type NSString.
QUESTION: Will the following be a "thread safe"
(For current context thread safe definition: NO crash AND correct Result).
If the following is NOT "thread safe" by the definition above could you please provide a reproducible snippet of code that breaks thread safety (not theoretical retain/release explanation)?
(a side question. what is the Apple definition of thread safety?)
Can you please answer my questions as is
in apple documentations its mentioned that NSstring is thread safety: Thread Safety Objects
When Apple says thread safety what do they mean:
is it: crash/ no crash or the correctness of the entire value (like you gave in the above example of 2 properties)?
if We look at the following property
@property (nonatomic, nonnull) NSString * familyName;
Without copy (I see no particular reason to set it as copy although the underline subclass is mutable, but lets assume we are not going to pass any mutable object to that property).
If the following is read and written from multiple threads can it crash? can it have non correct value ? (what do you mean non thread safety in that context)
From your last answer u described a case when it can crash (accessing a released object). Can you back up your answer with code snippet?
Can you provide a code that will crash when you read/ write to the above property from different threads?
@DTS Engineer
Any chance you can share your insight about the above question?
Sorry but I still have few follow up question.
With the above definitions can I assume that
@property (nonatomic , copy, nonnull) NSString * familyName;
Will also be thread safe (no crash) and the value correctness in multi thread environment.
My assumption arise coz from first look I would assume that the read/write occurs to the underhand ivar and the object is immutable but I am not 100% confident if there are any additional steps in the synthesized getter/setter
From what I can see Apple interpretation of thread safety is the consistency of the data across the whole objets i.e in your case is the consistency between the familyName and givenName . am I correct?
ok so lets define couple of things.
"thread safe" - lets define it as safe to use without crashing
"correctness of the value" - basically what you mentioned, a consistent behavior between right and reads.
Let's keep the discussion only to one property. In that case can we assume its thread safe and correctness of the value?
@DTS Engineer
both crashes occurs in 2 different places under 2 different threads.
The current one is related to the processing of the payload we received from the BE and runs in sync queue.
While the previous crash runs and different sync queue and its purpose is to handle app analytics as soon as one is received.
With that to say its hard for me to directly link between the two issues except of some general memory corruption
@DTS Engineer
but could you please explain the crashes?
@DTS Engineer
Any progress on that or some explanation about the crash?
@DTS Engineer
I had a long call with that client and it seems that most of those crashes were caused by out of memory issue (indicated by instabug).
Is it possible to see that information from apple crash logs?
(how much memory were used by the app, how much disk is used etc )
Subclassing Notes
Not common but defiantly possible, described in apple docs.
Yes same client :(