Skip to content

Games freeze on loading: reads from the shared folder fail with error 999 #91

Closed

Description

@HongyuS

Description

I run games from the VMPal shared folder (Z:, VirtIO-FS). Genshin Impact 7.1 freezes on the loading screen after I click to enter the world, and once it crashed with 0xC0000005. Zenless Zone Zero 3.3 freezes earlier, while it is still loading at startup.

Both games write read errors to their logs, and the errors point at files on the shared folder.

Genshin Impact:

[2026-10-26 18:16:05.626] [FileReadCache] ReadFile failed with error: 999 fileId=-2147483637 file='...\Persistent\AssetBundles\blocks\00\25539185.blk' offset=22108764 size=63570
[2026-10-26 18:21:53.824] Shader LoadGpuProgramFromData failed! miHoYo/Avatar/Character_SRP_Frozen_General 248

Zenless Zone Zero:

Unable to read header from archive file: ...\StreamingAssets\Blocks\607492886.blk
Failed to read data for the AssetBundle '607492886.blk'.

To check whether the files or the share are the problem, I ran a small stress test inside the VM:

  • 8 threads
  • each thread opens one of six .blk files from the game folder
  • each read is a random 4–64 KB block at a 4 KB-aligned offset
  • about 70,000 reads in 10 seconds

Result: 325–345 reads fail with Win32 error 999, "Error performing inpage operation" (HRESULT 0x800703E7). The failures return immediately; they are not timeouts. The same test on C: with the same files: 0 failures in 660,040 reads.

Test on Z: Reads Failures
1 thread 19,740 0
2 threads 33,020 2 (0.01%)
4 threads 55,654 19 (0.03%)
8 threads ~70,000 325–345 (0.47–0.50%)
16 threads 61,922 311 (0.50%)
8 threads, one single file 45,440 0
8 threads on C: (same files) 660,040 0

So it is not just "many reads at once", it is "many files open at once": 8 threads on one file never failed, 8 threads on six files failed about 0.5% of the time.

The files are fine: the same .blk reads correctly when I open it alone, and the ZZZ file has a valid mhy1 header. The GPU is fine too: the D3D11 device is created (feature level 11.1), and there are no TDR/4101 events or LiveKernelReports.

Steps to Reproduce

  1. Windows 11 ARM VM with a macOS shared folder mounted as Z:.
  2. Install Genshin Impact 7.1 (or Zenless Zone Zero 3.3) on Z:.
  3. Start the game, log in, and enter the world.
  4. Genshin freezes on the loading screen; ZZZ freezes during startup loading.

Faster repro without games:

  1. Put six large files (for example 50–200 MB each) on Z:.
  2. Run 8 threads; each thread opens one file and reads a random 64 KB block in a loop.
  3. About 0.5% of the reads fail with error 999. On C: the same test has 0 failures.

Current Behavior

Games hang on loading and sometimes crash. The logs show read failures on Z: (error 999) and, for ZZZ, a failed AssetBundle header read. The read test shows the share returns error 999 for a small part of concurrent reads, and the error rate grows with the number of files open at the same time (0% at 1 thread, about 0.5% at 8+ threads).

Expected Behavior

Files on the shared folder should read reliably, like on a local disk. The games should load and run normally. Copying them to C: works around it, but the shared folder should be usable for games.

Environment

  • App version: VMPal 0.100 (100)
  • Mac: MacBook Pro 16-inch (Nov 2024), Apple M4 Max, 128 GB
  • macOS version: 27.0.1 (26A434)
  • VM's OS: Windows 11 Pro, build 28000 (ARM64)

Log

Genshin Impact crashed with YuanShen.exe caused an Access Violation (0xc0000005) at 2026-10-26 18:21:59, right after the read errors. The ZZZ log excerpts are above.

The paths in the game logs go through a junction on C: (C:\Users\...\VMPalGames\...) that points to Z:\Games. I tested both the junction path and the direct Z: path, and the error rate is the same (~0.5%), so the junction is not involved.

Guest software: VirtIO-FS driver 100.104.104.30400, WinFsp SxS driver 20261026T074934Z, virtiofs.exe from VMPal Tools. The VM itself did not crash or stop, so there is no VM log. I can attach the full game logs and the test script if you want them.


My native language is Chinese and my English is not good, so this report was written with the help of DeepSeek V4.1 Flash.

Activity

  1. HongyuS commented on Oct 26, 2026

    @HongyuS
    Author

    I asked AI to reproduce this issue, and capture some logs.

    Here are some files collected (logs from the game, together with a simple powershell script to reproduce the bug)

    Hope these help.

    VMPal-issue2-logs.zip

  2. sonswift commented on Oct 26, 2026

    @sonswift
    Collaborator

    Thanks for the report! We'll look into it and get back to you soon.

  3. huyphams commented on Oct 26, 2026

    @huyphams
    Contributor

    We've fixed the issue @HongyuS please try the new build 102 and see how it goes, please let me know if you're still seeing the issue.

  4. HongyuS commented on Oct 27, 2026

    @HongyuS
    Author

    @huyphams It's fixed, no more failures return immediately. But the game still stuck on the loading screen, because the long waiting would cause timeout issue when the game tries to handshake with its online server. The poor concurrent reading performance of VirtIO-FS is still a problem.

  5. huyphams commented on Oct 27, 2026

    @huyphams
    Contributor

    @HongyuS Thanks for testing! We just released build 104, which makes reading from the shared folder much faster. Please try again and see how it goes, and let me know if you're still seeing the issue.

  6. HongyuS commented on Oct 27, 2026

    @HongyuS
    Author

    @huyphams new observations:

    Sequencial reading can reach up to 1GB/s on the shared folder via VirtIO-FS, which is fast enough for most use cases. However, opening files on the share is still ~300x slower than on the local disk (e.g. C: inside the VM), and that is probably what makes games stall while loading.

    Same 2000 files, same relative paths on Z: and C:, 3 runs per configuration:

    threads Z: opens/s Z: p50 C: opens/s C: p50
    1 139 6.8 ms 47,615 19 us
    8 531 13.5 ms 149,297 34 us
    32 538 55.6 ms 87,677 48 us

    Two things:

    1. Z: saturates at roughly 500 opens/s no matter how many threads used.
    2. More threads make a single open slower, not faster (p50 6.8 ms at 1 thread -> 55.6 ms at 32), so it looks like one serialized round trip per open rather than a bandwidth limit. Sequential reads, random 64 KB reads and mmap page faults are all within 20% of C:.

    Holding 1024 files open at the same time: 6.3 s on Z: vs 28 ms on C:. Closing them: 40 ms vs 8 ms.

    Impact: Genshin Impact opens several thousand bundles when entering the world. From Z: the client sits at about 0.2 fps, never reaches the scene load (OnBeginLoadScene) and is dropped by the server every ~2.5 min. The same install on C: loads the scene in 17 seconds.

    Here are some very basic tests, hope can be helpful.

    fileops-bench.zip

  7. huyphams commented on Oct 28, 2026

    @huyphams
    Contributor

    @HongyuS Thanks for the detailed report! We just released build 107, which makes opening files on the shared folder much faster. Please try again and see how it goes, and let me know if you’re still seeing the issue.

  8. HongyuS commented on Oct 28, 2026

    @HongyuS
    Author

    @huyphams Great works! 10x speed!

    I can finally reach the game's loading screen. (To pass the loading screen and actually get into the game, there will be a separate issue coming soooooon.)

  9. huyphams commented on Oct 28, 2026

    @huyphams
    Contributor

    Thank you, @HongyuS. I know we can play the game now, but its performance is still somewhat below the accepted level. I’m improving it so we can enjoy Windows games on macOS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions