Commit Graph
12196 Commits
Author SHA1 Message Date
husari.orozco 8c734ce7b6 fix(libSceAudio3d): clamp pan, guard null sources and widen mixer coverage 2026-10-20 22:06:52 +02:00
husari.orozco 670d8bfda5 fix(libSceAudio3d): apply the pan balance to stereo sources 2026-10-20 22:06:51 +02:00
husari.orozco 1dc045b632 feat(libSceAudio3d): add a pure mixer with gain and stereo pan 2026-10-20 22:06:51 +02:00
cadenasynysterandClaude Sonnet 5.5 97a2dcb27f fix(libkernel): report ELOOP when opening below a Windows symbolic link loop
A path below a self-referencing symbolic link returned ENOTDIR on Windows; FreeBSD returns ELOOP. A failed native open now uses the loop check that sceKernelStat uses.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01GtXavMkgCTCdmRpweviHcQ
2026-10-20 22:06:36 +02:00
Dean 9a97ac784d Merge pull request #8591 from xXPBSXx/fix/getdirentries-basep-windows
fix(libkernel): report the starting entry index in getdirentries basep on Windows
2026-10-21 09:04:26 +13:00
Dean 5e113d91f9 Merge pull request #8414 from xXPBSXx/fix/raise-signal-zero
fix(libkernel): let raise(0) check the calling thread and return 0
2026-10-21 09:03:51 +13:00
Dean 29e4c46b4d Merge pull request #7417 from IshmamDC217/feat/relinker-trace-imports-linux
feat(relinker): support --trace-imports for Linux output
2026-10-21 09:03:29 +13:00
Evgeniy Kazarin 7898b5bd3a fix(libc): avoid repeated resident write faults 2026-10-21 03:55:51 +08:00
Evgeniy Kazarin de04b642b3 fix(agc): keep resident imports writable during validation 2026-10-21 03:53:50 +08:00
Evgeniy Kazarin a627328cfa perf(libc): skip write-watch queries for proven clean resident ranges 2026-10-21 03:53:50 +08:00
xXPBSXxandClaude Sonnet 5.5 c98377710f test(libkernel): rename the variant-name decoys so they still compete for the stem
With the stem cut at the last extension, the decoy guest_module_fixture.sprx.elf.GUEST.PRX
and the dangling link guest_module_fixture.zprx.elf.GUEST.PRX had the stems
guest_module_fixture.sprx and guest_module_fixture.zprx, so they no longer
matched the request and the shortest-name rule was not exercised. They are now
guest_module_fixture.sprx.GUEST.PRX and guest_module_fixture.zprx.GUEST.PRX,
which have the request's stem and are longer than the real module copy.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 21:53:32 +02:00
MarcZX10 4f0e4ba8e7 fix(agc): return zero for measured color compares 2026-10-20 19:53:00 +00:00
MarcZX10 aec6bba8c4 test(agc): cover zero result for 16-bit color compares 2026-10-20 19:53:00 +00:00
Evgeniy Kazarin 9d5f8326bf perf(libc): collect resident writes directly into the output buffer 2026-10-21 03:52:09 +08:00
Ondra97 f29c507668 test(net): retain native close results in blocking regression 2026-10-20 21:51:37 +02:00
Ondra97 1b182e7fb2 fix(net): keep MSG_DONTWAIT transfers nonblocking on Windows 2026-10-20 21:47:08 +02:00
billythemenace2andClaude Opus 5.5 681926e085 fix(libkernel): keep waiting while a raise target is inside a system call
Since #8512 a raise redirects a target running host code once 50 ms have
passed since the raise began. A target inside a system call that is not a
wait, such as the NtWriteFile of an fwrite that holds its stream lock, can
stay there longer; the redirect then ran the handler with the lock held.
SONIC SUPERSTARS froze at frame 67 again on main this way, with its GC
raise delivered at ntdll!ZwWriteFile+20.

A target stopped right after a syscall instruction in ntdll now restarts
the 50 ms host-code window, so the raise keeps sampling until the call
returns and the target leaves host code, bounded by the 1 s retry limit.
guest_raise_in_system_call holds a writer in NtWriteFile on a slowly
drained pipe; it times out on main and passes with this change.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-20 20:35:36 +01:00
Dean 2185dbf92e Merge pull request #5656 from Raghav314/perf/agc-data-hit-user-word-mask
perf(agc): data-only draw hits compare only the user words a stage reads
2026-10-21 08:32:28 +13:00
cadenasynysterandClaude Sonnet 5.5 a8b6d1c411 feat(libc): implement _Thrd_detach
Animal Well (PPSA22520) imports _Thrd_detach (L7f7zYwBvZA) from libc.prx and nothing exports it, so the Windows loader stops at startup. Register libkernel's pthread_detach with libc like pthread_create and pthread_join, and return _Thrd_error (4) when it fails.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

Claude-Session: https://claude.ai/code/session_01GtXavMkgCTCdmRpweviHcQ
2026-10-20 21:31:16 +02:00
dantdmdarealguy 83a1c326b4 fix(libc): link the thread-name test against libc for its personality routine 2026-10-20 14:27:23 -05:00
Dean c70524a3db Merge pull request #8596 from ebarr24/ws/libkernel-kevent-note-lowat-above-1-on-e
fix(libkernel): fire EVFILT_WRITE on a socket once free send space reaches NOTE_LOWAT
2026-10-21 08:27:05 +13:00
xXPBSXxandClaude Sonnet 5.5 62e6ba7481 fix(libkernel): clamp long nanosleep requests like FreeBSD instead of wrapping them
kern_clock_nanosleep limits the sleep to INT32_MAX / 2 seconds and sleeps
for that long (sys/kern/kern_time.c:543-547). The guest multiplied tv_sec
by 1e9 in 64 bits, so a request of 18446744074 seconds or more wrapped to a
short sleep: nanosleep with tv_sec = INT64_MAX returned after about 0.1 s.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 21:24:54 +02:00
billythemenace2andClaude Opus 5.5 e5b66f2ddf fix(libkernel): retry a failed thread context read during a raise
GetThreadContext can fail on a target that was just suspended. A raise
used to throw "cannot read the target thread context" at the first
failure; it now resumes the target and tries again, within the existing
1 s retry limit, before throwing. SONIC SUPERSTARS hit the throw once in
three runs. guest_raise_in_host_code prints the longest single raise.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-20 20:12:28 +01:00
milescovielloandClaude Opus 5.5 0ff3d32a3d fix(libSceNgs2): count a system's renders to refuse a destroy from a nested render
A render recorded only the innermost system it was rendering, so a
destroy called from the callback of a system rendered inside another
system's callback was let through, and the outer render then used the
destroyed rack. Each system now counts the renders it is in. A destroy
first waits until no other thread holds the exclusive state, so a
non-zero count can only come from the calling thread's own stack.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 19:07:53 +00:00
hamb3r 50a4d5bfb3 chore(libc): merge main into feat/libc-backtrace-windows 2026-10-20 22:04:09 +03:00
Dean 40b4972295 Merge pull request #8248 from YossiYad/feat/ult-sync-objects
feat(libSceUlt): implement the reader-writer lock, sceUltMutexTryLock, the option initializers and ulthread self, yield and exit
2026-10-21 07:57:41 +13:00
Dean a9cfea22f7 Merge pull request #8594 from mantavisual/fix/libkernel-utimes-rejected-keeps-atime
fix(libkernel): leave a file's times untouched when Windows utimes refuses them
2026-10-21 07:56:52 +13:00
Dean b7596be595 Merge pull request #6658 from nicolasabosch/perf/gpu-wake-sleeps
perf(libkernel): end short sleeps when the GPU or a flip completes
2026-10-21 07:55:28 +13:00
bfd1d5b568 fix(libc): compare the relinked module stem without the last extension only
The stem of a request and of a relinked module name was cut at the first dot,
so a request for Engine.Render.prx that missed could load Engine.Core.prx.guest.prx.
Only the last extension is removed now, as the review of the stem lookup asked,
and the variant-names test requests a dotted name that must not load the sibling
fixture module.

Co-Authored-By: lendinglibrary <[email protected]>
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 20:50:03 +02:00
Adrià FranchandClaude Sonnet 5.5 c420b8d53d fix(main): skip the parent watch of a vnode already deleted at registration
Culprit: none in 892a4f1328..b85d972f42; race in the Windows vnode watch (50b06110b guarded only the loop). Run 39473930499, guest_kqueue: a watched file deleted before registration is snapshotted under $Extend\$Deleted, WatchParent got ERROR_ACCESS_DENIED and threw.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 20:49:45 +02:00
lendinglibrary a3c4cdcdbb fix(libc): find a relinked module by stem when the exact name misses
A title asks for a module by its console name and the relinker names the
converted module after the ELF it was built from: Unity IL2CPP titles load
Media/Modules/<name>.prx and Media/Plugins/<name>.prx while the dump holds
<name>.elf.guest.prx, so sceKernelLoadStartModule failed with 0x80020002
and the title stopped 3 s after start. After the exact and the
case-insensitive <name>.guest.prx lookups miss, take the sibling whose stem
matches the request and ends with .guest.prx, shortest name first.
2026-10-20 20:42:59 +02:00
MarcZX10 636a609902 test(libkernel): cover socket fcntl descriptor limits 2026-10-20 18:39:18 +00:00
altuuxandAntigravity a685523018 fix(libkernel_sys): fail readlink through a regular file with ENOTDIR on Windows
A path whose directory part is a regular file, such as file/child, failed
with ENOENT in readlink and readlinkat on Windows, where FreeBSD 11.4 fails
it with ENOTDIR (vfs_cache_lookup, sys/kern/vfs_cache.c). The not-found
error now checks whether the nearest existing ancestor is not a directory,
as was previously done for chmod, truncate, utimes, rename, remove, chdir,
opendir, and fopen.

Co-Authored-By: Antigravity <[email protected]>
2026-10-20 20:25:13 +02:00
Dean b85d972f42 Merge pull request #7897 from babyhuey/fix/libc-adopt-guest-heap-only-when-replaced
fix(libc): adopt the guest SDK allocator only when the title replaces the heap
2026-10-21 07:20:48 +13:00
Dean 78e398d6d0 Merge pull request #8467 from xXPBSXx/fix/raise-default-ignored-signals
fix(libkernel): let raise and kill return 0 for ignored signals
2026-10-21 07:18:46 +13:00
David 24c5c8ed5f test(relinker): convert a call before zero padding and a misread FS byte for Windows and macOS 2026-10-20 22:17:45 +04:00
David c978e4d4c4 test(relinker): keep falling through calls that end at a boundary or before non-zero bytes 2026-10-20 22:17:44 +04:00
David c139a3faf2 test(relinker): stop at zero padding after direct and indirect calls 2026-10-20 22:17:43 +04:00
David 95db1ab6e6 fix(relinker): stop the control-flow walk at zero padding after a call 2026-10-20 22:17:42 +04:00
Dean 352dbe751a Merge pull request #8583 from Ondra97/codex/fix-pthread-attr-policy
fix(libkernel): report current thread scheduling policy in attributes
2026-10-21 07:14:27 +13:00
Dean 86c1784b90 Merge pull request #8589 from xXPBSXx/fix/scenet-host-errno-table
fix(libSceNet): map every host socket error through the guest errno table
2026-10-21 07:13:22 +13:00
Dean 17e0f6e677 Merge pull request #8599 from javierUDP/fix/interp-outside-code-scan
fix(relinker): keep the interpreter path out of the scanned code
2026-10-21 07:12:32 +13:00
Dean GalvinandZenodeon 779edd3b2d Merge main into stk-resource-performance-pr
Co-authored-by: Zenodeon <[email protected]>
2026-10-21 07:09:19 +13:00
Dean 8727ddb29e Merge pull request #8579 from priyanshrv-netizen/feat/libc-feraise
feat(libc): implement _Feraise
2026-10-21 07:02:45 +13:00
Dean 2ea00aae40 Merge pull request #6436 from LeandroLP23/fix/agc-key-modules-by-gpl-mode
fix(agc): key shader modules by the pipeline library mode
2026-10-21 07:02:24 +13:00
xXPBSXxandClaude Sonnet 5.5 994fb42929 fix(libkernel_sys): check the readlink size before the path
FreeBSD 11.4 kern_readlinkat returns EINVAL for a count above IOSIZE_MAX
before namei looks at the path. readlink and readlinkat checked a NULL or
empty path first, so readlink(NULL, buf, SIZE_MAX) returned EFAULT and
readlink("", buf, SIZE_MAX) returned ENOENT where FreeBSD returns EINVAL.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-20 20:02:22 +02:00
Dean 2cdb06295c Merge pull request #6759 from Zenodeon/write-watch-page-restoration-main
fix(agc): restore write-watch coverage for remapped pages
2026-10-21 07:02:07 +13:00
milescovielloandClaude Opus 5.5 1196cb3823 test(agc): leave the template audit out of the lookup log test
The test builds a set over 1500 textures and expects its first proof on
the fast path. A ShaderResources object stamps its last full walk when it
is constructed, before that build, so when the build and the first proof
take more than the default 1000 ms template audit interval (as under
parallel test load) the audit turns the proof into a full walk and the
test fails. The test now sets APS5_TEMPLATE_AUDIT_MS to 0 unless it is
already set, as the sampled cache budget test pins it, so its checks see
only memory changes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 18:01:55 +00:00
Dean eae6e0162f Merge pull request #8512 from oneandonlydean/fix/7652-host-raise-patience
fix(libkernel): bound the raise wait on host code to 50 ms
2026-10-21 07:00:13 +13:00
javierUDP 2775e72bf0 fix(relinker): trim only an interpreter path at the start of the segment
Trimming the end of any PT_INTERP inside an executable segment dropped
the code in front of one that follows it, so an image without an SCE
block whose interpreter sits after its code lost its entry points. The
trim now applies to an interpreter that starts the segment, and the SCE
path keeps taking any interpreter inside the scanned range, as before.
2026-10-20 14:56:41 -03:00