Я вижу segfault от использования NSLog и, в частности, он находится на 64-битном устройстве с SEGV_ACCERR
. Я новичок в iOS, поэтому я немного смущен.Segfault от NSLog?
Вот трассировки стека:
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x108074000
Crashed Thread: 0
Thread 0 Crashed:
0 libsystem_platform.dylib 0x00000001826ea31c _platform_memmove + 300
1 libsystem_asl.dylib 0x00000001825289a4 asl_string_append_no_encoding_len + 92
2 libsystem_asl.dylib 0x0000000182522fc8 asl_string_new + 108
3 libsystem_asl.dylib 0x0000000182522df4 asl_msg_to_string_raw + 68
4 libsystem_asl.dylib 0x00000001825228dc _asl_send_message + 828
5 libsystem_asl.dylib 0x00000001825224fc asl_send + 8
6 CoreFoundation 0x0000000182a6fa1c __CFLogCString + 568
7 CoreFoundation 0x0000000182a6f7ac _CFLogvEx2 + 300
8 CoreFoundation 0x0000000182a6fc14 _CFLogvEx3 + 152
9 Foundation 0x0000000183435dd8 _NSLogv + 128
10 Foundation 0x000000018336ae04 NSLog + 28
Вот код, который вызывает это:
NSString *truncated = [NSString stringWithUTF8String:buffer];
// Using original NSLog to print.
#undef NSLog
NSLog(@"%@", truncated);
и он выходит из строя из моего NSLog
вызова.
где buffer
- всего лишь буфер символов.
Мои вопросы конкретно являются:
- ли возможно даже врезаться с помощью Apple, при условии
NSLog
? Или моя трассировка стека неправильна? - Что означает
SEG_ACCERR
в этом контексте? - Как я могу найти, если это было вызвано плохой проблемой памяти или нет?
- Что-то взорвалось в asl-файле под несколькими потоками?
- Как подойти к отладке?
Любая помощь была бы принята с благодарностью! Благодаря!
Возможно, буфер недействителен, например, не UTF8. – Justlike