Commit Graph
26 Commits
Author SHA1 Message Date
Henrik Rydgård e2ab84087e Fix five ways to end up stuck, crashed, or silently degraded
System.cpp stamped BootState::Complete unconditionally after InitGPU(), overwriting
the Failed that InitGPU sets when GPU_Init() fails - after it has already run
CPU_Shutdown(). PSP_InitUpdate then took the success path on a core that no longer
existed, down to a null Memory::base, and the first guest access dereferenced it.
InitGPU now reports failure and both callers honor it. (The libretro path had the
same problem from the other direction: it calls InitGPU after the Failed check.)

HandleAssert called g_assertCancelCallback directly on the IDCANCEL path, without
the null check its own BreakIntoPSPDebugger() helper does - and EmuScreen clears the
callback when a game is unloaded. So any assert after returning to the menu turned
"Cancel: skip and break into PPSSPP debugger" into a null jump, from the one button
whose entire purpose is surviving the assert.

__CheatDoState registered the cheat event type when the savestate had no CwCheat
section, but never scheduled it. CoreTiming::DoState has already swapped in the
state's event queue by then, which doesn't contain one either - so loading an old
savestate silently killed cheats, and the enable/disable polling with them, for the
rest of the session.

Achievements::ChangeUMD set g_isIdentifying and returned without clearing it when
hashing failed, leaving IsBlockingExecution() true forever - EmuScreen stops running
the CPU and the game is frozen until restart. Reachable from a disc swap on any ISO
whose PARAM.SFO or EBOOT.BIN can't be read.

x64Analyzer routed opcode 0x88 into the write path but had no case for it, so it hit
the default, logged from inside the crash handler, and failed. 0x88 is exactly what
the x64 JIT emits for a guest sb, so MemFault could never skip or ignore a bad byte
store the way it can a word one. Handle the 8-bit forms, and drop the 0x8a/0x8b cases
in the read path that the same 0xF0 mask made unreachable. Covered by a new
CheckAnalyze case, which fails without this change.

314 pspautotests pass, all unit tests pass.
2026-08-31 12:27:24 +02:00
Henrik Rydgård 5cffcd34ad Get rid of the confusing old USING_WIN_UI define. Make a more clear system property for headless. 2026-08-16 12:19:41 +02:00
Henrik Rydgård d8c40eefe8 Windows: Use a different window title for debug asserts
Fix bug in FastVec.h
2026-02-05 13:26:20 +01:00
Henrik Rydgård 3e62157487 Fix some assorted static analysis warnings 2025-08-25 10:14:15 +02:00
Henrik Rydgård e4254b9570 Add some small debug counters that can be sent out through the assert message on Android
To enable more understanding of how some crashes could happen.
2025-06-03 12:01:47 +02:00
Henrik Rydgård 4df25788fd UI: Fix focus issue, thanks NABN00B.
Fixes #20217
2025-04-07 13:39:47 +02:00
Henrik Rydgård 1a93d8a1f9 Some work on symbol export, minor cleanups 2025-03-29 14:23:59 +01:00
Henrik Rydgård c906cee1ed Provide a parent HWND to assert messageboxes (assert no longer appears below..) 2025-03-29 11:16:33 +01:00
Henrik Rydgård 5fcf0c6276 Swap the Cancel and No functions in the assert dialog. Plus a function rename and some safety checks. 2025-03-25 00:01:14 +01:00
Henrik Rydgård 24d859f773 Add new utility function to break into the debugger without a popup 2025-03-19 16:13:30 +01:00
Henrik Rydgård d11f8609ea Add an easy way to break into the imdebugger from assert messageboxs ("No") 2025-03-19 14:22:02 +01:00
Henrik Rydgård 3ffff831c7 Refactor LogManager (remove GetInstance()). In headless, add option to log to OutputDebugString on Windows. 2024-12-03 21:39:42 +01:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård 178147b20a Make asserts work better in headless when running tests on Windows 2024-04-16 22:54:48 +02:00
Henrik Rydgård 949f746f96 Add time-elapsed to assert messages
Just a crude thing to easily see if a crash is from just starting a game
or later.
2023-09-23 08:53:59 +02:00
Henrik Rydgård 1cf4e83824 Show thread name in assert messagebox caption on Windows. Minor cleanup 2023-03-15 22:26:58 +01:00
Henrik Rydgård a3252078e6 Reorder the information in assert lines by importance, to avoid the juicy stuff getting cut out 2023-01-02 16:43:01 +01:00
Henrik Rydgård 2ab7222d5b Clear the extra assert info on game exit 2022-12-17 22:17:29 +01:00
Henrik Rydgård 800bc91a8a Supply some extra info in asserts (currently game ID and name).
Google Play Console can now show this along with the assert stacktrace.
2022-12-17 22:14:47 +01:00
Unknown W. Brackets 2479d52202 Global: Reduce includes of common headers.
In many places, string, map, or Common.h were included but not needed.
2022-01-30 16:35:33 -08:00
Unknown W. Brackets e266eb78ad Common: Avoid assert hang in CI. 2022-01-29 18:39:21 -08:00
Unknown W. Brackets 6c013cec96 Common: Print assert failures to stderr. 2022-01-22 00:14:15 -08:00
Unknown W. Brackets f12aa92a00 Common: Cleanup some logging warnings. 2021-04-30 23:31:54 -07:00
Henrik Rydgård ff8148dd92 Move native/util, native/data and native/i18 to Common/Data.
Also move colorutil.cpp/h

linking build fix experiment

Delete a bunch of unused CMakeLists.txt files

CMakeLists.txt linking fix

Don't include NativeApp.h from any headers.

Android.mk buildfix

Half of the UWP fix

Buildfix

Minor project file cleanup

Buildfixes

Guess what? More buildfixes!
2020-10-04 07:28:29 +02:00
Henrik Rydgård 0bf6bd9175 More Log.h cleanup. 2020-08-16 14:48:54 +02:00
Henrik Rydgård 9561a4f80a Move MsgHandler into Log.cpp/h 2020-08-16 14:48:54 +02:00