SubtitleEdit/subtitleedit · error · PlatformNotSupportedException

Operation is not supported on this platform.

Error message

Operation is not supported on this platform.

What it means

PlatformNotSupportedException with no message, thrown by OmniVoiceDownloadService.GetUrl after the Windows/Mac/Linux branches all fail to match. It signals that the runtime OS is none of the recognized ones (or the OS detection returned something unexpected).

Source

Thrown at src/ui/Logic/Download/OmniVoiceDownloadService.cs:140

                WindowsVariantCuda => WindowsCudaUrl,
                WindowsVariantVulkan => WindowsVulkanUrl,
                _ => WindowsCpuUrl,
            };
        }

        if (OperatingSystem.IsMacOS())
        {
            return MacOsUrl;
        }

        if (OperatingSystem.IsLinux())
        {
            return RuntimeInformation.ProcessArchitecture == Architecture.Arm64
                ? LinuxArm64Url
                : LinuxX64Url;
        }

        throw new PlatformNotSupportedException();
    }
}

View on GitHub (pinned to 17a9f07487)

Solutions

  1. Confirm the host OS is one of Windows, macOS, or Linux (x64/arm64).
  2. Upgrade the runtime so OperatingSystem detection is reliable.
  3. If a legitimate platform is being rejected, extend GetUrl with a branch for it.
  4. File a bug if detection fails on a supported OS.

Example fix

// before
throw new PlatformNotSupportedException();

// after - name the platform so the user can act on it
throw new PlatformNotSupportedException(
    $"OmniVoice engine has no build for this platform " +
    $"(OS={RuntimeInformation.OSDescription}, ARCH={RuntimeInformation.ProcessArchitecture}).");
Defensive patterns

Strategy: validation

Validate before calling

if (!OperatingSystem.IsWindows() && !OperatingSystem.IsMacOS() && !OperatingSystem.IsLinux())
{
    // surface a clear message instead of letting GetUrl throw bare
    throw new InvalidOperationException($"Unsupported OS: {RuntimeInformation.OSDescription}");
}

Try / catch

try { url = service.GetUrl(variant); }
catch (PlatformNotSupportedException) { /* show OS/ARCH not supported message, hide the engine */ }

Prevention

When it happens

Trigger: GetUrl is reached only when OperatingSystem.IsWindows() is false, IsMacOS() is false, and IsLinux() is false - effectively only on an exotic/unsupported OS (BSD, Solaris, etc.) or a sandboxed runtime where OS detection is unreliable.

Common situations: Running under an unusual OS, an older runtime where OS guards behave differently, or in a constrained container that misreports the platform. In practice on Windows/Mac/Linux this path is unreachable, so hitting it usually means a detection bug or an unsupported deployment target.

Related errors


AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13). Data as JSON: /api/errors/0bf9cabe009d5bc2. Report an issue: GitHub.