The hosted ubuntu-latest runners oversleep PreciseSleepUs(50), so precise_wait
fails there and, with --stop-on-failure, every tag-push Release stops before
it packages anything. The Build workflow still runs the test on every pull
request; only the Linux step of release.yml excludes it.
Invocations of one dispatch that fault through different guards wrote
the guard word with plain stores, which the Vulkan memory model treats
as a data race. The write is now a relaxed device-scope OpAtomicStore,
so one of the records is reported whole. The guarded-pointer test now
also has two workgroups fault through a null and an unmapped pointer.
MarcZX100 pointed out the race.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A ReadConst of a guarded flattened-SRT slot called record_bda_fault
with the poison record's pc and address when the slot's flag was set.
NVIDIA's compiler pays for every call site in a large function:
Crimson Desert's 1,916,980-word compute module has 2,769 guarded
reads, and its pipeline took 99 s and 5.9 GiB to create.
The read now stores the record's flattened-SRT word, tagged with its
stage, to a new fault-buffer word after the written-page list, and
stops as before. The host reads the pc and address from that stage's
flattened SRT and raises the same Unmapped fault. Poisoned and clean
captures still share one variant, specialization and pipeline, and
the existing words keep their offsets, so cached modules from before
still report through record_bda_fault.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
sceSystemServiceShowDisplaySafeAreaSettings returns success without
showing anything, so check the result through the existing guest test.
AI-assisted: yes
The debt entries only had the four index sections before; use Unknown
function info for the imports that fail a title to load and for the
signatures Orbital or the aerolib NID list do not give. Note that
sceSystemServiceShowDisplaySafeAreaSettings takes its (void) signature
from the sibling sceSystemServiceShowControllerSettings, not a reference.
AI-assisted: yes
Register a guest test for each library and build it from the library's
CMakeLists.txt, so the two libraries are built and registered like the
other libraries that ship a CMakeLists.txt. The tests call every export
and require the NotImplemented_nid_no_patch throw, so none of them can
return a made-up success or write the caller's buffers.
AI-assisted: yes
SceCamera, SceDepth2, SceSulpha and SceAudiodecCpuHevag were declared
without parameters because no reference gives their signatures, and the
HEVAG stub exported an invented sceAudiodecCpuHevagUnimplemented symbol
that matches no real export. SceAudiodecCpu overlaps #6847. Only the
libraries whose real exports and signatures are known stay.
AI-assisted: yes
Add boilerplate stubs for libSceAt9Enc, libSceAudiodecCpu, libSceAudiodecCpuHevag,
libSceM4aacEnc, libSceSulpha, libSceCamera, and libSceDepth2, each exporting its
known NIDs via NotImplemented_nid_no_patch. Include debt documentation with
sysmodule IDs and (where available) orbital-derived signatures.
Add sceSystemServiceShowDisplaySafeAreaSettings as a silent success stub and
document it under Silent stubs.
AI-assisted: yes
windows_named_imports, windows_trace_imports, windows_guest_weak_imports and
guest_module_identity run converted programs that stop on a missing import,
then remove their temporary directory. Windows keeps the modules of such an
exited process open for a short time after the process handle is signaled, so
under parallel ctest the removal fails with PermissionError on a .prx that
program loaded: with Defender real-time protection off, 3 or 4 of these tests
failed in each of three runs of ctest --repeat until-fail:10 -j 16 over the 69
tests that run converted programs.
Add fixture_directory to guest_import_fixtures, a temporary directory whose
removal retries on PermissionError for at most 10 s, and use it in the four
tests. Their checks are unchanged.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
fopen and freopen of a directory in a write mode failed with EACCES on
Windows, the host's answer. FreeBSD 11.4 fopen opens the path with open(2),
which fails a directory opened for writing with EISDIR (kern_openat, vn_open_cred).
A failed write-mode open of a directory now reports EISDIR.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
listen on a connected stream socket failed with EISCONN, the Winsock error.
FreeBSD 11.4 solisten_proto_check fails a socket that is connected,
connecting or disconnecting with EINVAL. The guest listen now reports EINVAL
for the host's EISCONN, and the connect-listening test checks it.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>