| Previous | Next |
| QPARSE_E_INVALID_RANKMETHOD | FDAEMON_E_FATALERROR |
FDAEMON_E_LOWRESOURCE
Filtering stopped because a required resource is low
FDAEMON_E_LOWRESOURCE is the failure HRESULT 0x80041681 (-2147215743 signed; 2147751553 unsigned). Its severity bit is 1, facility is 4 (FACILITY_ITF), and code is 0x1681. AllStat describes it as “The system is running out of one of more resources needed for filtering, usually memory.”
Legacy API stage
This result belongs to legacy Windows content indexing and is returned while loading a filter handler and extracting text or properties from queued documents. The exact condition is: memory, commit, handles, address space or another filtering resource falls below the daemon safety threshold. This stage matters because converting the result to a generic COM failure removes the information needed to choose the owner and retry policy.
This value belongs to the legacy filter daemon and content-indexing pipeline. It identifies failure while extracting or committing indexed content, so query syntax changes do not repair it. Preserve the document, filter handler and catalog generation that owned the work item. Current IFilter documentation clarifies handler extraction contracts, while the daemon HRESULT remains tied to the legacy content-indexing pipeline and its catalog generation.
Why it appears
- changes in filter host working set and commit between validation and execution can reproduce the result even when the user-visible input looks unchanged.
- Retrying this result with the same handle count leaves the decisive contract violation intact.
- This result can appear when document size and type disagrees with the state expected while loading a filter handler and extracting text or properties from queued documents.
- a stale or transformed filter CLSID/version can make the component observe that memory, commit, handles, address space or another filtering resource falls below the daemon safety threshold.
- an incomplete queue depth and retry rate hides the distinction needed to separate this HRESULT from a later catalog or service failure.
The strongest hypothesis for it must account for the operation—loading a filter handler and extracting text or properties from queued documents—and the documented condition. An unindexed document is only the outcome; it does not identify the handler, resource, partition generation, change list or word-list stage that failed.
Developer evidence
- record the source and normalization path of filter host working set and commit, not only its display form.
- use handle count to test whether the failure belongs to parsing, execution, indexing or capability negotiation.
- preserve document size and type before objects or work items are released.
- associate filter CLSID/version with the exact UTC timestamp and correlation identifier.
- compare failing and known-good values for queue depth and retry rate under the same provider or handler version.
- record the source and normalization path of document identity and type, not only its display form.
Evidence for it should reflect what the component actually received. Hash document content while retaining file type, size, handler CLSID, extraction stage, block counts and catalog generation.
Disciplined troubleshooting
- Capture filter host working set and commit and handle count at the call boundary that returns this result.
- confirm the operation reached loading a filter handler and extracting text or properties from queued documents with the intended document size and type.
- perform the decisive check: correlate the HRESULT with process resource counters, document identity, filter CLSID and queue depth at the same timestamp.
- reduce the case until changing filter CLSID/version alone changes the HRESULT or proves it irrelevant.
- apply the recovery only after verifying queue depth and retry rate; preserve the original result for comparison.
A useful control for it changes one dimension at a time. Run a copied document through the same filter version in an isolated queue and compare the exact extraction or commit stage with a known-good document type.
Retry conditions
Release the actual constrained resource, isolate leaking handlers and resume indexing gradually; retrying immediately under unchanged pressure is unsafe. Retry it only after the responsible input or state changes and the previous operation has completed or been cancelled. Retry only after resource pressure, handler behavior, work generation or catalog storage state changes and stale work is discarded.
Misleading assumptions
It does not prove that all documents or all filters are affected; preserve the triggering work item, handler and catalog generation before broad recovery. Without code-specific evidence for it, the value also cannot identify which wrapper, configuration, handler or service transition introduced the condition.
Related query outcomes
FDAEMON_E_TOOMANYFILTEREDBLOCKS names a buffer-limit condition, whereas it is a broader resource shortage. Keep the symbolic HRESULT beside the stage name in telemetry because nearby constants may require different owners, user messages and retry rules despite the same visible symptom.
Developer and administrator guidance
Retain the document identity, filter CLSID/version/bitness, daemon event, catalog generation and retry or quarantine history. Do not log credentials or unrestricted document content. Before rebuilding catalogs or reregistering every filter for it, isolate the document, handler and failed work generation.
Concrete troubleshooting case
A third-party filter leaks memory across large documents. Per-filter telemetry identifies the CLSID, and quarantining that handler restores stable indexing without rebuilding unrelated catalogs. A regression test for it should assert the decisive evidence, change only the responsible condition, and include one neighboring HRESULT so future code cannot collapse distinct failures into a generic message.
Official Microsoft references
- Microsoft: content-indexing values
- Microsoft: IFilter interface
- Microsoft: filter handlers
- Microsoft: HRESULT values
Looking for a different code? Search another status or error code.