Open vkosikhin opened 4 months ago
I have no idea about this (and can't reproduce it because I don't own such hardware) - but maybe @SiliconExarch does, she contributed some Mac PPC fixes in the past (like https://github.com/dhewm/dhewm3/pull/412)?
I figured the freeze was SDL-related, so I rebuilt with SDL 1.2.15 instead of 2.0.3, and the game has been stable so far. Still, it'd be great if @SiliconExarch or someone else has the means to get to the root cause of the issue and make SDL2 work, as it is the default version dhewm3 expects and you have to pass a cmake flag to use SDL 1. I'm willing to help with testing however I can.
Yeah, from the backtraces it looks possible that the main thread is frozen because it waits for AsyncTimer()
(from neo/framework/Common.cpp) to call Sys_TriggerEvent(TRIGGER_EVENT_ONE);
.
And AsyncTimer is called every 16ms from an SDL timer thread (SDL_AddTimer(USERCMD_MSEC, AsyncTimer, NULL);
)
But I have no idea why that SDL timer thread (I think it's "Thread 3" in your backtrace) should itself freeze (or stop calling Sys_TriggerEvent()
at least).
Of course it kinda sucks that on OSX PPC you're stuck with SDL 2.0.3, which at this point is about as ancient as 1.2.15 :-/
After a few minutes of playing (either interacting with the game or standing still) the game would freeze every time. Built from the latest source with the debug flag and libbacktrace support (thanks to your suggestion on how to make libbacktrace work in #568). The system (4xPPC G5, 16 GB of RAM, Quadro FX 4500) is rock solid in other games (e.g. Prey). Here's the gdb output.