hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.35k stars 2.18k forks source link

Splinter Cell Essentials: Debugger crashes on loading #15245

Closed ThirteenAG closed 2 years ago

ThirteenAG commented 2 years ago

Game or games this happens in

ULUS-10070

What area of the game / PPSSPP

When starting the game, I open debugger, and at some point shortly after, ppsspp crashes. It doesn't crash without debugger opened, and it crashes upon opening debugger in menu or in-game.

https://user-images.githubusercontent.com/4904157/146776588-63be6643-4040-4b05-9e47-cb8ccb737355.mp4

What should happen

Debugger should work.

Logs

Attaching a crash dump just in case.

PPSSPPWindows64.exe.16688.dmp.zip

Platform

Windows

Mobile phone model or graphics card

1060

PPSSPP version affected

v1.12.3-489-g31d7d1e55

Last working version

No response

Graphics backend (3D API)

Direct3D 11

Checklist

unknownbrackets commented 2 years ago

Could you try to reproduce this with this build and attach a dmp file for it?

https://github.com/hrydgard/ppsspp/actions/runs/1599769449

The reason is that I need the exact exe and pdb that match your crash to use the dmp. The Orphis buildbot doesn't provide the pdb and its build will be slightly different, so that's why I'm proposing the above one.

-[Unknown]

ThirteenAG commented 2 years ago

PPSSPPWindows64.exe.7220.dmp.zip

    PPSSPPWindows64.exe!XXH3_64bits(const void * input=0x0000000000000000, unsigned __int64 len=0x0000000000000008) Line 3867   C   Symbols loaded.
>   [Inline Frame] PPSSPPWindows64.exe!computeHash(unsigned int) Line 92    C++ Symbols loaded.
    PPSSPPWindows64.exe!DisassemblyData::DisassemblyData(unsigned int _address, unsigned int _size, DataType _type) Line 906    C++ Symbols loaded.
    PPSSPPWindows64.exe!DisassemblyManager::analyze(unsigned int address=0x00000000, unsigned int size) Line 255    C++ Symbols loaded.
    PPSSPPWindows64.exe!DisassemblyManager::getLine(unsigned int address=0x00000000, bool insertSymbols, DisassemblyLineInfo & dest={...}, DebugInterface * cpuDebug=0x0000000000000000) Line 294   C++ Symbols loaded.
    PPSSPPWindows64.exe!CtrlDisAsmView::getSelectedLineArguments() Line 432 C++ Symbols loaded.
    PPSSPPWindows64.exe!CtrlDisAsmView::onPaint(unsigned __int64 wParam=0x000002a6261e87f0, __int64 lParam=0x0000000000000000) Line 514 C++ Symbols loaded.
    PPSSPPWindows64.exe!CtrlDisAsmView::wndProc(HWND__ * hwnd=0x000000000009081e, unsigned int msg=0x0000000f, unsigned __int64 wParam=0x0000000000000000, __int64 lParam=0x0000000000000000) Line 91   C++ Symbols loaded.
unknownbrackets commented 2 years ago

Thanks, that's very helpful. I made a change in #15247. Once the checks are complete, you can try the build from the Checks tab, under Artifacts.

-[Unknown]

ThirteenAG commented 2 years ago

Doesn't crash anymore, although I noticed it doesn't update modules under Modules tab. Here's the list of modules when debugger is opened right after launching the game (and later stays opened or gets reopened): image

And here's the list if debugger is opened during gameplay:

image

unknownbrackets commented 2 years ago

Hm, for me the module list updates when I break, but not during regular game runtime. I don't think that's different from before.

I think the threads and everything else work the same way, though.

Are you seeing it not update even when you hit Break?

-[Unknown]

ThirteenAG commented 2 years ago

Yeah, it updates when I break too. Kinda strange if you ask me, would rather see info from current process state.

unknownbrackets commented 2 years ago

I'm going to close this since the crash is fixed, and the crash was introduced in a recent build.

Currently a lot of things in both the debugger and GE debugger only change when you break, but the memory view only does update on a timer. Maybe it makes sense to do this with the modules list as well, but it would be a separate issue.

-[Unknown]