Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
07576 Crash/Freeze Critical (emulator) Random Feb 27, 2020, 18:29 Apr 29, 2022, 06:18
Tester Kale View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows 10 (64-bit)
Status [?] Acknowledged Driver thepit.cpp
Version 0.218 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 07576: desertdn, zaryavos, dockman, suprmous. possibly all games in the driver: Accessing debug tilemap viewer crashes MAME
Description Trying to access the tilemap viewer in F4 menu causes a crash in MAME.
Steps To Reproduce Boot the game, press F4, press enter twice.
Additional Information
Github Commit
Flags
Regression Version
Affected Sets / Systems desertdn, zaryavos, dockman, suprmous. possibly all games in the driver
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
9
User avatar
No.17429
Tafoid
Administrator
Feb 27, 2020, 19:24
Unable to duplicate locally with mamedev.org 0.218 (64bit) as well as a self-compiled DEBUG=1 binary as well. Tested all machines explicitly stated above.
Same results in current Git sources.
User avatar
No.17430
Robbbert
Developer
Feb 27, 2020, 22:34
No crash here with current git.
User avatar
No.17431
Osso
Developer
Feb 28, 2020, 06:54
edited on: Feb 28, 2020, 06:58
The first time I tried with 0.218 it didn't happen, but then I had it happen randomly.
User avatar
No.17433
Kale
Developer
Feb 28, 2020, 14:08
Tried on another machine with bleeding edge compile, it truly seems random and happening with -video bgfx -bgfx_backend d3d11.
Changing any of these options then flip them back seems to be relevant, guess I'm gonna SYMBOL-ize it and see what's the culprit.
User avatar
No.17434
Kale
Developer
Feb 28, 2020, 14:29
edited on: Feb 28, 2020, 14:30
-----------------------------------------------------
Exception at EIP=000000000089c5ec (tilemap_t::get_info_debug(unsigned int, unsig
ned int, unsigned char&, unsigned int&, unsigned int&)+0x006c): INTEGER DIVIDE B
Y ZERO
-----------------------------------------------------
RAX=00000000fb3b1c20 RBX=00000000125077c0 RCX=0000000000000000 RDX=0000000000000
000
RSI=0000000000238b30 RDI=0000000004cf1670 RBP=0000000000238e60 RSP=0000000000238
940
 R8=0000000012507908  R9=0000000000000000 R10=0000000000000001 R11=0000000000000
002
R12=0000000000238c70 R13=0000000004c4e220 R14=0000000000238ce0 R15=0000000004b80
560
-----------------------------------------------------
Stack crawl:
  0000000000238980: 000000000089c5ec (tilemap_t::get_info_debug(unsigned int, un
signed int, unsigned char&, unsigned int&, unsigned int&)+0x006c)
  00000000002390c0: 0000000000551d4b (tilemap_handler(mame_ui_manager&, render_c
ontainer&, ui_gfx_state&) [clone .constprop.136]+0x12cb)
  0000000000239100: 0000000000553a6e (ui_gfx_ui_handler(render_container&, mame_
ui_manager&, bool)+0x009e)
  00000000002391f0: 00000000005376a8 (mame_ui_manager::update_and_render(render_
container&)+0x0168)
  0000000000239270: 00000000008bf585 (video_manager::frame_update(bool)+0x0035)
  00000000002393e0: 0000000000839814 (running_machine::run(bool)+0x02c4)
  000000000023f090: 00000000004f8550 (mame_machine_manager::execute()+0x01e0)
  000000000023f350: 0000000000570367 (cli_frontend::start_execution(mame_machine
_manager*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::cha
r_traits<char>, std::allocator<char> > > > const&)+0x01b7)
  000000000023f640: 0000000000570696 (cli_frontend::execute(std::vector<std::__c
xx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::al
locator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<
char> > > >&)+0x0056)
  000000000023f6a0: 00000000004f6307 (emulator_info::start_frontend(emu_options&
, osd_interface&, std::vector<std::__cxx11::basic_string<char, std::char_traits<
char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, s
td::char_traits<char>, std::allocator<char> > > >&)+0x0027)
  000000000023fe50: 0000000001e9ba57 (main+0x0187)
  000000000023ff20: 00000000004013a5 (__tmainCRTStartup+0x0225)
  000000000023ff50: 000000000040150b (mainCRTStartup+0x001b)
  000000000023ff80: 00007ffc7c7813d2 (BaseThreadInitThunk+0x0022)
  000000000023ffd0: 00007ffc7d3e54f4 (RtlUserThreadStart+0x0034)
Something that doesn't get initialized properly my guess, it also helped to reboot the host machine (?).
User avatar
No.17435
Kale
Developer
Feb 28, 2020, 14:52
Looked at the code: there's a m_graphics_bank variable that is:
1. used only by intrepid;
2. updated in screen_update_desertdan cheaply and on-the-fly (wtf);
Additionally the solid_get_tile_info fn accesses stuff most likely unsafe: you can achieve the same thing by just pre-caching in a specific gfx region instead.
User avatar
No.20108
Robbbert
Developer
Apr 28, 2022, 12:58
Seems to be working now.
User avatar
No.20120
Tafoid
Administrator
Apr 28, 2022, 21:53
I tested machine dockman and I get crashing when I run with full screen default d3d render as described above. With -window it doesn't crash all the time, but it did crash in one attempt for me.

With Debug, I dependably obtain an assert:
Assertion failed: index < MAX_GFX_ELEMENTS, file R:/mame242/src/emu/digfx.h, line 175
User avatar
No.20125
Robbbert
Developer
Apr 29, 2022, 06:18
Completely unable to replicate this. Sorry about that.