What does HRESULT 0x87C51053 (UTC_E_FILTER_ILLEGAL_EVAL) mean?

 
Previous Next
UTC_E_FILTER_INVALID_COMMAND hrBFNotSynchronous

UTC_E_FILTER_ILLEGAL_EVAL

Locate the rejected contract: filter comparison evaluator

UTC_E_FILTER_ILLEGAL_EVAL (0x87C51053) is a Universal Telemetry Client result from the scenario filter parser and evaluator layer. The symbolic name points to a narrow UTC contract that can be tested directly. The relevant state is filter comparison evaluator: two operands reached evaluation but their types have no legal comparison or operation. This identifies a specific UTC/DiagTrack condition, not a general service failure.

UTC filters are typed programs, not plain text searches. Parsing, command validation, name lookup, signature binding and evaluation are distinct phases. Capturing the normalized expression and inferred operand types is essential for a useful diagnosis.

Capture checklist

UTC diagnostic fieldValue
Producing layerscenario filter parser and evaluator
Owning state or objectfilter comparison evaluator
Evidence to collectoperator, left/right values and inferred types, conversions, null state and event field origins
Narrow comparisonconvert one operand to the intended common type and replay the same event
Do not confuse withUTC_E_FILTER_INVALID_FUNCTION_PARAMS is function-call binding rather than binary evaluation

Comparison with a passing case

  1. Collect the high-value state: operator, left/right values and inferred types, conversions, null state and event field origins.
  2. Use a passing control on the same Windows build, then convert one operand to the intended common type and replay the same event.

Nearby result: UTC_E_FILTER_INVALID_FUNCTION_PARAMS — is function-call binding rather than binary evaluation.

Typed-filter note

Save the filter after variable substitution and type inference, not only the authoring XML. A visually plausible expression can still fail because the runtime command table, scope or operand types differ from the authoring tool. Test with one synthetic event whose fields and types are known exactly.

Resolution and regression test

Make type compatibility explicit in the filter and reject malformed producer data earlier.

Technical references


Looking for a different code? Search another status or error code.