Skip to main content
New Participant
Oct 26, 2026 3:56 PM UTC

Link installer "Restart your computer" loop — root cause: Windows usernames containing "(" crash the installer's log sanitiser (fix found)

Summary

Meta Horizon Link Setup (_Setup v1.16.0.0, OculusDriverInstaller/ODI v1.21.5.0) fails and rolls back on every attempt when the Windows account name contains a regex metacharacter such as "(". My account name has this form: Daniel(…. The drivers actually install fine, but the installer's analytics/telemetry code then crashes, oculus-driver.exe exits with an unhandled .NET exception, and Setup rolls the whole install back. I confirmed the cause by decompiling the installer and testing a patched build, which installed successfully.

Environment

Windows 11, Quest 3, domain-joined work account whose short logon name contains "(".

Symptom

"Restart your computer. Sorry, we encountered an error during installation…" every time. Restarting, clean reinstalls, antivirus off, unplugging the second monitor and fresh installer downloads made no difference.

What the logs show (%LOCALAPPDATA%\Oculus)

  • OculusDriverInstaller_*.log: every driver installs and reports "Install Complete: Success", then [Fatal] Exception thrown that wasn't caught locally: One or more errors occurred. (AggregateException) at OculusDriverInstaller.EntryPoint.Run
  • OculusSetup.log: Process …\oculus-drivers\oculus-driver.exe exited with code -532462766 (failure) (0xE0434352, unhandled CLR exception) → Install 'Dawn.Setup.InstallDriversStep' failed. → Rolling back installation.
  • At exit: System.ArgumentException: parsing "\bDaniel(…\b" - Not enough )'s. at Daybreak.Util.Extensions.RecursivelySanitise … at Daybreak.Net.MarauderClient.CreateMarauderPacket

Root cause (from decompiling Daybreak.dll)

Daybreak.Net.Analytics.BuildSubstitutions() adds Environment.UserName as a key to be scrubbed from telemetry. Daybreak.Util.Extensions.RecursivelySanitise then does:

text = Regex.Replace(text, "\\b" + substitution.Key + "\\b", substitution.Value);

The key isn't passed through Regex.Escape, so a username with "(" produces an invalid pattern and throws. MarauderClient.Runloop only catches OperationCanceledException, so the exception faults the analytics task, which surfaces when the process waits on it at shutdown. In oculus-driver.exe that turns a successful driver install into a crash exit code, and Setup treats that as failure and rolls back.

Because the name comes from Environment.UserName (the Win32 API), overriding USERNAME/USERPROFILE/TEMP/LOCALAPPDATA doesn't help. I tried it, and the logs show the same crash.

Also logged, but caught (not the cause): BuildSubstitutions throws InvalidCastException: GroupPrincipal → UserPrincipal from UserPrincipal.Current on a domain-joined account.

Suggested fix for Meta

  1. Regex.Escape(substitution.Key) in RecursivelySanitise, or a plain string.Replace.
  2. Never let telemetry exceptions escape: catch inside MarauderClient.Tick/Runloop, so analytics can't fail an install.
  3. Reconsider rolling back an entire install because the driver tool's exit code is non-zero after its own log says "Install Complete: Success".

How I got it installed (using Claude)

I had Claude (Anthropic's AI assistant) read the installer logs on my PC. When workarounds failed, it decompiled the installer with ILSpy's decompiler engine and found the bug above. It then made a same-size byte patch to my local copy of Setup.exe:

  1. In the embedded Daybreak.dll, RecursivelySanitise now does a literal text.Replace(key, value) instead of Regex.Replace (username scrubbing still works).
  2. In Dawn.Mixins.ExecuteProcessBool (used only by the driver step at install time), the catch now returns true, so the driver tool's crash on exit no longer triggers a rollback.

The downloaded packages and drivers were untouched and still go through Meta's signature checks. With the patched setup, every step succeeded and Setup exited with code 0. Since the patched setup loses Meta's code signature I'm not sharing it, but the information above should let Meta fix this quickly. Happy to provide full logs.

    1 reply

    steve40
    Honored Contributor
    Oct 26, 2026 4:14 PM UTC

    The bug where having unusual characters in your Windows username (and thus your user path) causes Link to fail to install has been around for years.