Project

General

Profile

Actions

Emulator Issues #13277

closed

Memory breakpoints seem to break when using frame advance

Added by SSM24 over 1 year ago. Updated about 1 year ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Current
Regression:
Yes
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
5.0-18644
Fixed in:
5.0-20358

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?

  1. Enable debug tools in Options > Configuration > Show Debugging UI. Ensure View > Breakpoints and View > Code are both checked.
  2. Load any game.
  3. 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.
  4. 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

Actions #1

Updated by JosJuice over 1 year ago

  • Milestone set to Current
  • Regression changed from No to Yes
  • Regression start set to 5.0-18644
Actions #2

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

Actions #3

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.

Actions #4

Updated by JosJuice about 1 year ago

  • Status changed from New to Fixed
  • Fixed in set to 5.0-20358
Actions

Also available in: Atom PDF