Code: Select all
zdoom: /home/kitty/zdoom/src/sdl/i_system.cpp:168: void I_FreezeTimePolled(bool): Assertion `TicFrozen != 0' failed.
Program received signal SIGABRT, Aborted.
0xb7fce410 in __kernel_vsyscall ()
(gdb) bt
#0 0xb7fce410 in __kernel_vsyscall ()
#1 0xb732e181 in raise () from /lib/libc.so.6
#2 0xb732f948 in abort () from /lib/libc.so.6
#3 0xb73277d5 in __assert_fail () from /lib/libc.so.6
#4 0x0812dbe2 in I_FreezeTimePolled (frozen=false) at /home/kitty/zdoom/src/sdl/i_system.cpp:168
#5 0x0815b820 in D_Display () at /home/kitty/zdoom/src/d_main.cpp:753
#6 0x0815bdc6 in D_DoomLoop () at /home/kitty/zdoom/src/d_main.cpp:852
#7 0x0815d296 in D_DoomMain () at /home/kitty/zdoom/src/d_main.cpp:2670
#8 0x0812c633 in main (argc=1, argv=0xbf8afaa4) at /home/kitty/zdoom/src/sdl/i_main.cpp:272
I wonder if it's due to the game getting "frozen" before it tries to call I_GetTimePolled.. I_FreezeTimePolled(true) will set TicFrozen to I_GetTimePolled(false), and if that's the first time it's called (or if it's the first time SDL_GetTics returns non-0), it will return 0. BaseTime gets set to tm if BaseTime is 0 (which would happen on the first call, and possibly even the second if the first had SDL_GetTics return 0, setting BaseTime to 0), and tm-BaseTime will always be 0 even after scaling. It then tries to unfreeze, sees TicFrozen == 0, and dies.