meeloo/nui

Trailing painter tasks while in background (iOS)

mathieugarcia opened this issue · 3 comments

On iOS, sending the current app into background will result in an assert/app termination.

Some rendering jobs are still being executed, hence making OpenGL calls, which is prohibited by iOS background app policy.

Some more information about this issue:

Backtrace (nglRenderThread)

* thread #32: tid = 0x63db7, 0x0000000191c35f08 libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient + 12, stop reason = EXC_BAD_ACCESS (code=1, address=0x1)
    frame #0: 0x0000000191c35f08 libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient + 12
    frame #1: 0x0000000191c36ec4 libGPUSupportMercury.dylib`gpusSubmitDataBuffers + 172
    frame #2: 0x0000000195e5b1e4 GLEngine`gliPresentViewES_Exec + 176
    frame #3: 0x0000000195e5b0fc GLEngine`gliPresentViewES + 84
    frame #4: 0x00000001857d7c44 OpenGLES`-[EAGLContext presentRenderbuffer:] + 72
    frame #5: 0x0000000102a500e0 libglInterpose.dylib`EAGLContext_presentRenderbuffer(EAGLContext*, objc_selector*, unsigned long) + 360
  * frame #6: 0x0000000100d640fc BeatMaker 3`nglWindow::EndSession(this=0x00000001410a5d80) + 612 at nglWindow_UIKit.mm:864
    frame #7: 0x00000001009e39a4 BeatMaker 3`nuiRenderThread::_StartRendering(this=0x0000000141164c70, x=0, y=0) + 3036 at nuiRenderThread.cpp:254
    frame #8: 0x0000000100404c5c BeatMaker 3`nuiFastDelegate2<unsigned int, unsigned int, void>::operator(this=0x00000001410b6d58, p1=0, p2=0)(unsigned int, unsigned int) const + 156 at nuiFastDelegate.h:1102
    frame #9: 0x00000001009eb244 BeatMaker 3`nuiTask2<unsigned int, unsigned int, void>::Execute(this=0x00000001410b6d30) const + 64 at nuiTask.h:174
    frame #10: 0x0000000100a17204 BeatMaker 3`nuiTask::Run(this=0x00000001410b6d30) const + 64 at nuiTask.h:68
    frame #11: 0x00000001009e2c9c BeatMaker 3`nuiRenderThread::OnStart(this=0x0000000141164c70) + 168 at nuiRenderThread.cpp:55
    frame #12: 0x0000000100b26548 BeatMaker 3`nglThreadPrivate::Start(pThread=0x0000000141164c70) + 52 at nglThread_posix.cpp:25
    frame #13: 0x0000000100b26270 BeatMaker 3`start_thread(arg=0x0000000141164c70) + 120 at nglThread_posix.cpp:66
    frame #14: 0x00000001832dfb28 libsystem_pthread.dylib`_pthread_body + 156
    frame #15: 0x00000001832dfa8c libsystem_pthread.dylib`_pthread_start + 156
    frame #16: 0x00000001832dd028 libsystem_pthread.dylib`thread_start + 4

screen shot 2016-09-05 at 11 32 20

It happened while pressing the power button on my iPad, while the app was running.

Still problematic. One of the top crash from our app.