Originally Jack theorized there is a recursion depth issue, however I connected to AuSceneClient while it was running with GDB, and it looks more like a thread deadlock issue, all the threads get stuck waiting on mutexes (well, futex underneath calls into QMutex). Its possible that what is really happening is that staying in the cache reduces the odds of the deadlock, but as soon as you get into main memory the delays are such that the deadlock is more likely to happen.
This would also explain why the failure to finalize is unpredictable, if some kind of race condition is underlying it.
This would also explain why the failure to finalize is unpredictable, if some kind of race condition is underlying it.