Emulator Issues #13277
closedMemory breakpoints seem to break when using frame advance
0%
Description
Game Name?
Tested in Super Mario Galaxy 2 and Twilight Princess (GC), but unlikely to be limited to these games
Game ID?
SMG2: SB4E01
TP: GZ2E01
MD5 Hash?
SMG2: 09a28c6fc53435b2d478516aac50055c
TP: 41deff9b1fd2831f48fbfa2dd1054e4d
What's the problem? Describe what went wrong.
Setting a memory breakpoint with the debug tools and then using the frame advance hotkey consistently causes Dolphin to freeze. This is often, though not always, accompanied by the code view rapidly jumping around between addresses before it becomes unresponsive.
Using the toggle pause key after setting a memory breakpoint seems to work fine, as does using frame advance with a regular breakpoint, so it's specifically frame advance with memory breakpoints that's broken.
What steps will reproduce the problem?
- Enable debug tools in
Options > Configuration > Show Debugging UI
. EnsureView > Breakpoints
andView > Code
are both checked. - Load any game.
- Pause execution, and set a memory breakpoint of any type. For GZ2E01, an arbitrary good choice is address
80A24C4C
on the title screen, which corresponds to Link's X position. - Use frame advance. Dolphin becomes unresponsive at this point.
Is the issue present in the latest development version?
Yes, broken in latest dev (5.0-19634)
What is the first broken version?
5.0-18648 seems to be the first broken version, 5.0-18641 works fine for me. (18644 and 18646 couldn't be tested since they fail to load ROMs for me.)
What are your PC specifications?
OS: Windows 10 Home, 22H2
CPU: Intel Core i7-6700K
GPU: Nvidia GTX 1070
(If this isn't enough info, please let me know.)
Is there anything else that can help developers narrow down the issue?
I've attached a screen capture of the problem occurring on the latest dev version.
Files
Updated by JosJuice over 1 year ago
- Milestone set to Current
- Regression changed from No to Yes
- Regression start set to 5.0-18644
Updated by taolas over 1 year ago
This should happen because UpdateDisasmDialog spams signals way too much. It usually doesn't freeze while a game is playing because the debugger will ignore the signals. I think frame advanced is considered to be in the pause state while advancing, so updates are accepted.
Related
#13055
Outdated PR:
https://github.com/dolphin-emu/dolphin/pull/11161
Updated by taolas about 1 year ago
Not 100% sure on my previous post.
Core has:
if (system.GetCPU().IsStepping() || s_frame_step)
return State::Paused;
s_frame_step was added to stop the UI from flickering with updates on frame advance.
However, updatedisasmdialog triggers while advancing and then things like the callstack in code widget check to see if it's okay to update. This "hack" returns paused despite the game running, which causes debugger updates that shouldn't happen.
Updated by JosJuice about 1 year ago
- Status changed from New to Fixed
- Fixed in set to 5.0-20358