Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
02764 Crash/Freeze Critical (emulator) Always Dec 24, 2008, 18:21 Dec 26, 2008, 07:16
Tester Firewave View Status Public Platform MAME (Self-compiled)
Assigned To Atari Ace Resolution Fixed OS
Status [?] Resolved Driver liberate.cpp
Version 0.128u7 Fixed in Version 0.129 Build Debug
Summary 02764: liberateb: [debug] Access Violation
Description -----------------------------------------------------
Exception at EIP=004DCA3D (palette_init_liberate+0x01c1): ACCESS VIOLATION
While attempting to read memory at 00000001
-----------------------------------------------------
EAX=00000001 EBX=11C51F20 ECX=00000000 EDX=00000001
ESI=00000000 EDI=00000000 EBP=0022FB38 ESP=0022FAD0


Program received signal SIGSEGV, Segmentation fault.
0x004c8b1e in liberate_draw_sprites (machine=0xad31efc, bitmap=0x143d1fe0,
    cliprect=0x22f984) at src/mame/video/liberate.c:206
206 code = spriteram[offs+1] + ((spriteram[offs+0] & 0x60) <
< 3);
(gdb) bt full
#0 0x004c8b1e in liberate_draw_sprites (machine=0xad31efc,
    bitmap=0x143d1fe0, cliprect=0x22f984) at src/mame/video/liberate.c:206
        multi = 0
        fx = 4
        sy = 2292056
        color = 2292100
        fy = 182132588
        sx = 0
        sy2 = 5018718
        code = 339550176
        offs = 0
#1 0x004c9476 in video_update_liberate (screen=0xadb1f6c, bitmap=0x143d1fe0,
    cliprect=0x22f984) at src/mame/video/liberate.c:431
No locals.
#2 0x009cb472 in video_screen_update_partial (screen=0xadb1f6c, scanline=247)
    at src/emu/video.c:845
        flags = 1
        state = (screen_state *) 0x12fa1f20
        clip = {min_x = 0, max_x = 255, min_y = 8, max_y = 247}
        result = 0
#3 0x009cd4d3 in finish_screen_updates (machine=0xad31efc)
    at src/emu/video.c:1548
        screen = (const device_config *) 0xadb1f6c
        anything_changed = 0
#4 0x009cd218 in video_frame_update (machine=0xad31efc, debug=0)
    at src/emu/video.c:1480
        anything_changed = 2292536
        current_time = {seconds = 0, attoseconds = 16666666666666666}
        skipped_it = 0
        phase = 3
#5 0x009cce9c in vblank_begin_callback (machine=0xad31efc, ptr=0xadb1f6c,
    param=0) at src/emu/video.c:1372
        i = 2
        screen = (device_config *) 0xadb1f6c
        state = (screen_state *) 0x12fa1f20
#6 0x009f5310 in timer_set_global_time (machine=0xad31efc, newbase=
      {seconds = 0, attoseconds = 16666666666666666}) at src/emu/timer.c:397
        was_enabled = 1
        global = (timer_private *) 0xb2915b8
        timer = (emu_timer *) 0xb2916c0
#7 0x009d9b83 in cpuexec_timeslice (machine=0xad31efc)
    at src/emu/cpuexec.c:333
        call_debugger = 0
        global = (cpuexec_private *) 0x12e11efc
        target = {seconds = 0, attoseconds = 16666666666666666}
        base = {seconds = 0, attoseconds = 16666666666650000}
        cpu = (const device_config *) 0x0
        ran = 24217
#8 0x009c765d in mame_execute (options=0x8041e58) at src/emu/mame.c:360
        settingsloaded = 0
        driver = (const game_driver *) 0x14d54a0
        machine = (running_machine *) 0xad31efc
        mame = (mame_private *) 0xad41f68
        cb = (callback_item *) 0x8041e58
        gamename = (astring *) 0xad31f00
        exit_pending = 0
        error = 0
        firstgame = 0
        firstrun = 0
#9 0x00bdb66c in cli_execute (argc=5, argv=0x7fb1fec, osd_options=0x21ae990)
    at src/emu/clifront.c:171
        options = (core_options *) 0x8041e58
        gamename = (astring *) 0x8021f00
        exename = (astring *) 0x8031f00
        gamename_option = 0x8071f08 "liberatb"
        driver = (const game_driver *) 0x14d54a0
        result = -1
#10 0x009618b8 in utf8_main (argc=5, argv=0x7fb1fec)
    at src/osd/windows/winmain.c:257
        ext = 0x28e86b8 ".map"
#11 0x0123f599 in main (argc=5, a_argv=0x64527f0) at src/osd/windows/main.c:72
        i = 5
        rc = 2293624
        utf8_argv = (char **) 0x7fb1fec
        argv = (TCHAR **) 0x6452860
        wenviron = (WCHAR **) 0x6455080
        startupinfo = -1
Steps To Reproduce
Additional Information Set name changed 0.131u3:
< Liberation (bootleg) [name: liberatb - parent: liberate]
> Liberation (bootleg) [name: liberateb - parent: liberate]
Flags Debug build specific
Regression Version 0.128u7
Affected Sets / Systems liberateb
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
2
User avatar
No.03379
Tafoid
Administrator
Dec 24, 2008, 18:39
It's only crashes in the debug screen for me. Regular build sits at the information screen not allowing any input. Likely a separate issue as the regression for that one is 0.126u2!

Making as Debug only.
User avatar
No.03388
Atari Ace
Senior Tester
Dec 24, 2008, 22:44
The driver has no cpu(!), so no initialization of spriteram. It appears this bug was introduced in 0126u2, when the cpu accidentally got the same tag as liberate (oops!). This fixes it.

BTW, this should crash in all builds.

diff -Nru zzs1/src/mame/drivers/liberate.c 1hack/src/mame/drivers/liberate.c
--- zzs1/src/mame/drivers/liberate.c	2008-12-20 17:11:28.546875000 -0800
+++ 1hack/src/mame/drivers/liberate.c	2008-12-24 14:43:09.250000000 -0800
@@ -555,13 +555,12 @@
 static MACHINE_DRIVER_START( liberatb )
 	MDRV_IMPORT_FROM(liberate)
 
+	MDRV_CPU_REMOVE("main")
+
 	/* basic machine hardware */
-	MDRV_CPU_MODIFY("main")
-	MDRV_CPU_TYPE(M6502)
+	MDRV_CPU_ADD("main",M6502, 2000000)
 	MDRV_CPU_PROGRAM_MAP(liberatb_readmem,liberatb_writemem)
 	MDRV_CPU_VBLANK_INT("main", deco16_interrupt)
-
-	MDRV_CPU_REMOVE("main")
 MACHINE_DRIVER_END
 
 static MACHINE_DRIVER_START( boomrang )