Re: Xcode <redacted> call stack
Re: Xcode <redacted> call stack
- Subject: Re: Xcode <redacted> call stack
- From: Jim Ingham <email@hidden>
- Date: Thu, 25 Aug 2016 12:39:53 -0700
Right. Historically, OS X included a lot of symbol names for un-exported symbols, because they made backtraces much more useful. Over time many such symbols have accumulated, to the point where they actually constitute a pretty bit chunk of memory mapped into every process. That's not an issue on OS X, but iOS is a more memory constrained device. So as an optimization, the strings for the names of all the "private_extern" symbols were removed from the part of the shared cache that's mapped into memory, and replaced with a single string "redacted". Since the actual symbol record holds a pointer to the name string, this shrunk the shared cache's memory footprint quite a bit. And since you can't use the name of an unexported symbol, it doesn't affect how programs run.
The strings are all still on the system, and lldb/ instruments/ CoreSymbolication know how to find them, but since they aren't mapped into memory, they aren't available when running in process. This log is most likely from the "backtrace" system call in the app, which just looks through the symbol name pointer, and finds "redacted".
Jim
> On Aug 25, 2016, at 12:35 PM, Alex Zavatone <email@hidden> wrote:
>
> Ahhh. Awesome. TY Jim.
>
> Could you share why they would be listed as being redacted? Private internal interfaces? Why does Xcode need to redact them in the first place?
>
> TY.
> Learning is half the battle - Gandalf.
>
>
>
> On Aug 25, 2016, at 2:28 PM, Jim Ingham wrote:
>
>> That won't make any difference. These are symbols from the system libraries, not from your app.
>>
>> Jim
>>
>>> On Aug 25, 2016, at 12:20 PM, Carl Hoefs <email@hidden> wrote:
>>>
>>>>
>>>> On Aug 25, 2016, at 12:15 PM, Carl Hoefs <email@hidden> wrote:
>>>>
>>>>
>>>>> On Aug 25, 2016, at 12:04 PM, Jens Alfke <email@hidden> wrote:
>>>>>
>>>>>
>>>>>> On Aug 25, 2016, at 11:53 AM, Carl Hoefs <email@hidden> wrote:
>>>>>>
>>>>>> I figured out that the following is Xcode's humorous way of saying "only change the UI from the main thread". Okay, got it. But what's with all the <redacted> stuff in the call traceback? It make it essentially useless.
>>>>>
>>>>> Where did you get the backtrace from? Usually when there are no real symbol names, it means the app has had debug symbols stripped out and there’s no dSYM file available to provide symbol names.
>>>>>
>>>> This occurred while running my iOS app from Xcode, connected to my iPhone. In Xcode I have the "All Exceptions" breakpoint disabled (otherwise it would break in some thread for "apparently no reason"). Xcode generates this backtrace in the bottom console log output area.
>>>>
>>>> How does one build to explicitly include debug symbolication info?
>>>
>>> Okay, in Xcode I see the following relevant build settings:
>>>
>>> - Strip Debug Symbols During Copy
>>> - Strip Linked Product
>>>
>>> I'll set them both to NO.
>>> -Carl
>>>
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Xcode-users mailing list (email@hidden)
>>> Help/Unsubscribe/Update your Subscription:
>>>
>>> This email sent to email@hidden
>>
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Xcode-users mailing list (email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden