- --
      Viewing Issue Advanced Details
    
  | ID | Category [?] | Severity [?] | Reproducibility | Date Submitted | Last Update | 
|---|---|---|---|---|---|
| 02085 | Crash/Freeze | Critical (emulator) | Always | Aug 3, 2008, 23:50 | Apr 28, 2022, 13:37 | 
| Tester | Smitdogg | View Status | Public | Platform | MAME (Self-compiled) | 
| Assigned To | Resolution | Open | OS | ||
| Status [?] | Confirmed | Driver | |||
| Version | 0.126u3 | Fixed in Version | Build | 64-bit | |
| Fixed in Git Commit | Github Pull Request # | ||||
| Summary | 02085: solvalou: Solvalou crashes during the first level. | ||||
| Description | It crashes (exits) part of the way through the first level. Verified to happen on more than one machine. It happens on 126u2 and u3. I don't know how far back it goes or if it's 64-bit specific. ----------------------------------------------------- Exception at EIP=0065E56B: ACCESS VIOLATION While attempting to read memory at 0886F040 ----------------------------------------------------- EAX=04870040 EBX=03FFF000 ECX=00000000 EDX=03FFF000 ESI=00001FE8 EDI=000009DE EBP=0022FBE8 ESP=0022FB80 | ||||
| Steps To Reproduce | |||||
| Additional Information | |||||
| Github Commit | |||||
| Flags | |||||
| Regression Version | |||||
| Affected Sets / Systems | solvalou | ||||
| Attached Files | |||||
      Relationships
		
    
  
      Notes
      
    
  12
    |   No.01927 Tafoid Administrator Aug 4, 2008, 01:53 | Confirmed crash on 32-bit. Will attempt a symbols build crash if needed later. It runs painfully slow on my CPU and it takes a while to get to crash point :) | 
|---|---|
|   No.01930 etabeta Developer Aug 4, 2008, 07:55 | it's very slow on my macbook as well... and with my disappointment, when I finally reached the crash point, it only prompted out Program exited with code 01. and 'No stack' when I ask for a backtrace. I'm using a debug build with symbols of SDLMAME. | 
|   No.01933 Firewave Senior Tester Aug 4, 2008, 15:29 edited on:  Aug 4, 2008, 17:25 | Try to set a breakpoint at the compiler-internal exit() or abort(). It should give you a usable backtrace. | 
|   No.03460 Firewave Senior Tester Jan 2, 2009, 02:39 | Here is a backtrace from 0.128u7: 
Program received signal SIGSEGV, Segmentation fault.
[Switching to thread 2348.0x90c]
0x0066036f in TransferDspData (machine=0xad51efc)
    at src/mame/drivers/namcos21.c:504
504
TransmitWordToSlave( namcos21_dspram16[addr+i] );
(gdb) bt full
#0  0x0066036f in TransferDspData (machine=0xad51efc)
    at src/mame/drivers/namcos21.c:504
        primWords = 11015
        subAddr = 4264
        len = 65535
        masterAddr = 3481
        i = 30089
        old = 2677
        code = 54966
        addr = 2679
        mode = 32768
#1  0x006606ec in dspram16_w (space=0x14451750, offset=2651, data=35420,
    mem_mask=65535) at src/mame/drivers/namcos21.c:608
No locals.
#2  0x009b4de3 in write_word_generic (space=0x14451750, byteaddress=70838,
    data=35420, mem_mask=65535) at src/emu/memory.c:554
        handler = (const handler_data *) 0x14491d80
        byteoffset = 5302
        entry = 72
#3  0x009b6e04 in memory_write_word_16be (space=0x14451750, address=70838,
    data=35420) at src/emu/memory.c:3996
No locals.
#4  0x00f88e61 in M_WRTRAM (cpustate=0x15a01724, addr=35419, data=35420)
    at src/emu/cpu/tms32025/tms32025.c:349
        ram = (UINT16 *) 0x0
#5  0x00f88d98 in PUTDATA (cpustate=0x15a01724, data=35420)
    at src/emu/cpu/tms32025/tms32025.c:531
No locals.
#6  0x00f8b3d9 in sacl (cpustate=0x15a01724)
    at src/emu/cpu/tms32025/tms32025.c:1342
No locals.
#7  0x00f8d446 in cpu_execute_tms32025 (device=0xae01f77, cycles=2000)
    at src/emu/cpu/tms32025/tms32025.c:2010
        cpustate = (tms32025_state *) 0x15a01724
#8  0x009d9e71 in cpu_execute (device=0xae01f77, cycles=2000)
    at src/emu/cpuintrf.h:557
        classheader = (cpu_class_header *) 0x15a03fd8
#9  0x009d95a7 in cpuexec_timeslice (machine=0xad51efc)
    at src/emu/cpuexec.c:276
        delta = {seconds = 0, attoseconds = 83333333333000}
        classdata = (cpu_class_data *) 0x15a027a8
        call_debugger = 0
        global = (cpuexec_private *) 0x15841efc
        target = {seconds = 84, attoseconds = 89104123654575334}
        base = {seconds = 84, attoseconds = 89020790321242334}
        cpu = (const device_config *) 0xae01f77
        ran = 44
#10 0x009c765d in mame_execute (options=0x8061e58) at src/emu/mame.c:360
        settingsloaded = 0
        driver = (const game_driver *) 0x19da9b0
        machine = (running_machine *) 0xad51efc
        mame = (mame_private *) 0xad61f68
        cb = (callback_item *) 0x8061e58
        gamename = (astring *) 0xad51f00
        exit_pending = 0
        error = 0
        firstgame = 0
        firstrun = 0
#11 0x00bdb66c in cli_execute (argc=7, argv=0x7fb1fe4, osd_options=0x21ae990)
    at src/emu/clifront.c:171
        options = (core_options *) 0x8061e58
        gamename = (astring *) 0x8041f00
        exename = (astring *) 0x8051f00
        gamename_option = 0x8091f08 "solvalou"
        driver = (const game_driver *) 0x19da9b0
        result = -1
#12 0x009618b8 in utf8_main (argc=7, argv=0x7fb1fe4)
    at src/osd/windows/winmain.c:257
        ext = 0x28e86b8 ".map"
#13 0x0123f599 in main (argc=7, a_argv=0x64527f0) at src/osd/windows/main.c:72
        i = 7
        rc = 2293624
        utf8_argv = (char **) 0x7fb1fe4
        argv = (TCHAR **) 0x64528f0
        wenviron = (WCHAR **) 0x64550e8
        startupinfo = -1
 | 
|   No.07009 hap Developer Jan 5, 2011, 00:42 | Ok, reason is simple, namcos21.c has many, many cases that can cause an array to be accessed out of bounds. Adding (hacking) masks everywhere (eg. value = array[offset & arraysize-1]) would fix this crash, but since it's an unexpected overflow, the game would probably mess up at that point anyway. This driver could really use a cleanup/update, too bad that Stroff isn't active lately. | 
|   No.07010 Haze Senior Tester Jan 5, 2011, 14:32 | Most of the Namco stuff could do with a cleanup/update to be honest, and I doubt Stoff would be your man for doing that. He was very, very good at figuring things out, and making them work, but yeah, his code also tended to be very dirty and unsafe in places. Not as bad as Acho-code, it was readable, and he didn't start hacking core functions, but in some places just as problematic. I'd say if you want to clean it up, or at least make it safe, then go for it. I'm sure the more recent developments plus the likes of the C++ support we have now could be used to clean up a lot of the places where he's tried to fit multiple hardware emulations into a single file with 100000 defines in order to avoid duplicating code as well. To properly convert all the Namco stuff into video devices is going to be a considerable amount of work. | 
|   No.08357 NekoEd Senior Tester Mar 15, 2012, 15:08 | I've adjusted the severity to Critical (MAME) as the game crashes MAME, not just itself. Reproduced 2012-03-15 in SDLMAME64 0.145u4, game exited partway through first level with no error indication, but definitely an abnormal exit (no closeout information is displayed, it just punts back to the shell.) | 
|   No.10709 haynor666 Tester May 15, 2014, 20:57 | in 153 mame just quits without any error reaching the same point in first level. Finally it can played at 100% on 4670k | 
|   No.11347 Firewave Senior Tester Jan 3, 2015, 20:05 | 
==5217==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6310004717fe at pc 0x00000324f26a bp 0x7fffc1f02600 sp 0x7fffc1f025f8
READ of size 2 at 0x6310004717fe thread T0
    #0 0x324f269 in namcos21_state::transfer_dsp_data() /home/notroot/trunk/src/mame/drivers/namcos21.c:466:33
    #1 0x324ff2a in namcos21_state::dspram16_w(address_space&, unsigned int, unsigned short, unsigned short) /home/notroot/trunk/src/mame/drivers/namcos21.c:567:4
    #2 0x8175e1e in delegate_base<void, address_space&, unsigned int, unsigned short, unsigned short, _noparam, _noparam, _noparam, _noparam, _noparam, _noparam, _noparam, _noparam>::operator()(address_space&, unsigned int, unsigned short, unsigned short) const /home/notroot/trunk/src/lib/util/delegate.h:653:88
    #3 0x8175e1e in handler_entry_write::write16(address_space&, unsigned int, unsigned short, unsigned short) const /home/notroot/trunk/src/emu/memory.c:421
    #4 0x8175e1e in address_space_specific<unsigned short, (endianness_t)1, false>::write_native(unsigned int, unsigned short) /home/notroot/trunk/src/emu/memory.c:1142
    #5 0x817503b in address_space_specific<unsigned short, (endianness_t)1, false>::write_word(unsigned int, unsigned short) /home/notroot/trunk/src/emu/memory.c:1427:72
    #6 0x6efd21d in tms32025_device::M_WRTRAM(unsigned int, unsigned short) /home/notroot/trunk/src/emu/cpu/tms32025/tms32025.c:308:7
    #7 0x6efd21d in tms32025_device::PUTDATA(unsigned short) /home/notroot/trunk/src/emu/cpu/tms32025/tms32025.c:485
    #8 0x6eee8f4 in tms32025_device::sacl() /home/notroot/trunk/src/emu/cpu/tms32025/tms32025.c:1287:2
    #9 0x6efa5b4 in tms32025_device::execute_run() /home/notroot/trunk/src/emu/cpu/tms32025/tms32025.c:2066:4
    #10 0x6efb96f in non-virtual thunk to tms32025_device::execute_run() /home/notroot/trunk/src/emu/cpu/tms32025/tms32025.c:2133:1
    #11 0x81f345a in device_execute_interface::run() /home/notroot/trunk/src/emu/diexec.h:191:15
    #12 0x81f345a in device_scheduler::timeslice() /home/notroot/trunk/src/emu/schedule.c:476
    #13 0x8112c98 in running_machine::run(bool) /home/notroot/trunk/src/emu/machine.c:391:5
    #14 0x810b03a in machine_manager::execute() /home/notroot/trunk/src/emu/mame.c:216:11
    #15 0x7f3df3e in cli_frontend::execute(int, char**) /home/notroot/trunk/src/emu/clifront.c:244:15
    #16 0x576f669 in main /home/notroot/trunk/src/osd/sdl/sdlmain.c:345:9
    #17 0x7f3ebfd31ec4 in __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287
    #18 0x11479ac in _start (/home/notroot/trunk/mame64d+0x11479ac)
0x6310004717ff is located 0 bytes to the right of 69631-byte region [0x631000460800,0x6310004717ff)
allocated by thread T0 here:
    #0 0x112a33b in __interceptor_malloc /home/ben/development/llvm/3.5/final/llvm.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:40:3
    #1 0x89746a8 in osd_malloc_array(unsigned long) /home/notroot/trunk/src/osd/sdl/sdlos_unix.c:108:9
    #2 0x84d703a in malloc_file_line(unsigned long, char const*, int, bool, bool, bool) /home/notroot/trunk/src/lib/util/corealloc.c:112:25
    #3 0x7a34c43 in operator new[](unsigned long, char const*, int) /home/notroot/trunk/src/lib/util/corealloc.h:72:125
    #4 0x7a34c43 in dynamic_array<unsigned char>::expand_internal(int) /home/notroot/trunk/src/lib/util/coretmpl.h:115
    #5 0x7a34c43 in dynamic_array<unsigned char>::resize(int) /home/notroot/trunk/src/lib/util/coretmpl.h:94
    #6 0x7a34c43 in dynamic_array<unsigned char>::resize_and_clear(int, unsigned char) /home/notroot/trunk/src/lib/util/coretmpl.h:99
    #7 0x814da2e in memory_block::memory_block(address_space&, unsigned int, unsigned int, void*) /home/notroot/trunk/src/emu/memory.c:3857:4
    #8 0x8127aef in address_space::allocate_memory() /home/notroot/trunk/src/emu/memory.c:2069:25
    #9 0x8124557 in memory_manager::initialize() /home/notroot/trunk/src/emu/memory.c:1544:3
    #10 0x810f189 in running_machine::start() /home/notroot/trunk/src/emu/machine.c:250:2
    #11 0x81129cc in running_machine::run(bool) /home/notroot/trunk/src/emu/machine.c:345:3
    #12 0x810b03a in machine_manager::execute() /home/notroot/trunk/src/emu/mame.c:216:11
    #13 0x7f3df3e in cli_frontend::execute(int, char**) /home/notroot/trunk/src/emu/clifront.c:244:15
    #14 0x576f669 in main /home/notroot/trunk/src/osd/sdl/sdlmain.c:345:9
    #15 0x7f3ebfd31ec4 in __libc_start_main /build/buildd/eglibc-2.19/csu/libc-start.c:287
SUMMARY: AddressSanitizer: heap-buffer-overflow /home/notroot/trunk/src/mame/drivers/namcos21.c:466 namcos21_state::transfer_dsp_data()
Shadow bytes around the buggy address:
  0x0c62800862a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c62800862b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c62800862c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c62800862d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c62800862e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c62800862f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00[07]
  0x0c6280086300: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c6280086310: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c6280086320: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c6280086330: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c6280086340: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  ASan internal:           fe
 | 
|   No.15252 georgc3 Tester Jul 8, 2018, 06:59 | As of 0.198, Kale has demoted this and Cybersled to not working. He added notes describing the issue. | 
|   No.15312 Augusto Tester Aug 5, 2018, 05:01 | MAME 0.92 the first level is playable without crash. | 
|   No.20113 Robbbert Moderator Apr 28, 2022, 13:37 | Tried now and after a while it quit to the command prompt with an error. Fatal error: IDC overflow |