- --
Viewing Issue Advanced Details
| ID | Category [?] | Severity [?] | Reproducibility | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 05242 | Misc. | Critical (emulator) | Always | Jul 29, 2013, 11:42 | May 9, 2014, 21:04 |
| Tester | Firewave | View Status | Public | Platform | MAME (Self-compiled) |
| Assigned To | AWJ | Resolution | Fixed | OS | Linux |
| Status [?] | Resolved | Driver | |||
| Version | 0.149u1 | Fixed in Version | 0.154 | Build | Debug |
| Fixed in Git Commit | Github Pull Request # | ||||
| Summary | 05242: mystwarr, mtlchamp and clones: AddressSanitizer: heap-buffer-overflow | ||||
| Description |
=================================================================
==52564==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6250000ca100 at pc 0x17ff5dcb bp 0x7fffba83ba70 sp 0x7fffba83ba68
READ of size 4 at 0x6250000ca100 thread T0
#0 0x17ff5dca in _ZN9tilemap_t26scanline_draw_opaque_rgb32EPjPKtiPKjPhj /home/notroot/trunk/src/emu/tilemap.c:263
#1 0x17fea512 in _ZN9tilemap_t13draw_instanceI12bitmap_rgb32EEvRT_RKNS_15blit_parametersEii /home/notroot/trunk/src/emu/tilemap.c:1230
#2 0x17fdfec4 in _ZN9tilemap_t11draw_commonI12bitmap_rgb32EEvR13screen_deviceRT_RK9rectanglejhh /home/notroot/trunk/src/emu/tilemap.c:978
#3 0x17fc178d in _ZN9tilemap_t4drawER13screen_deviceR12bitmap_rgb32RK9rectanglejhh /home/notroot/trunk/src/emu/tilemap.c:1062
#4 0x791d781 in _ZN14k056832_device14m_tilemap_drawER13screen_deviceR12bitmap_rgb32RK9rectangleijj /home/notroot/trunk/src/mame/video/k054156_k054157_k056832.c:2593
#5 0x6e7cc79 in _ZN14konamigx_state22gx_draw_basic_tilemapsER13screen_deviceR12bitmap_rgb32RK9rectangleii /home/notroot/trunk/src/mame/video/konamigx.c:761
#6 0x6e7b004 in _ZN14konamigx_state19konamigx_mixer_drawER13screen_deviceR12bitmap_rgb32RK9rectangleP9tilemap_tiS8_iiP12bitmap_ind16iP6GX_OBJPii /home/notroot/trunk/src/mame/video/konamigx.c:952
#7 0x6e78028 in _ZN14konamigx_state14konamigx_mixerER13screen_deviceR12bitmap_rgb32RK9rectangleP9tilemap_tiS8_iiP12bitmap_ind16i /home/notroot/trunk/src/mame/video/konamigx.c:719
#8 0x71288e7 in _ZN14mystwarr_state22screen_update_mystwarrER13screen_deviceR12bitmap_rgb32RK9rectangle /home/notroot/trunk/src/mame/video/mystwarr.c:337
#9 0x17f1c83a in _ZNK13delegate_baseIjR13screen_deviceR12bitmap_rgb32RK9rectangle8_noparamS7_EclES1_S3_S6_ /home/notroot/trunk/src/emu/delegate.h:542
#10 0x17f11525 in _ZN13screen_device14update_partialEi /home/notroot/trunk/src/emu/screen.c:603
#11 0x18173a3e in _ZN13video_manager21finish_screen_updatesEv /home/notroot/trunk/src/emu/video.c:658
#12 0x18172896 in _ZN13video_manager12frame_updateEb /home/notroot/trunk/src/emu/video.c:229
#13 0x17f0fe9a in _ZN13screen_device10vblank_endEv /home/notroot/trunk/src/emu/screen.c:835
#14 0x17f0dfa8 in _ZN13screen_device12device_timerER9emu_timerjiPv /home/notroot/trunk/src/emu/screen.c:403
#15 0x17efd58a in _ZN8device_t13timer_expiredER9emu_timerjiPv /home/notroot/trunk/src/emu/device.h:228
#16 0x17eee17b in _ZN16device_scheduler14execute_timersEv /home/notroot/trunk/src/emu/schedule.c:931
#17 0x17ee1769 in _ZN16device_scheduler9timesliceEv /home/notroot/trunk/src/emu/schedule.c:454
#18 0x17a8888b in _ZN15running_machine3runEb /home/notroot/trunk/src/emu/machine.c:412
#19 0x17a74411 in _Z12mame_executeR11emu_optionsR13osd_interface /home/notroot/trunk/src/emu/mame.c:190
#20 0x173eb8a6 in _ZN12cli_frontend7executeEiPPc /home/notroot/trunk/src/emu/clifront.c:255
#21 0x10708f01 in main /home/notroot/trunk/src/osd/sdl/sdlmain.c:378
#22 0x7f69794cbea4 in __libc_start_main /build/buildd/eglibc-2.17/csu/libc-start.c:260
#23 0x1e7a7bc in _start ??:?
0x6250000ca100 is located 0 bytes to the right of 8192-byte region [0x6250000c8100,0x6250000ca100)
allocated by thread T0 here:
#0 0x1e6c724 in __interceptor_malloc ??:?
#1 0x18d943c9 in _Z13palette_allocjj /home/notroot/trunk/src/lib/util/palette.c:151
#2 0x17748d60 in _ZL16allocate_paletteR15running_machineP15palette_private /home/notroot/trunk/src/emu/emupal.c:596
#3 0x17747053 in _Z12palette_initR15running_machine /home/notroot/trunk/src/emu/emupal.c:142
#4 0x17a7e3b6 in _ZN15running_machine5startEv /home/notroot/trunk/src/emu/machine.c:259
#5 0x17a88439 in _ZN15running_machine3runEb /home/notroot/trunk/src/emu/machine.c:391
#6 0x17a74411 in _Z12mame_executeR11emu_optionsR13osd_interface /home/notroot/trunk/src/emu/mame.c:190
#7 0x173eb8a6 in _ZN12cli_frontend7executeEiPPc /home/notroot/trunk/src/emu/clifront.c:255
#8 0x10708f01 in main /home/notroot/trunk/src/osd/sdl/sdlmain.c:378
#9 0x7f69794cbea4 in __libc_start_main /build/buildd/eglibc-2.17/csu/libc-start.c:260
Shadow bytes around the buggy address:
0x0c4a800113d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c4a800113e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c4a800113f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c4a80011400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c4a80011410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c4a80011420:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80011430: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80011440: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80011450: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80011460: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80011470: 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
ASan internal: fe
==52564==ABORTING
|
||||
| Steps To Reproduce | |||||
| Additional Information | |||||
| Github Commit | |||||
| Flags | |||||
| Regression Version | |||||
| Affected Sets / Systems | mystwarr, mtlchamp and clones | ||||
|
Attached Files
|
|||||
Relationships
| There are no relationship linked to this issue. |
Notes
7
|
No.09793
Firewave Senior Tester
Sep 12, 2013, 15:57
|
The out-of-bounds access happens in tilemap_t::scanline_draw_opaque_rgb32() as seen above. The line in question is: dest[i] = clut[source[i]]; ASAN bails out when source[i] is 0x800. |
|---|---|
|
No.09794
Firewave Senior Tester
Sep 13, 2013, 16:16
|
It only overflows up to 0x080f, so it seems, that maybe somewhere in the chip implementation it draws too much. |
|
No.09795
Firewave Senior Tester
Sep 13, 2013, 16:29
|
Also happens with mtlchamp with a higher -str value. |
|
No.10355
Firewave Senior Tester
Mar 13, 2014, 02:45
|
Newer backtrace:
mystwarr.c: mystwarru, mystwarrj, mystwarr, mystwarra
==2918==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62500006d900 at pc 0x7f6abce bp 0x7fff1e5dfa50 sp 0x7fff1e5dfa48
READ of size 4 at 0x62500006d900 thread T0
#0 0x7f6abcd in rgb_t::operator unsigned int() const /home/notroot/trunk/src/lib/util/palette.h:58
#1 0x7f6abcd in tilemap_t::scanline_draw_opaque_rgb32(unsigned int*, unsigned short const*, int, rgb_t const*, unsigned char*, unsigned int) /home/notroot/trunk/src/emu/tilemap.c:234
#2 0x7f6abcd in void tilemap_t::draw_instance<bitmap_rgb32>(screen_device&, bitmap_rgb32&, tilemap_t::blit_parameters const&, int, int) /home/notroot/trunk/src/emu/tilemap.c:1202
#3 0x7f67f7a in void tilemap_t::draw_common<bitmap_rgb32>(screen_device&, bitmap_rgb32&, rectangle const&, unsigned int, unsigned char, unsigned char) /home/notroot/trunk/src/emu/tilemap.c:950
#4 0x2bc8009 in k056832_device::m_tilemap_draw(screen_device&, bitmap_rgb32&, rectangle const&, int, unsigned int, unsigned int) /home/notroot/trunk/src/mame/video/k054156_k054157_k056832.c:2602
#5 0x2876ec8 in konamigx_state::gx_draw_basic_tilemaps(screen_device&, bitmap_rgb32&, rectangle const&, int, int) /home/notroot/trunk/src/mame/video/konamigx.c:761
#6 0x2876c24 in konamigx_state::konamigx_mixer_draw(screen_device&, bitmap_rgb32&, rectangle const&, tilemap_t*, int, tilemap_t*, int, int, bitmap_ind16*, int, GX_OBJ*, int*, int) /home/notroot/trunk/src/mame/video/konamigx.c:952
#7 0x2875ef3 in konamigx_state::konamigx_mixer(screen_device&, bitmap_rgb32&, rectangle const&, tilemap_t*, int, tilemap_t*, int, int, bitmap_ind16*, int) /home/notroot/trunk/src/mame/video/konamigx.c:719
#8 0x29429df in mystwarr_state::screen_update_mystwarr(screen_device&, bitmap_rgb32&, rectangle const&) /home/notroot/trunk/src/mame/video/mystwarr.c:334
#9 0x7f30c39 in delegate_base<unsigned int, screen_device&, bitmap_rgb32&, rectangle const&, _noparam, _noparam>::operator()(screen_device&, bitmap_rgb32&, rectangle const&) const /home/notroot/trunk/src/emu/delegate.h:513
#10 0x7f30c39 in screen_device::update_partial(int) /home/notroot/trunk/src/emu/screen.c:629
#11 0x7fd47e0 in video_manager::finish_screen_updates() /home/notroot/trunk/src/emu/video.c:627
#12 0x7fd3e84 in video_manager::frame_update(bool) /home/notroot/trunk/src/emu/video.c:201
#13 0x7f305fa in screen_device::vblank_end() /home/notroot/trunk/src/emu/screen.c:862
#14 0x7f25f53 in device_t::timer_expired(emu_timer&, unsigned int, int, void*) /home/notroot/trunk/src/emu/device.h:199
#15 0x7f25f53 in device_scheduler::execute_timers() /home/notroot/trunk/src/emu/schedule.c:903
#16 0x7e2c4b0 in running_machine::run(bool) /home/notroot/trunk/src/emu/machine.c:387
#17 0x7e23a27 in mame_execute(emu_options&, osd_interface&) /home/notroot/trunk/src/emu/mame.c:192
#18 0x7bda0e9 in cli_frontend::execute(int, char**) /home/notroot/trunk/src/emu/clifront.c:233
#19 0x56dad59 in main /home/notroot/trunk/src/osd/sdl/sdlmain.c:380
#20 0x7f06f09a4de4 in __libc_start_main /build/buildd/eglibc-2.17/csu/libc-start.c:260
#21 0x10b1e5c in _start (/home/notroot/trunk/mame64d+0x10b1e5c)
0x62500006d900 is located 0 bytes to the right of 8192-byte region [0x62500006b900,0x62500006d900)
allocated by thread T0 here:
#0 0x109c4b9 in operator new[](unsigned long) /home/ben/development/llvm/3.4/final/llvm.src/projects/compiler-rt/lib/asan/asan_new_delete.cc:54
#1 0x82c5af0 in dynamic_array<rgb_t>::expand_internal(int) /home/notroot/trunk/src/lib/util/coretmpl.h:69
#2 0x82c5af0 in dynamic_array /home/notroot/trunk/src/lib/util/coretmpl.h:41
#3 0x82c5af0 in palette_t::palette_t(unsigned int, unsigned int) /home/notroot/trunk/src/lib/util/palette.c:222
#4 0x82c58ea in palette_t::alloc(unsigned int, unsigned int) /home/notroot/trunk/src/lib/util/palette.c:200
#5 0x7ca5f91 in palette_device::allocate_palette() /home/notroot/trunk/src/emu/emupal.c:537
#6 0x7ca524d in palette_device::device_start() /home/notroot/trunk/src/emu/emupal.c:421
#7 0x7c14553 in device_t::start() /home/notroot/trunk/src/emu/device.c:393
#8 0x7e2b98b in running_machine::start_all_devices() /home/notroot/trunk/src/emu/machine.c:1104
#9 0x7e287ef in running_machine::start() /home/notroot/trunk/src/emu/machine.c:290
#10 0x7e2c34e in running_machine::run(bool) /home/notroot/trunk/src/emu/machine.c:358
#11 0x7e23a27 in mame_execute(emu_options&, osd_interface&) /home/notroot/trunk/src/emu/mame.c:192
#12 0x7bda0e9 in cli_frontend::execute(int, char**) /home/notroot/trunk/src/emu/clifront.c:233
#13 0x56dad59 in main /home/notroot/trunk/src/osd/sdl/sdlmain.c:380
#14 0x7f06f09a4de4 in __libc_start_main /build/buildd/eglibc-2.17/csu/libc-start.c:260
|
|
No.10357
AWJ Developer
Mar 13, 2014, 05:30
|
It's reading off the end of the palette. Unlike drawgfx, the tilemap system doesn't enforce color wraparound, and making it do so will probably break a ton of drivers that don't set up their gfx elements properly. |
|
No.10684
M.A.S.H. Senior Tester
May 9, 2014, 16:30
|
Fixed by AWJ (r30336) |
|
No.10686
Firewave Senior Tester
May 9, 2014, 21:04
|
Confirmed that the ASAN error is gone. |