BCUninstaller/Bulk-Crap-Uninstaller · error · IOException

Error while collecting Windows Features. If Windows Update i

Error message

Error while collecting Windows Features. If Windows Update is running wait until it finishes and try again. If the error persists try restarting your computer. In case nothing helps, read the KB957310 article.

What it means

An IOException thrown by WindowsFeatureFactory when the background thread that enumerates Windows Features via WMI/DSIM throws an exception. The factory runs the feature query on a separate thread and joins for up to 40 seconds; if the thread captured an exception (stored in `error`), it is wrapped into this IOException with a message guiding the user to wait for Windows Update, restart, or consult KB957310.

Source

Thrown at source/UninstallTools/Factory/WindowsFeatureFactory.cs:44

            var t = new Thread(() =>
            {
                try
                {
                    results.AddRange(WmiQueries.GetWindowsFeatures()
                        .Where(x => x.Enabled)
                        .Select(WindowsFeatureToUninstallerEntry));
                }
                catch (Exception ex)
                {
                    error = ex;
                }
            });
            t.Start();

            t.Join(TimeSpan.FromSeconds(40));

            if (error != null)
                throw new IOException("Error while collecting Windows Features. If Windows Update is running wait until it finishes and try again. If the error persists try restarting your computer. In case nothing helps, read the KB957310 article.", error);
            if (t.IsAlive)
            {
                //t.Abort();
                throw new TimeoutException("WMI query has hung while collecting Windows Features, try restarting your computer. If the error persists read the KB957310 article.");
            }

            return results;
        }

        private static ApplicationUninstallerEntry WindowsFeatureToUninstallerEntry(WindowsFeatureInfo info)
        {
            var displayName = !string.IsNullOrEmpty(info.DisplayName) ? info.DisplayName : info.FeatureName;

            return new ApplicationUninstallerEntry
            {
                RawDisplayName = displayName,
                Comment = info.Description,
                UninstallString = DismTools.GetDismUninstallString(info.FeatureName, false),

View on GitHub (pinned to 608321de98)

Solutions

  1. Wait for any running Windows Update to finish, then retry.
  2. Restart the computer to clear transient servicing-stack locks.
  3. Run `sfc /scannow` and `DISM /Online /Cleanup-Image /RestoreHealth` to repair the component store.
  4. Ensure the WMI service (winmgmt) is running; restart it if needed.
  5. Consult KB957310 for advanced troubleshooting of the Windows Features tooling.
Defensive patterns

Strategy: try-catch

Validate before calling

// Quick health check: is WMI available before enumerating features?
using (var searcher = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"))
{
    try { searcher.Get().Count.ToString(); } catch { /* WMI unavailable; skip features */ }
}

Try / catch

try { var features = WindowsFeatureFactory.GetFeatures(); }
catch (IOException ex) when (ex.Message.Contains("Error while collecting Windows Features"))
{ /* warn user, optionally retry after WU completes or skip feature list */ }

Prevention

When it happens

Trigger: WMI service (winmgmt) is malfunctioning, the DISM/Features provider is unavailable, Windows Update is actively locking the servicing stack, or the CBS store is corrupt — any of these causes the feature-enumeration API to throw inside the worker thread.

Common situations: Windows Update running in the background; corrupted component store (CBS); WMI service stopped or corrupted; recently failed Windows update leaving the servicing stack busy; group policy restricting WMI access.

Related errors


AI-assisted analysis of BCUninstaller/Bulk-Crap-Uninstaller@608321de98 (2026-08-13). Data as JSON: /api/errors/88281ea94fae6d5e. Report an issue: GitHub.