Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
05245 Crash/Freeze Critical (emulator) Always Jul 29, 2013, 11:49 Feb 21, 2014, 00:55
Tester Firewave View Status Public Platform MAME (Self-compiled)
Assigned To AWJ Resolution Fixed OS
Status [?] Resolved Driver
Version 0.149u1 Fixed in Version 0.153 Build Debug
Fixed in Git Commit Github Pull Request #
Summary 05245: all opwolf.c sets: Hang on exit with -autosave
Description Hangs on exit when saving savestate when using -autosave.
Steps To Reproduce
Additional Information
Github Commit
Flags
Regression Version 0.149
Affected Sets / Systems all opwolf.c sets
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
8
User avatar
No.09685
Tafoid
Administrator
Jul 30, 2013, 01:35
I don't get any hanging, however, I do get the message in pop-up when starting:
Unable to load due to pending anonymous timers.  See error.log for details.

The actual game does not save for me due to that. Manual saving reacts with the same pop-up.
User avatar
No.09686
Robbbert
Senior Tester
Jul 30, 2013, 08:06
I got the popup, and when i exited, found the error log was 53MB. The below is an extract, the same info is repeated over and over.... and over.



:watchdog_fired
=============================================
Failed save state attempt due to anonymous timers:
=============================================
Timer Dump: Time = 0.000249999
0A0C1B54: en=1 temp=0 exp= 0.000249999 start= 0.000124999 per= 0.000124999 param=0 ptr=00000000 cb=msm5205_device::
vclk_callback
0A0C1BD4: en=1 temp=0 exp= 0.000249999 start= 0.000124999 per= 0.000124999 param=0 ptr=00000000 cb=msm5205_device::
vclk_callback
0A0C19D4: en=1 temp=0 exp= 0.000520833 start= 0.000000000 per= (never) param=0 ptr=00000000 dev=:screen id=2
0A0C18D4: en=1 temp=0 exp= 0.016666666 start= 0.000000000 per= (never) param=0 ptr=00000000 dev=:screen id=0
0A0C1C54: en=1 temp=1 exp= 0.016666666 start= 0.000000000 per= (never) param=0 ptr=00000000 dev=: id=1
0A0C17D4: en=1 temp=0 exp= 0.020000000 start= 0.000000000 per= 0.020000000 param=0 ptr=00000000 cb=sound_manager::u
pdate
0A0C1CD4: en=1 temp=0 exp= 2.000000000 start= 0.000000000 per= (never) param=0 ptr=00000000 cb=running_machine:
:autoboot_callback
0A0C1054: en=1 temp=1 exp= (never) start= 0.000000000 per= (never) param=0 ptr=00000000 cb=(null)
0A0C0FD4: en=0 temp=0 exp= (never) start= 0.000000000 per= (never) param=0 ptr=00000000 cb=running_machine:
:soft_reset
0A0C1954: en=0 temp=0 exp= (never) start= 0.000000000 per= (never) param=0 ptr=00000000 dev=:screen id=1
0A0C1A54: en=0 temp=0 exp= (never) start= 0.000000000 per= (never) param=0 ptr=1329126C cb=timer_callback_a
0A0C1AD4: en=0 temp=0 exp= (never) start= 0.000000000 per= (never) param=0 ptr=1329126C cb=timer_callback_b
0A0C1854: en=1 temp=0 exp= (never) start= 0.000000000 per= (never) param=0 ptr=00000000 cb=running_machine:
:watchdog_fired
User avatar
No.09687
Firewave
Senior Tester
Jul 30, 2013, 09:45
It also appears to be a snapshot saving issue (strangely only with -autosave). Here's the trace of the hang in Visual Studio:

>	vmame64d.exe!rgb_bilinear_filter(unsigned int rgb00, unsigned int rgb01, unsigned int rgb10, unsigned int rgb11, unsigned char u, unsigned char v) Line 378	C++
 	vmame64d.exe!software_renderer<unsigned int,0,0,0,16,8,0,0,1>::get_texel_palette16(const render_texinfo & texture, int curu, int curv) Line 180	C++
 	vmame64d.exe!software_renderer<unsigned int,0,0,0,16,8,0,0,1>::draw_quad_palette16_none(const render_primitive & prim, unsigned int * dstdata, unsigned int pitch, software_renderer<unsigned int,0,0,0,16,8,0,0,1>::quad_setup_data & setup) Line 667	C++
 	vmame64d.exe!software_renderer<unsigned int,0,0,0,16,8,0,0,1>::setup_and_draw_textured_quad(const render_primitive & prim, unsigned int * dstdata, int width, int height, unsigned int pitch) Line 1896	C++
 	vmame64d.exe!software_renderer<unsigned int,0,0,0,16,8,0,0,1>::draw_primitives(const render_primitive_list & primlist, void * dstdata, unsigned int width, unsigned int height, unsigned int pitch) Line 1964	C++
 	vmame64d.exe!video_manager::create_snapshot_bitmap(screen_device * screen) Line 1084	C++
 	vmame64d.exe!video_manager::save_snapshot(screen_device * screen, emu_file & file) Line 334	C++
 	vmame64d.exe!video_manager::recompute_speed(attotime emutime) Line 1043	C++
 	vmame64d.exe!video_manager::frame_update(bool debug) Line 269	C++
 	vmame64d.exe!screen_device::vblank_begin() Line 804	C++
 	vmame64d.exe!screen_device::device_timer(emu_timer & timer, unsigned int id, int param, void * ptr) Line 399	C++
 	vmame64d.exe!device_t::timer_expired(emu_timer & timer, unsigned int id, int param, void * ptr) Line 228	C++
 	vmame64d.exe!device_scheduler::execute_timers() Line 931	C++
 	vmame64d.exe!device_scheduler::timeslice() Line 457	C++
 	vmame64d.exe!running_machine::run(bool firstrun) Line 415	C++
 	vmame64d.exe!mame_execute(emu_options & options, osd_interface & osd) Line 190	C++
 	vmame64d.exe!cli_frontend::execute(int argc, char * * argv) Line 255	C++
 	vmame64d.exe!utf8_main(int argc, char * * argv) Line 512	C++
 	vmame64d.exe!wmain(int argc, wchar_t * * argv) Line 82	C++
 	vmame64d.exe!__tmainCRTStartup() Line 241	C
 	vmame64d.exe!wmainCRTStartup() Line 164	C
 	kernel32.dll!BaseThreadInitThunk()	Unknown
 	ntdll.dll!RtlUserThreadStart()	Unknown
User avatar
No.09688
Firewave
Senior Tester
Jul 30, 2013, 09:58
The problem appears to be the vblank_begin_timer firing over and over again and it never exiting device_scheduler::timeslice(), so it won't recognize the scheduled exit.
User avatar
No.09692
NekoEd
Senior Tester
Jul 31, 2013, 00:05
Technically confirmed. It's not as the report says, but there's definitely a problem, so I'll mark it Confirmed.
User avatar
No.09694
Firewave
Senior Tester
Jul 31, 2013, 12:24
Could be related to r15024 since that was when VIDEO_EOF was removed and the timers introduced:

http://git.redump.net/mame/commit/?id=968e0a24833985de66d3564082bd3a30b40a1e0b
User avatar
No.10312
Tafoid
Administrator
Feb 20, 2014, 23:47
This regression is in the 0.148u5-0.149 timeframe. 0.148u5 works, 0.149 does not meaning you can pull a binary of 0.149 to use as a testbed.
User avatar
No.10313
AWJ
Developer
Feb 21, 2014, 00:55
edited on: Feb 21, 2014, 00:56
Had nothing to do with MAME core issues after all. It was just a driver modernization done wrong.