pthread_kill(thread, 0) returned 0 for every handle other than the caller's before it asked whether the thread was still alive. FreeBSD's _pthread_kill looks the thread up with _thr_find_thread before it checks for signal 0, so the call answers ESRCH for a thread that has ended or was never a thread. The liveness check now runs before the signal 0 shortcut; the calling thread still answers 0.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
The crash and abort reports printed the last 64 traced calls of the whole
process, so a thread that loops on a traced import (a mutex lock/unlock
pair, a profiler marker) pushes the calls of the faulting thread out of the
report. The ring already keeps the last 65536 calls with their thread.
CopyThreadCallTrace_nid_no_patch returns the most recent calls of one
thread from that ring, oldest first, and both reports (Windows crash and
abort, Linux abort) list up to 32 of them for the reporting thread after
the process-wide list.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The branch declared 222 PS5 3.20 system exports across 11 libraries.
Open PR #8747 declares 83 of the same exports (libSceNpParty 25,
libSceNpTrophy2 23, libSceHttp2 18, libSceAppContent 17), so drop them
to avoid duplication. 139 exports remain across 7 libraries.
Some distributed dumps were repacked with ampr_emu's pack tool: the packed
files are removed from app0 and stored in ampr_assets-*.pak (AMPRPAK4, raw
LZ4 blocks) that only ampr_emu reads. A Unity title converted from such a
dump stops at start-up because Media/Resources/unity default resources is
missing. Describe how to restore the files with ampr_pack.py unpack.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Keep main's WaitOnKey helpers from #8304 and build the measured
sceKernelSyncOnAddressWait results on them: the wait's ready check now
records whether the value differed, and Wake returns the waiters woken.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Review on #8302: the ACB workload calls and the DCB stream-inactive call
throw again for a registered stream until a title is shown stopping on
them (as #3789 did for the DCB calls, and as #4709 kept). The debt
entry keeps the firmware's packet layout as the record of what is
missing.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
Guest module discovery skipped the input executable and the
--executable check rejected an executable converted twice through
std::filesystem::equivalent, which MinGW reports as false for hard links
whose names give different permissions, such as .bin and .exe. Move the
GetFileInformationByHandle comparison to Io::SameFile and use it for
these checks and for SameOutputFile.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Slots 1-5 are now written by sceAgcSetStaticBuffer and the
sceAgcSetStaticQword family, so staying zero until a title writes them
is the modelled console behaviour.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK