| カテゴリ | 重要度 | ステータス | 解決状況 | 登録日時 | 最終更新 |
|---|---|---|---|---|---|
クラッシュ/フリーズ | 重要 (本体) | 解決済み | 修正済み | 2021-05-09 20:21 | 2022-12-07 01:05 |
| テスター | Anamon | 担当者 | hap | ソース | apple/apple2.cpp |
| バージョン | 0.231 | 発生バージョン | 修正バージョン | 0.251 | |
| 修正コミット | 9a61f0b | プルリク | |||
| フラグ | |||||
| セット | apple2 | ||||
| セット詳細 |
apple2 - Apple ][ | ||||
| 概 要 | フロッピーデバイスのサウンドエミュレーションでメモリアクセス違反。 | ||||
| 詳 細 | At certain points during floppy access while emulating the Apple II, MAME crashes with a memory read access violation in a method related to floppy drive sound emulation. I have encountered this crash several times already, in two different games. Since it affects the floppy drive sound, I assume other systems than apple2 could potentially be affected, but since the crash happens only intermittently and I've mostly been emulating the Apple II recently, this is where I encountered the bug. I have added the post-crash console output to the end of this description. The two games I have so far encountered this bug in were Karateka and Hi-Res Adventure #0: Mission Asteroid. I played both of these games from disk images in the .WOZ format, which have been loaded into a diskiing drive in slot 6. The command line I use for my basic Apple II emulation configuration, which so far I have encountered the crashes in, is (triple quotes because I use PowerShell): .\mame apple2 -sl0 """""" -sl4 """""" -sl6:diskiing:1 """""" i.e. I remove the default language card from slot 0 and Mockingboard from slot 4 (which I don't think should have any impact on the crash), and I remove the default second floppy drive from the Disk II NG controller in slot 6. So far I could not determine if the crash also happens in the default configuration, with two floppy drives. Full device configuration is as follows: Driver apple2 (Apple ][):
<root> Apple ][
a2bus Apple II Bus
a2common Apple II Common Components @ 14.31 MHz
a2video Apple II video @ 14.31 MHz
ay3600 AY-5-3600 Keyboard Encoder
cass_list Software List
flop525_clean Software List
flop525_misc Software List
flop525_orig Software List
gameio Apple II Game I/O Connector
inhbank Address Map Bank
maincpu MOS Technology 6502 @ 1.02 MHz
mono Speaker
ram RAM
repttmr Timer
scantimer Timer
screen Video Screen @ 14.30 MHz
sl0 Apple II Slot @ 7.15 MHz
sl1 Apple II Slot @ 7.15 MHz
sl2 Apple II Slot @ 7.15 MHz
sl3 Apple II Slot @ 7.15 MHz
sl4 Apple II Slot @ 7.15 MHz
sl5 Apple II Slot @ 7.15 MHz
sl6 Apple II Slot @ 7.15 MHz
diskiing Apple Disk II NG controller (16-sector) @ 7.15 MHz
0 Floppy drive connector abstraction
525 5.25" single density floppy drive
floppysound Floppy sound @ 44.10 kHz
flopsndout Speaker
1 Floppy drive connector abstraction
wozfdc Apple Disk II floppy controller @ 2.04 MHz
phaselatch Fairchild 9334 Addressable Latch
sl7 Apple II Slot @ 7.15 MHz
softlatch Fairchild 9334 Addressable Latch
speaker Filtered 1-bit DAC
tape CassetteAnd here is the post-crash console output with stack trace: ----------------------------------------------------- Exception at EIP=0000000144c25894 (floppy_sound_device::sound_stream_update(sound_stream&, std::vector<read_stream_view, std::allocator<read_stream_view> > const&, std::vector<write_stream_view, std::allocator<write_stream_view> >&)+0x0064): ACCESS VIOLATION While attempting to read memory at 000000000aa0fd54 ----------------------------------------------------- RAX=000000000aa0c850 RBX=0000000000001a83 RCX=000000000310e270 RDX=0000000000001a82 RSI=000000000a9f2820 RDI=0000000000149020 RBP=0000000000148ed8 RSP=0000000000148ed8 R8=000000000a9f6280 R9=0000000000000000 R10=0000000000000004 R11=000000000000113a R12=000000000000053b R13=0000000000000001 R14=000000000000053b R15=00000000030ae708 ----------------------------------------------------- Stack crawl: 0000000000148ee0: 0000000144c25894 (floppy_sound_device::sound_stream_update(sound_stream&, std::vector<read_stream_view, std::allocator<read_stream_view> > const&, std::vector<write_stream_view, std::allocator<write_stream_view> >&)+0x0064) 0000000000148fd0: 0000000143f057f3 (sound_stream::update_view(attotime, attotime, unsigned int)+0x0543) 0000000000149080: 0000000143f051f7 (sound_stream_input::update(attotime, attotime)+0x00c7) 0000000000149170: 0000000143f056e8 (sound_stream::update_view(attotime, attotime, unsigned int)+0x0438) 0000000000149220: 0000000143f051f7 (sound_stream_input::update(attotime, attotime)+0x00c7) 0000000000149310: 0000000143f056e8 (sound_stream::update_view(attotime, attotime, unsigned int)+0x0438) 0000000000149400: 0000000143db0f42 (speaker_device::mix(float*, float*, attotime, attotime, int, bool)+0x0092) 0000000000149510: 0000000143f05b21 (sound_manager::update(void*, int)+0x0171) 0000000000149590: 0000000143c792d3 (device_scheduler::timeslice()+0x0163) 00000000001496f0: 0000000143e9c828 (running_machine::run(bool)+0x0198) 000000000014f340: 00000001472718d0 (mame_machine_manager::execute()+0x01f0) 000000000014f720: 000000014a094877 (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&)+0x0397) 000000000014f9e0: 000000014a094e33 (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> > > >&)+0x0053) 000000000014fa40: 000000014726ee0c (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> > > >&)+0x002c) 000000000014fe20: 000000014b05807f (main+0x017f) 000000000014fef0: 00000001400013c1 (__tmainCRTStartup+0x0231) 000000000014ff20: 00000001400014f6 (mainCRTStartup+0x0016) 000000000014ff50: 00007ff985537c24 (BaseThreadInitThunk+0x0014) 000000000014ffd0: 00007ff98640d721 (RtlUserThreadStart+0x0021) | ||||
| 再現手順 | 1. Start Apple II emulation with Disk II NG Controller and a 5.25" SD drive 2. Load .WOZ image of Karateka (CRC32 579992FD) into drive 3. Play game The crash happens at random times during floppy access. Most recently, it happened after the game tried to load more data after a cutscene in the final level (dungeons). However, it has also happened earlier in the game, and at other times I have also been able to play the game to completion without a crash. | ||||
| 追加情報 | I will continue trying to gather more information, by checking for reproducibility of the crash with the default apple2 device configuration, and other machines using floppy drives with sound emulation. | ||||
| 添付ファイル | |||||