Emulator Issues #12041
closedDolphin crashes when using DSP LLE and CPU Interpreter
0%
Description
I've tested with the GameCube IPL and Wii Sports, but I'm pretty sure it affects all titles.
What's the problem? Describe what went wrong.
Dolphin crashes on starting emulation if both DSP LLE and CPU interpreter are used together. This happens with both DSP LLE Recompiler and DSP LLE Interpreter, and interpreter/cached interpreter, and single/dual core, and dumped/free DSP roms, and MMU enabled or disabled (I haven't tested all of the permutations of these, but I did test a lot of them).
What steps will reproduce the problem?
- Under Settings ⇒ Audio, set DSP Emulation Engine to DSP LLE Recompiler.
- Under Settings ⇒ Advanced, set CPU Emulation Engine to Cached Interpreter.
- Try to launch something.
Is the issue present in the latest development version?
Yes, tested 5.0-11824.
Is the issue present in the latest stable version?
No, not present in 5.0.
If the issue isn't present in the latest stable version, which is the first broken version?
What are your PC specifications?
- CPU: AMD A6-340M APU with Radeon(tm) Graphics, 1500 Mhz, 4 Core(s), 4 Logical Processor(s)
- GPU: AMD Radeon HD 6520G
- OS: Windows 10 Pro (Insider preview) 10.0.19041.172
Is there anything else that can help developers narrow down the issue?
Stacktrace with DSP LLE Interpeter and CPU Cached Interpreter and Single Core, on CPU-GPU thread:
Unhandled exception at 0x00007FF7D75B02CE in DolphinD.exe: 0xC0000005: Access violation reading location 0x00000000013CA440.
> DolphinD.exe!Common::HashEctor(const unsigned char * ptr, int length) Line 104 C++
DolphinD.exe!DSP::gdsp_idma_in(unsigned short dsp_addr, unsigned int addr, unsigned int size) Line 289 C++
DolphinD.exe!DSP::gdsp_do_dma() Line 423 C++
DolphinD.exe!DSP::gdsp_ifx_write(unsigned int addr, unsigned short val) Line 132 C++
DolphinD.exe!DSP::dsp_dmem_write(unsigned short addr, unsigned short val) Line 62 C++
DolphinD.exe!DSP::Interpreter::sr(unsigned short opc) Line 69 C++
DolphinD.exe!DSP::Interpreter::`anonymous namespace'::ExecuteInstruction(const unsigned short inst) Line 32 C++
DolphinD.exe!DSP::Interpreter::Step() Line 101 C++
DolphinD.exe!DSP::Interpreter::RunCyclesDebug(int cycles) Line 140 C++
DolphinD.exe!DSP::DSPCore_RunCycles(int cycles) Line 280 C++
DolphinD.exe!DSP::LLE::DSPLLE::DSP_Update(int cycles) Line 321 C++
DolphinD.exe!`DSP::RegisterMMIO'::`2'::<lambda_5>::operator()(unsigned int __formal) Line 280 C++
DolphinD.exe!std::_Invoker_functor::_Call<`DSP::RegisterMMIO'::`2'::<lambda_5> &,unsigned int>(DSP::RegisterMMIO::__l2::<lambda_5> & _Obj, unsigned int && <_Args_0>) Line 1610 C++
DolphinD.exe!std::invoke<`DSP::RegisterMMIO'::`2'::<lambda_5> &,unsigned int>(DSP::RegisterMMIO::__l2::<lambda_5> & _Obj, unsigned int && <_Args_0>) Line 1610 C++
DolphinD.exe!std::_Invoker_ret<unsigned short,0>::_Call<`DSP::RegisterMMIO'::`2'::<lambda_5> &,unsigned int>(DSP::RegisterMMIO::__l2::<lambda_5> & <_Vals_0>, unsigned int && <_Vals_1>) Line 1637 C++
DolphinD.exe!std::_Func_impl_no_alloc<`DSP::RegisterMMIO'::`2'::<lambda_5>,unsigned short,unsigned int>::_Do_call(unsigned int && <_Args_0>) Line 927 C++
DolphinD.exe!std::_Func_class<unsigned short,unsigned int>::operator()(unsigned int <_Args_0>) Line 977 C++
DolphinD.exe!MMIO::ReadHandler<unsigned short>::Read(unsigned int addr) Line 143 C++
DolphinD.exe!MMIO::Mapping::Read<unsigned short>(unsigned int addr) Line 132 C++
DolphinD.exe!PowerPC::ReadFromHardware<1,unsigned short,0>(unsigned int em_address) Line 250 C++
DolphinD.exe!PowerPC::Read_U16(unsigned int address) Line 469 C++
DolphinD.exe!Interpreter::lhz(UGeckoInstruction inst) Line 234 C++
DolphinD.exe!CachedInterpreter::ExecuteOneBlock() Line 96 C++
DolphinD.exe!CachedInterpreter::Run() Line 122 C++
DolphinD.exe!PowerPC::RunLoop() Line 367 C++
DolphinD.exe!CPU::Run() Line 122 C++
DolphinD.exe!Core::CpuThread(const std::optional<std::string> & savestate_path, bool delete_savestate) Line 371 C++
DolphinD.exe!Core::EmuThread(std::unique_ptr<BootParameters,std::default_delete<BootParameters>> boot, WindowSystemInfo wsi) Line 618 C++
DolphinD.exe!std::_Invoker_functor::_Call<void (__cdecl*)(std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo),std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo>(void(*)(std::unique_ptr<BootParameters,std::default_delete<BootParameters>>, WindowSystemInfo) && _Obj, std::unique_ptr<BootParameters,std::default_delete<BootParameters>> && <_Args_0>, WindowSystemInfo && <_Args_1>) Line 1610 C++
DolphinD.exe!std::invoke<void (__cdecl*)(std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo),std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo>(void(*)(std::unique_ptr<BootParameters,std::default_delete<BootParameters>>, WindowSystemInfo) && _Obj, std::unique_ptr<BootParameters,std::default_delete<BootParameters>> && <_Args_0>, WindowSystemInfo && <_Args_1>) Line 1610 C++
DolphinD.exe!std::thread::_Invoke<std::tuple<void (__cdecl*)(std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo),std::unique_ptr<BootParameters,std::default_delete<BootParameters>>,WindowSystemInfo>,0,1,2>(void * _RawVals) Line 44 C++
ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void *),1>(void * const parameter) Line 97 C++
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
The parameters to gdsp_idma_in
are 0
, 0x813CA440
, 0x1760
.
This code is suspect, since Memory::physical_base
(and thus g_dsp.cpu_ram
) seems to be NULL
when using CPU Interpreter.
Updated by JosJuice almost 4 years ago
- Is duplicate of Emulator Issues #11980: LLE audio and Fastmem off causes Dolphin crash added