FMOD Ex вылетает в oc_restore_fpu_c - PullRequest
       39

FMOD Ex вылетает в oc_restore_fpu_c

0 голосов
/ 07 февраля 2020

В одной из наших iOS живых игр FMOD Ex дает сбой со следующей трассировкой стека:

0 fragment.c - Line 87 oc_restore_fpu_c + 87
1 fragment.c - Line 87 oc_restore_fpu_c + 87
2 fragment.c - Line 87 oc_restore_fpu_c + 87
3 fragment.c - Line 87 oc_restore_fpu_c + 87
4 fragment.c - Line 87 oc_restore_fpu_c + 87
5 fragment.c - Line 87 oc_restore_fpu_c + 87
6 fragment.c - Line 87 oc_restore_fpu_c + 87
7 fragment.c - Line 87 oc_restore_fpu_c + 87
8 fragment.c - Line 87 oc_restore_fpu_c + 87
9 FMOD::Thread::callback(void*) + 148
10 FMOD_OS_Thread_Callback(void*) + 76
11 libsystem_pthread.dylib _pthread_start + 156
12 libsystem_pthread.dylib thread_start + 8

oc_restore_fpu_ c - это функция в библиотеке Theora, libtheora/lib/fragment.c. Но это часто определяется как пустая функция.

Кто-нибудь знает, как стек вызовов может стать рекурсивным? Я думал о том, что рамка вызова может быть повреждена в FMOD, но я не делаю ничего особенного с этой библиотекой. Даже используйте Mutexes для доступа к моим собственным данным, когда я получаю обратный вызов.

Редактировать

Просматривая Crashlytics, я заметил похожий след стека, на этот раз заканчивающийся:

0 FMOD::ChannelGroupI::validate(FMOD::ChannelGroup*, FMOD::ChannelGroupI**, FMOD::SystemLockScope*) + 32
1 FMOD::ChannelControl::getDSP(int, FMOD::DSP**) + 72
2 FMOD::ChannelControl::getDSP(int, FMOD::DSP**) + 72
3 fragment.c - Line 87 oc_restore_fpu_c + 87
4 fragment.c - Line 87 oc_restore_fpu_c + 87
5 fragment.c - Line 87 oc_restore_fpu_c + 87

Может быть, это дает больше контекста.

...