Site icon EfmSoft

What does HRESULT 0x80093009 (OSS_PDU_MISMATCH) mean?

 
Previous Next
OSS_OUT_MEMORY OSS_LIMITED

OSS_PDU_MISMATCH

OSS_PDU_MISMATCH (0x80093009) is an OSS ASN.1 runtime result for wire tag selects a different ASN.1 type. During decoding, the type inferred from BER or XML markup does not match the object type the caller asked the runtime to decode. Because expected PDU name and selector is central to this condition, Microsoft’s HRESULT range and the OSS Nokalva return-code documentation should be read together. Start the investigation by recording actual outer tag, namespace, or XML element, then separate the encoded value from generated artifacts, call arguments, and the runtime package actually loaded by the process.

What not to confuse it with: OSS_PDU_MISMATCH

PDU_RANGE is an invalid numeric selector; PDU_MISMATCH can use a valid selector that simply does not match the bytes.

Locate the exact codec boundary

At the wire tag selects a different ASN.1 type boundary, capture the first OSS function returning the value and note whether the operation was encode, decode, copy, compare, constraint validation, or trace setup. Preserve the selected PDU, encoding rules, and producer schema and encoding rule; otherwise an outer certificate or security wrapper may hide the useful codec result behind a generic failure.

Evidence worth preserving

RecordDiagnostic value
expected PDU name and selectorLocates the concrete message, allocation, module, or API boundary
actual outer tag, namespace, or XML elementSeparates payload-dependent behavior from build and process state
producer schema and encoding ruleMakes the comparison reproducible without rewriting the original artifact

Keep the original bytes or object graph unchanged while testing decode through the correct top-level dispatcher. A change in actual outer tag, namespace, or XML element after reload, plugin replacement, restart, or schema deployment is evidence about runtime state, not permission to discard the reproducer. When producer schema and encoding rule points to one message, retain a cryptographic hash and the smallest safe sample instead of logging certificate, subscriber, credential, or private-key material.

A controlled way to reproduce it

  1. decode through the correct top-level dispatcher
  2. compare the first tag with a known-good message
  3. confirm that payload routing did not send one message class to another decoder

Decision matrix

Controlled observationConclusion it supports
decode through the correct top-level dispatcherA changed outcome isolates the first proposed control instead of a blind retry
expected PDU name and selector differs between success and failureThe difference localizes the wire tag selects a different ASN.1 type boundary before unrelated settings are changed
An independent decoder accepts the same artifactInspect generated schema, selected rules, ABI, and optional OSS modules before declaring the bytes invalid
A fresh control object changes the outcomeInvestigate initialization, lifecycle, allocator ownership, configuration mutation, and concurrent access

Instrumentation

Record the full 32-bit HRESULT and lower OSS return number together with operation direction, symbolic PDU, encoding rule, byte count, and generated-table identifier. Where expected PDU name and selector can expose sensitive content, a hash plus a bounded structural excerpt is safer than the complete payload. Use actual outer tag, namespace, or XML element together with OSS module paths and versions logged once per process so packaging differences can be correlated without flooding normal diagnostics.

Exit criteria: the result

Correct routing or the selected top-level type, then test every message variant accepted on that channel. A recovery test built around decode through the correct top-level dispatcher should replay the same operation under the same schema and encoding rule, retain one deliberately invalid control, and verify ownership and cleanup after both outcomes. Success after an unexamined retry is not proof that expected PDU name and selector now satisfies the codec contract.

Technical references


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

Exit mobile version