| Предыдущий | Следующий |
| OSS_BAD_TABLE | OSS_CONSTRAINT_VIOLATED |
OSS_TOO_LONG
OSS_TOO_LONG (0x80093010) — результат OSS ASN.1 runtime для значения, превышающего SIZE при отключённой строгой проверке. Encoder встречает значение длиннее ASN.1 SIZE constraint в конфигурации, где не использовался отдельный strong-checking path. Поскольку фактическая длина element или string имеют решающее значение для этого условия, диапазон HRESULT Microsoft следует рассматривать вместе с документацией return code OSS Nokalva. Начните исследование с фиксации объявленный SIZE constraint и extension marker, затем отделите закодированное значение от сгенерированных артефактов, аргументов вызова и runtime-пакета, реально загруженного процессом.
Где остановилась обработка
На границе значения, превышающего SIZE при отключённой строгой проверке зафиксируйте первую OSS-функцию, вернувшую значение, и отметьте, выполнялись ли encode, decode, copy, compare, constraint validation или настройка trace. Сохраните выбранный PDU, правила кодирования и флаги constraint checking для этого вызова; иначе внешний certificate/security wrapper может скрыть полезный результат codec за общей ошибкой.
Факты, меняющие вывод
| Запишите | Диагностическое значение |
|---|---|
| фактическая длина element или string | Локализует конкретное сообщение, allocation, module или границу API |
| объявленный SIZE constraint и extension marker | Отделяет поведение, зависящее от payload, от состояния сборки и процесса |
| флаги constraint checking для этого вызова | Делает сравнение воспроизводимым без изменения исходного артефакта |
Похожие имена, разные сбои
CONSTRAINT_VIOLATED — общий результат нарушения проверки; TOO_LONG указывает именно на слишком большое значение, обнаруженное при кодировании в другом режиме проверки.
Последовательность изоляции
- закодируйте длину, точно равную верхней границе
- в тестовой сборке включите явный constraint checking
- трассируйте место присваивания collection count
Инструментирование
Записывайте полный 32-битный HRESULT и младший OSS return number вместе с направлением операции, символическим PDU, правилом кодирования, числом байтов и идентификатором generated table. Там, где фактическая длина element или string может раскрывать чувствительные данные, хеш с ограниченным структурным фрагментом безопаснее полного payload. Используйте объявленный SIZE constraint и extension marker вместе с путями и версиями модулей OSS, записанными один раз на процесс, чтобы сопоставлять различия упаковки без засорения обычной диагностики.
При проверке сохраняйте исходные байты или object graph неизменными закодируйте длину, точно равную верхней границе. Изменение объявленный SIZE constraint и extension marker после reload, замены plugin, restart или развертывания schema является данными о состоянии runtime, а не основанием выбрасывать reproducer. Когда флаги constraint checking для этого вызова указывает на конкретное сообщение, сохраняйте криптографический хеш и минимальный безопасный образец вместо записи certificate, subscriber, credential или private-key material.
Матрица решений
| Контролируемое наблюдение | Подтверждаемый вывод |
|---|---|
| закодируйте длину, точно равную верхней границе | Изменившийся результат локализует первый предлагаемый контроль вместо слепого повтора |
| фактическая длина element/string различается между успешным и неуспешным случаем | Разница локализует превышение SIZE при отключённом strong checking до изменения несвязанных настроек |
| Независимый decoder принимает тот же артефакт | Проверьте сгенерированную schema, выбранные rules, ABI и необязательные модули OSS, прежде чем объявлять байты недействительными |
| Новый control object изменяет результат | Исследуйте инициализацию, lifecycle, владение allocator, изменение конфигурации и concurrent access |
Проверка завершения
Проверяйте длины при построении значения и убедитесь, что runtime flags соответствуют политике валидации приложения. Тест восстановления для закодируйте длину, точно равную верхней границе должен повторять ту же операцию при той же schema и encoding rule, сохранять один намеренно недействительный control и проверять владение/очистку после обоих исходов. Успех после непроанализированного повтора не доказывает, что фактическая длина element или string теперь соответствует контракту codec.
Технические ссылки
- Microsoft: определения HRESULT OSS ASN.1
- OSS Nokalva: return codes encoder/decoder
- OSS Nokalva: runtime-функции и инициализация control
- Соответствующая спецификация ASN.1 или деталь runtime
Нужно найти другой код? Найти другой код состояния или ошибки.
