Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
09500 Debugger Major Always 1 day ago 1 hour ago
Tester jman View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows (x64)
Status [?] Confirmed Driver
Version 0.288 Fixed in Version Build x64
Fixed in Git Commit Github Pull Request #
Summary 09500: Debugger crashes after hard reset with the marker on the disassembly view
Description Debugger crashes after hard reset "key" (Shift + F3) if the marker is active on the disassmebly view.
No problem with hard reset "command" because of out of focus.
Steps To Reproduce 1) Execute MAME with debugger
2) Press tab key (or click disassembly view) in the main debugger window
3) Confirm that the marker is active on the disassmbley view
4) Press Shift + F3 to hard reset
Additional Information
Github Commit
Flags
Regression Version
Affected Sets / Systems
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
3
User avatar
No.24480
Robbbert
Moderator
1 day ago
edited on: 1 day ago
Unable to replicate on Windows 10 x64.
User avatar
No.24481
jman
Tester
1 day ago
The following is backtrace based on official MAME 0.288 on Windows 11 x64.

C:\MAME>mame pacman -norc -window -debug

-----------------------------------------------------
Exception at EIP=00007FF629BEBD49 (std::__1::__function::__func<debug_disasm_buffer::debug_data_buffer::setup_methods()::$_10, void (unsigned int, unsigned int)>::operator()(unsigned int&&, unsigned int&&)+0x0029): ACCESS VIOLATION
While attempting to read memory at 0000000000000000
-----------------------------------------------------
RAX=000001807FB56DA0 RBX=00000073001F9440 RCX=00000073001F9480 RDX=00000073001F8CC0
RSI=0000000000002264 RDI=0000000000000000 RBP=0000000000002263 RSP=00000073001F8C20
 R8=00000073001F8CC4 R9=00007FFA7597E2FE R10=00007FFA75890000 R11=0000000000000000
R12=0000000000000000 R13=00000180087F8241 R14=0000000000002264 R15=00000180087F8241
-----------------------------------------------------
Stack crawl:
  00000073001F8C90: 00007FF629BEBD49 (std::__1::__function::__func<debug_disasm_buffer::debug_data_buffer::setup_methods()::$_10, void (unsigned int, unsigned int)>::operator()(unsigned int&&, unsigned int&&)+0x0029)
  00000073001F8D00: 00007FF629BE8BCD (debug_disasm_buffer::debug_data_buffer::fill(unsigned int, unsigned int) const+0x026d)
  00000073001F8D40: 00007FF629BF053C (std::__1::__function::__func<debug_disasm_buffer::debug_data_buffer::setup_methods()::$_63, unsigned char (unsigned int)>::operator()(unsigned int&&)+0x001c)
  00000073001F8D70: 00007FF629BE8885 (debug_disasm_buffer::debug_data_buffer::r8(unsigned int) const+0x0025)
  00000073001F8EA0: 00007FF627460990 (z80_disassembler::disassemble(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, unsigned int, util::disasm_interface::data_buffer const&, util::disasm_interface::data_buffer const&)+0x0050)
  00000073001F9050: 00007FF629BEA9EF (debug_disasm_buffer::disassemble(unsigned int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>&, unsigned int&, unsigned int&, unsigned int&) const+0x00ef)
  00000073001F9110: 00007FF629FF5B73 (debug_view_disasm::generate_with_pc(debug_disasm_buffer&, unsigned int)+0x0173)
  00000073001F9160: 00007FF629FF6169 (debug_view_disasm::generate_dasm(debug_disasm_buffer&, unsigned int)+0x0189)
  00000073001F9880: 00007FF629FF63BD (debug_view_disasm::view_update()+0x006d)
  00000073001F98C0: 00007FF6268672A3 (debug_view::set_cursor_visible(bool)+0x0063)
  00000073001F9970: 00007FF62B33F419 (luaopen_lfs+0x8810a9)
  00000073001F9AD0: 00007FFA7747C396 (CallWindowProcW+0x06a6)
  00000073001F9B30: 00007FFA7747BC1C (SendMessageW+0x0acc)
  00000073001F9B90: 00007FFA774B0A53 (GetWindowDpiAwarenessContext+0x04d3)
  00000073001F9C18: 00007FFA77E24084 (KiUserCallbackDispatcher+0x0024)
  00000073001F9C20: 00007FFA756E2564 (NtUserDestroyWindow+0x0014)
  00000073001F9C50: 00007FF62B33D6F0 (luaopen_lfs+0x87f380)
  00000073001F9C80: 00007FF62B342F4D (luaopen_lfs+0x884bdd)
  00000073001F9CB0: 00007FF62AFCE26F (luaopen_lfs+0x50feff)
  00000073001F9CF0: 00007FF629F22998 (osd::(anonymous namespace)::debugger_windows::exit()+0x0028)
  00000073001F9D20: 00007FF629F082AA (osd_module_manager::exit()+0x002a)
  00000073001F9D60: 00007FF626701A08 (osd_common_t::osd_exit()+0x0058)
  00000073001F9D90: 00007FF623593AC0 (windows_osd_interface::osd_exit()+0x0020)
  00000073001F9EB0: 00007FF6237E9ACA (running_machine::run(bool)+0x04aa)
  00000073001FF160: 00007FF6266F4B35 (mame_machine_manager::execute()+0x01a5)
  00000073001FF390: 00007FF629EF2FD9 (cli_frontend::start_execution(mame_machine_manager*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&)+0x01b9)
  00000073001FF4D0: 00007FF629EF47D4 (cli_frontend::execute(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>&)+0x0034)
  00000073001FF520: 00007FF6266F5B77 (emulator_info::start_frontend(emu_options&, osd_interface&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>&)+0x0027)
  00000073001FF810: 00007FF6235931FD (main+0x033d)
  00000073001FF890: 00007FF61F3B10FE (__tmainCRTStartup+0x00de)
  00000073001FF8C0: 00007FF61F3B13E6 (mainCRTStartup+0x0016)
  00000073001FF8F0: 00007FFA761FE957 (BaseThreadInitThunk+0x0017)
  00000073001FF940: 00007FFA77D6AD6C (RtlUserThreadStart+0x002c)
User avatar
No.24489
hap
Developer
1 hour ago
edited on: 1 hour ago
Can confirm:
mame pacman -d
open disasm window, leftclick on one of the opcodes in that window, then Shift-F3 to crash.
(can also confirm it with main disasm window)

I tried older MAME versions, as far back as 0.256, and they crash too.

my local build gdb:

Thread 1 received signal SIGSEGV, Segmentation fault.
0x00007ff65e8af7d9 in debug_watchpoint::triggered(read_or_write, unsigned int, unsigned long long, unsigned long long)
    ()
(gdb) bt
#0 0x00007ff65e8af7d9 in debug_watchpoint::triggered(read_or_write, unsigned int, unsigned long long, unsigned long long) ()
#1 0x00007ff65e8b3e4e in debug_disasm_buffer::debug_data_buffer::fill(unsigned int, unsigned int) const ()
#2 0x00007ff65e8b520b in debug_disasm_buffer::debug_data_buffer::fill(unsigned int, unsigned int) const ()
#3 0x00007ff65e8afcb4 in debug_disasm_buffer::debug_data_buffer::r8(unsigned int) const ()
#4 0x00007ff65bd581fc in z80_disassembler::disassemble(std::basic_ostream<char, std::char_traits<char> >&, unsigned int, util::disasm_interface::data_buffer const&, util::disasm_interface::data_buffer const&) ()
#5 0x00007ff65e8c2e18 in debug_disasm_buffer::disassemble(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, unsigned int&, unsigned int&) const ()
#6 0x00007ff65ed31f51 in debug_view_disasm::generate_with_pc(debug_disasm_buffer&, unsigned int) ()
#7 0x00007ff65ed33176 in debug_view_disasm::generate_dasm(debug_disasm_buffer&, unsigned int) ()
#8 0x00007ff65ed34d85 in debug_view_disasm::view_update() ()
#9 0x00007ff65ad3ea0b in debug_view::end_update() ()
#10 0x00007ff66038585b in osd::debugger::win::debugview_info::view_proc(unsigned int, unsigned long long, long long) ()
#11 0x00007ffea4ffef5c in USER32!CallWindowProcW () from C:\WINDOWS\System32\user32.dll
#12 0x00007ffea4ffe8cc in USER32!DispatchMessageW () from C:\WINDOWS\System32\user32.dll
#13 0x00007ffea50110c3 in USER32!SendMessageTimeoutW () from C:\WINDOWS\System32\user32.dll
#14 0x00007ffea6c31494 in ntdll!KiUserCallbackDispatcher () from C:\WINDOWS\SYSTEM32\ntdll.dll
#15 0x00007ffea49c2384 in win32u!NtUserDestroyWindow () from C:\WINDOWS\System32\win32u.dll
#16 0x00007ff660382820 in osd::debugger::win::debugview_info::~debugview_info() ()
#17 0x00007ff66038be68 in osd::debugger::win::disasmview_info::~disasmview_info() ()
#18 0x00007ff65fe06d07 in osd::debugger::win::debugwin_info::destroy() ()
#19 0x00007ff65ec41208 in std::_Hashtable<input_item_id, std::pair<input_item_id const, ImGuiKey>, std::allocator<std::pair<input_item_id const, ImGuiKey> >, std::__detail::_Select1st, std::equal_to<input_item_id>, std::hash<input_item_id>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long long, unsigned long long, std::__detail::_Hash_node<std::pair<input_item_id const, ImGuiKey>, false>*, unsigned long long) ()
#20 0x00007ff65ebcd66a in osd_module_manager::exit() ()
#21 0x00007ff65aab2074 in osd_common_t::osd_exit() ()
--Type <RET> for more, q to quit, c to continue without paging--
#22 0x00007ff6570830f0 in windows_osd_interface::osd_exit() ()
#23 0x00007ff65729dbba in running_machine::run(bool) ()
#24 0x00007ff65aa98403 in mame_machine_manager::execute() ()
#25 0x00007ff65eba52ad in 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::char_traits<char>, std::allocator<char> > > > const&) ()
#26 0x00007ff65eba59cf in cli_frontend::execute(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) ()
#27 0x00007ff65aa93175 in 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, std::char_traits<char>, std::allocator<char> > > >&) ()
#28 0x00007ff660a264eb in main ()