Viewing Issue Advanced Details Jump to Notes ] viper.cpp
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
06097 Crash/Freeze Critical (emulator) Always Dec 8, 2015, 20:19 Jan 26, 2016, 11:46
Tester Tafoid View Status Public Platform MAME (Official Binary)
Assigned To Robbbert Resolution Fixed OS Windows Vista/7/8 (64-bit)
Status [?] Resolved   Driver viper.cpp
Version 0.168 Fixed in Version 0.170 Build Normal
Summary 06097: Most sets in viper.c: Crashing at start (32-bit only)
Description When running most sets with the new official toolchain supplied (GCC 5.2.0) - most sets in viper.c crash immediately upon start.
Please note, this does not happen with earlier toolchains (GCC 4.9.1,4.9.2 tested). Perhaps a compiler error or finally rooting out a problem that has laid dormant?

Exception at EIP=021CF073 (voodoo_banshee_device::banshee_io_r(address_space&, unsigned int, unsigned int)+0x00e3): ACCESS VIOLATION
While attempting to read memory at 00391E30

Stack crawl:
  0028C8C8: 021CF073 (voodoo_banshee_device::banshee_io_r(address_space&, unsigned int, unsigned int)+0x00e3)
  0028C948: 0087FD46 (viper_state::voodoo3_io_r(address_space&, unsigned int, unsigned long long)+0x0276)
  0028C988: 0326CE22 (delegate_base<unsigned long long, address_space&, unsigned int, unsigned long long, _noparam, _noparam, _noparam, _noparam, _noparam, _noparam, _noparam, _noparam, _noparam>::operator()(address_space&, unsigned int, unsigned long long) const+0x0032)
  0028C9C8: 030C5A35 (address_space_specific<unsigned long long, (endianness_t)1, true>::read_native(unsigned int, unsigned long long)+0x00a5)
  0028C9F8: 030C5F87 (address_space_specific<unsigned long long, (endianness_t)1, true>::read_dword_static(address_space_specific<unsigned long long, (endianness_t)1, true>&, unsigned int)+0x0047)
  0028CA38: 01C50A3E (cfunc_ppccom_execute_mtspr(void*)+0x000e)
  0028CA58: 0238D156 (drcbe_x86::execute(uml::code_handle&)+0x0016)
  0028CA78: 01C77417 (ppc_device::execute_run()+0x0037)
  0028CAE8: 0256AC98 (device_scheduler::timeslice()+0x0608)
  0028CB38: 0252CE77 (running_machine::run(bool)+0x0157)
  0028F9F8: 0252801C (machine_manager::execute()+0x021c)
  0028FB48: 0247CB2C (cli_frontend::execute(int, char**)+0x089c)
  0028FE88: 014B9148 (utf8_main(int, char**)+0x0178)
  0028FEB8: 0293C9F1 (wmain+0x0071)
  0028FF80: 00401400 (__tmainCRTStartup+0x0280)
  0028FF94: 751E7C04 (BaseThreadInitThunk+0x0024)
  0028FFDC: 77A1AD1F (RtlInitializeExceptionChain+0x008f)
  0028FFEC: 77A1ACEA (RtlInitializeExceptionChain+0x005a)
Steps To Reproduce
Additional Information
Flags 32-bit specific
Regression Version
Affected Sets / Systems Most sets in viper.c
Attached Files
 


-  Notes
User avatar
No.12372
Robbbert
(Developer)
Jan 26, 2016, 11:46
Compiler error suspected. offset received the value of space, and data received the value of offset.
But if a printf was added, the problem went away.
Rearranged the relevant code and now it works.