В моем движке рендеринга OpenGL я в настоящее время вырываю 1 кадр после нажатия клавиши, которая начинает выдавать новые вызовы OpenGL.
Ниже приведен аварийный стек вызовов, являющийся потоком CVDisplayLink.
0 libsystem_kernel.dylib 0x00007fff94d89f06 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff88d3e4ec pthread_kill + 90
2 libsystem_c.dylib 0x00007fff980246e7 abort + 129
3 libGPUSupportMercury.dylib 0x00007fff983a3e5c gpusGenerateCrashLog + 158
4 com.apple.driver.AppleIntelHD5000GraphicsGLDriver 0x000000010f750d4b gpusKillClientExt + 9
5 libGPUSupportMercury.dylib 0x00007fff983a5204 gpusSubmitDataBuffers + 162
6 com.apple.driver.AppleIntelHD5000GraphicsGLDriver 0x000000010f2ac3f2 IntelCommandBuffer::getNew(GLDContextRec*) + 48
7 com.apple.driver.AppleIntelHD5000GraphicsGLDriver 0x000000010f399849 intelSubmitCommands + 171
8 com.apple.driver.AppleIntelHD5000GraphicsGLDriver 0x000000010f3996c2 gldPresentFramebufferData + 142
9 GLEngine 0x000000010f0ddc81 glSwap_Exec + 97
10 com.apple.GLEngineProfiler 0x000000010d759265 0x10d60b000 + 1368677
11 com.apple.opengl 0x00007fff8ed15ffe CGLFlushDrawable + 66
12 com.apple.AppKit 0x00007fff8846509f -[NSOpenGLContext flushBuffer] + 27
13 StarchipStudios.Marble 0x000000010a72c69c -[MarbleOpenGLView getFrameForTime:] + 172 (MarbleOpenGLView.mm:139)
14 StarchipStudios.Marble 0x000000010a72c337 displayLinkCallback(__CVDisplayLink*, CVTimeStamp const*, CVTimeStamp const*, unsigned long long, unsigned long long*, void*) + 55 (MarbleOpenGLView.mm:15)
15 com.apple.CoreVideo 0x00007fff92e183ba CVDisplayLink::performIO(CVTimeStamp*) + 258
16 com.apple.CoreVideo 0x00007fff92e17f45 CVDisplayLink::runIOThread() + 627
17 com.apple.CoreVideo 0x00007fff92e179a9 startIOThread(void*) + 147
18 libsystem_pthread.dylib 0x00007fff88d3b99d _pthread_body + 131
19 libsystem_pthread.dylib 0x00007fff88d3b91a _pthread_start + 168
20 libsystem_pthread.dylib 0x00007fff88d39351 thread_start + 13
В системном журнале я также обнаружил:
Jun 7 12:13:35 jamess-laptop kernel[0] <Notice>: The graphics driver has encountered internal error 0x0, 0xfffffffe.
Похоже, что сам драйвер GPU дает сбой из-за некоторых неправильных вызовов OpenGL, но не могу найти, куда я звоню Неправильно работает OpenGL. Я попытался подключиться с помощью средства отладки графики OpenGL Profiler, но это не дает сбоя при любых ошибках до сбоя приложения.
Кто-нибудь знает, где хранится журнал, сгенерированный из вызова графического драйвера gpusGenerateCrashLog
(в стеке вызовов выше)? Возможно, это может дать мне некоторые подсказки относительно того, где все идет не так?