Every libSceSsl context started without trust anchors, so a libSceHttp2
request without a verify callback failed the known-CA check. RetroArch's
updater, PS5LM and Porpoise all use version-3 templates over https://
without one. libSceSsl now parses /<sandbox word>/common/cert/CA_LIST.cer,
served by libkernel from the host trust store, once per process into its
own pool, and SslTrustSystemRoots_nid_no_patch links those roots after
the context's own authorities for one connection. The HTTP/2 transport
calls it after creating each connection.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
test_library_directory_values_can_look_like_modes passed -L -E as mode
flags, so check_modes took the -E for a preprocessing mode and dropped -c.
Its control commands linked an executable with each compiler, which on
the Windows runner goes through link.exe; the case took about twice as
long as its -I -E counterpart and timed out in 6 Windows CI jobs. The
-L -E pair now goes through configure like the include directory case,
so the control only compiles. The command check_compile checks is the
same, since it drops -c.
test_response_options_compile_without_changing_build_outputs ran 30
check_compile invocations in one case. Its six response files are now
checked by three cases of two.
Run 40579197008 (main 771d8b5bf7) failed guest_posix_spawn. Under load the child
of CheckStoppedChild exits right after SIGCONT, so waitpid(WCONTINUED) reports the
exit instead of 0x13 (reproduced with 24 CPU spinners via ctest --repeat). The
child now sleeps 2 s after the stop.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Both capture files were named with an unseeded std::rand(), which returns the same value in every process, so two concurrent runs sharing a temporary directory truncated and removed each other's stderr and stdout captures.
agc_driver_pipelined_metadata_pass went straight to the driver, so a
missing Vulkan driver failed it with vkCreateInstance result -9 instead
of returning 77. It now probes the device with OpenVulkanTestDevice()
first, as the other pipelined tests do.
agc_submit_progress and agc_submit_progress_no_timeline set
ANYPS5_REQUIRE_VULKAN=1 in their own ctest environment, which turned
the test's own skip into a failure on every host. CI sets the variable
for the whole Linux job, so a missing device still fails there.
OpenVulkanTestDevice() skipped on any exception from the VulkanDevice
constructor, so a construction failure on a host that has a device was
reported as a skip. The constructor now throws VulkanUnavailable when
the loader cannot be loaded, vkCreateInstance returns
VK_ERROR_INCOMPATIBLE_DRIVER, or no Vulkan 1.1 graphics and compute
device exists, and the helper skips only on that. Any other failure,
including ANYPS5_GPU naming no device, fails the test.
agc_driver_vulkan_test_device covers the healthy device, the required
device and a construction failure with a device present;
agc_driver_vulkan_test_device_no_driver hides the ICD and covers the
skip and the ANYPS5_REQUIRE_VULKAN=1 failure.
oracle_hip.py tries amdhip64_7, amdhip64_6 and amdhip64, and amd_comgr_3,
amd_comgr_2 and amd_comgr, newest first; the guide named only the older
ones.
ShaderMemory.cpp and Draw.cpp enable the draw pipeline whenever the
variable exists, unlike APS5_PIPELINE_DISPATCH, which treats an empty
value and 0 as off.
libSceSystemService reads the variable when it prepares a launch, and an
empty value counts as unset; GuestSystemExit.cpp only checks that it is
not defined.
FrameRecorder reads the variable with a fallback of 0 and raises it to 1
when it picks the boundary, so the effect of the default is the same as
1 but the default is 0; a value that is not a number throws.
ReportAllThreads captures at most 128 other threads and prints how many
further threads were left out; the report did not list every thread of a
larger process.
GuestModuleBuilder keeps each module's directory relative to the module
parent under app0, as the Linux and Windows outputs do, so modules from
sce_modules, prx or a --module-dir do not land in app0/sce_module.
HostVolumes records ReadOnly from the mount options (or the Windows
read-only volume flag) and the export reports it, so passthrough is not
always writable.
APS5_NO_PERF_FRONTEND_PAIR and APS5_NO_PERF_LAYOUT_PAIR are read by the
shader recompiler itself, which the shader disk cache lists among its
output-neutral switches, not only by the shader-memory test the rows
pointed at.
TextureFormat.cpp compares the value with "1" and "copy" and ignores
anything else, so setting it to an arbitrary value does not behave like
a presence switch.
StoreAtLabelRequested returns true for "1" and throws for any other
value (expected 1), like its sibling APS5_STORE_AT_FLIP, so it is not a
presence switch.