Repository navigation
fix(libSceSaveData.native): answer sceSaveDataCancel before initialization as measured in a PS5 payload - #11720
Conversation
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed the exact current head 410e7c4c18cb51d174f53317d7834a13dd662cd6, the focused implementation/test/debt update, and the current-main merge preview. The g_initializations check is consistent with the measured pre-initialization results for all four arguments, and the test covers the uninitialized → initialized/still-unimplemented → terminated lifecycle. The debt entry accurately records the unknown initialized console behavior. git diff --check passes and the merge preview is clean.
I did not rerun the Windows test locally; the PR reports two passing runs plus a revert control, and current hosted product build jobs are skipped by path policy.
…ation as measured in a PS5 payload
410e7c4 to
a21f985
Compare
|
Windows run of this head (
AI-assisted: yes (Claude Code). |
|
Rebased onto current |
What
sceSaveDataCancelthrew for every call. Marvel's Wolverine (PPSA03671) imports it fromlibSceSaveData.native.In a payload process on a PS5 (firmware 12.70),
sceSaveDataCancelfrom/system/common/lib/libSceSaveData.native.sprxreturned0x809f0001(SAVE_DATA_ERROR_NOT_INITIALIZED) for the arguments 0, 1, 2 and 0xffffffff before the library was initialized. In an earlier payload run on the same console,libSceSaveData.sprxloaded but did not resolvesceSaveDataCancelby name.This change returns
SAVE_DATA_ERROR_NOT_INITIALIZEDwhile the library is not initialized, using the sameg_initializationscheck as the other save-data calls. Once the library is initialized, the call still throws. In the same payload process,sceSaveDataInitialize3(NULL)never returned a result, so the initialized case was not measured. The debt entry records that gap.Measured log (case lines, payload process, firmware 12.70):
The next call,
sceSaveDataInitialize3(NULL), produced no further output before the runner's 60-second timeout, so it either hung or ended the process.Overlaps: no open PR changes
sceSaveDataCancel. #11697, #11080, #11083, #8285, #8630 and #7780 edit the same files elsewhere.Tested
Windows 11, WinLibs GCC 15.2.0, Release, on
main9cc1a37:guest_savedata_cancelpasses twice. It checks the four measured arguments before initialization, that the call still throws aftersceSaveDataInitialize3, and that it reports not initialized again aftersceSaveDataTerminate.Export.cppfrommain, the test aborts (0xc0000409), because the call throws before initialization.Not tested on Linux, nor with a title.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)