Мы получаем сбой при порождении потока с помощью C ++ с использованием Unity на последних устройствах iPhone XS.Сбой происходит только на iPhone XS и iPhone XS Max, а не на старых iPhone.
Ниже приведена трассировка стека после завершения потока
0 libsystem_c.dylib 0x000000022d4c7094 __abort + 188
1 libsystem_c.dylib 0x000000022d4c6fd8 __abort + 0
2 libsystem_malloc.dylib 0x000000022d5c3c7c _malloc_put + 0
3 libsystem_malloc.dylib 0x000000022d5c3e48 malloc_report + 68
4 libsystem_malloc.dylib 0x000000022d5b5574 free + 412
5 libsystem_pthread.dylib 0x000000022d5ed40c _pthread_tsd_cleanup + 512
6 libsystem_pthread.dylib 0x000000022d5e6cc8 _pthread_exit + 84
7 libsystem_pthread.dylib 0x000000022d5e5a10 _pthread_body + 144
8 libsystem_pthread.dylib 0x000000022d5e5960 _pthread_start + 52
9 libsystem_pthread.dylib 0x000000022d5eddf4 thread_start + 4
Кто-нибудь знает, были ли какие-либо измененияв стандартные библиотеки на iOS 12 или специально для iPhone XS?
Мы полагаем, что это сбой, связанный с Unity, так как он не происходит, когда: 1) вы порождаете поток с использованием стандартных pthreads 2) вы порождаете поток с помощью C ++ в автономном приложении без Unity
Сбой происходит только при соединении Unity и порождении потока C ++
Вот как мы запускаем этот тест:
void *reproduce_crash()
{
pthread_setname_np("CrashingThread");
}
std::thread(reproduce_crash).detach()
Я связываюсь с нашим открытым потоком плат Unity, а также с двумяпримеры приложений (1 с Unity и 1 без этого подтверждают проблему, что опять же происходит только на iPhone XS / XS Max)
https://forum.unity.com/threads/iphone-xs-crash-when-spawning-c-thread.574021/
https://ufile.io/e8m26
Ниже приведен скриншот запуска приложения с Address Sanitizer на:

ОБНОВЛЕНИЕ: Исправлено Unity в последней версии Unity