| 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
| Record | Diagnostic value |
|---|---|
| expected PDU name and selector | Locates the concrete message, allocation, module, or API boundary |
| actual outer tag, namespace, or XML element | Separates payload-dependent behavior from build and process state |
| producer schema and encoding rule | Makes 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
- decode through the correct top-level dispatcher
- compare the first tag with a known-good message
- confirm that payload routing did not send one message class to another decoder
Decision matrix
| Controlled observation | Conclusion it supports |
|---|---|
| decode through the correct top-level dispatcher | A changed outcome isolates the first proposed control instead of a blind retry |
| expected PDU name and selector differs between success and failure | The difference localizes the wire tag selects a different ASN.1 type boundary before unrelated settings are changed |
| An independent decoder accepts the same artifact | Inspect generated schema, selected rules, ABI, and optional OSS modules before declaring the bytes invalid |
| A fresh control object changes the outcome | Investigate 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
- Microsoft: OSS ASN.1 HRESULT definitions
- OSS Nokalva: encoder/decoder return codes
- OSS Nokalva: runtime functions and control initialization
- Relevant ASN.1 specification or runtime detail
Looking for a different code? Search another status or error code.
