Commit Graph
2 Commits
Author SHA1 Message Date
Kartik Vats 745c173319 test(libc): give each app archive test its own root directory
EnterFreshRoot named the root from one steady_clock reading and reused
an existing directory. Under Rosetta 2, processes started together can
read the same value, so parallel guest_app_archive_* runs shared a root
and overwrote each other's app0.zar. The root is now claimed with
create_directory and renamed until the claim succeeds.
2026-10-22 10:40:11 -04:00
Alexej Szpevák b71434d9b7 feat(libc): read app0.zar beside app0 and refuse archive-only paths elsewhere
A ZArchive named app0.zar beside app0/ is a read-only layer under it. libc opens it at the first path resolution, looks paths missing from app0/ up case-insensitively, reads files across compressed blocks and keeps the archived descriptor table with shared positions.

Resolving an archive-only path through a call that does not read the archive throws instead of failing with ENOENT, as do opendir of a directory present in both places, fdopen of an archived descriptor and chdir into the archive. A path through .. in an archive-only directory resolves.
2026-10-16 20:03:26 +02:00