Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
09017 Crash/Freeze Minor Always 7 days ago 3 days ago
Tester Robbbert View Status Public Platform MAME (Self-compiled)
Assigned To Resolution Invalid report OS Windows 10/11 (64-bit)
Status [?] Closed Driver
Version 0.272 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 09017: svision and clones: Crash at start if no cart
Description If svision (or any of its clones) is started without a cart, for example for a bench run or in the debugger, it crashes at start.
Steps To Reproduce >mame svsion -bench 9

it crashes straight away.
Additional Information C:\MAME>mame svision -d
Warning: layout view 'Bezel Artwork' contains deprecated bezel element
Warning: layout view 'Bezel Artwork' contains deprecated bezel element

-----------------------------------------------------
Exception at EIP=00007ff6df6f7090 (handler_entry_read_memory_bank<0, 0>::read(unsigned int, unsigned char) const+0x0030): ACCESS VIOLATION
While attempting to read memory at 0000000000003fff
-----------------------------------------------------
RAX=0000000000000000 RBX=0000023b86fc82c0 RCX=0000023b883fdf90 RDX=0000000000003fff
RSI=00007ff6db5da710 RDI=0000000000000001 RBP=00007ff6e95ba120 RSP=0000007db1b29878
 R8=0000000000000000 R9=0000023b86ff37f8 R10=0000023b883fdf90 R11=0000023b86ff3808
R12=0de0b6b3a7640000 R13=00007ff6e95ba120 R14=0000007db1b29c80 R15=0000007db1b29ca0
-----------------------------------------------------
Stack crawl:
  0000007db1b29870: 00007ff6df6f7090 (handler_entry_read_memory_bank<0, 0>::read(unsigned int, unsigned char) const+0x0030)
  0000007db1b298a0: 00007ff6dbd7ac0a (m65c02_device::reset_c_full()+0x001a)
  0000007db1b298e0: 00007ff6db5daaea (m6502_device::execute_run()+0x009a)
  0000007db1b29960: 00007ff6db525533 (device_scheduler::timeslice()+0x0323)
  0000007db1b29ae0: 00007ff6db5225a5 (running_machine::run(bool)+0x01c5)
  0000007db1b2f100: 00007ff6de67344c (mame_machine_manager::execute()+0x024c)
  0000007db1b2f4f0: 00007ff6e2396a9a (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&)+0x03ea)
  0000007db1b2f800: 00007ff6e23970ca (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> > > >&)+0x007a)
  0000007db1b2f860: 00007ff6de66e1f7 (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> > > >&)+0x0027)
  0000007db1b2fc30: 00007ff6e402d261 (luaopen_lfs+0xc5f6c1)
  0000007db1b2fc80: 00007ff6d77812ee (__tmainCRTStartup+0x016e)
  0000007db1b2fcb0: 00007ff6d7781406 (mainCRTStartup+0x0016)
  0000007db1b2fce0: 00007ffd5ef17374 (BaseThreadInitThunk+0x0014)
  0000007db1b2fd60: 00007ffd6055cc91 (RtlUserThreadStart+0x0021)
Github Commit
Flags
Regression Version
Affected Sets / Systems svision and clones
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
6
User avatar
No.22600
cuavas
Administrator
3 days ago
These systems require a cartridge to be loaded:

    GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "svision_cart", "bin,ws,sv");
    m_cart->set_must_be_loaded(true);
    m_cart->set_device_load(FUNC(svision_state::cart_load));

You must be running a hacked build.
User avatar
No.22603
Robbbert
Moderator
3 days ago
edited on: 3 days ago
Did you try it for yourself in standard MAME? Either a bench run or via the debugger.

If you don't support the debugger or bench runs then say so.
User avatar
No.22605
cuavas
Administrator
3 days ago
If a media device is marked as requiring media to be loaded, finding a way to bypass that is not supported. If -bench bypasses that test, then that’s an issue with -bench and warrants one report at most. It’s completely unhelpful to spam MAME Testers with reports saying that going out of your way to bypass required mounted media causes bad behaviour.
User avatar
No.22606
Robbbert
Moderator
3 days ago
IMO required media is just papering over bad programming practices, but it's your project with your rules.

I won't log any more cases where required media is involved.
User avatar
No.22609
hap
Developer
3 days ago
No matter what convoluted method you use, MAME crashing is a bug.
User avatar
No.22612
cuavas
Administrator
3 days ago
There’s plenty of bad code in MAME, but that’s neither here nor there when it comes to whether these kinds of reports are useful.

Media image devices have the “must be loaded” flag. Developers can assume that if they set this flag, they can assume media will be mounted. The fact that there’s are ways to bypass this with certain combinations of options is a bug in MAME’s UI code. This doesn’t mean that there’s a bug with every system that assumes that media will be mounted if the “must be loaded” flag is set.

It’s reasonable to set the “must be loaded” flag in cases where the system boots directly from media, or where it won’t do anything useful without media mounted and mounting media requires a hard reset (e.g. because it requires loading a slot device).