Skip to content

[BUG] Падение при парсинге файла Ролей #3770

Description

@SteelMorgan

Версия

bsl-language-server-0.27.1-exec.jar

Описание ошибки диагностики

[Error - 1:30:53 PM] [ERROR - 2026-01-14T10:30:49.434296Z] [compute-configuration-22] [com.github._1c_syntax.bsl.reader.common.xstream.ExtendXStream]: Can't read file 'D:\UT\src\Roles\ЧтениеЗапросовЕГАИС\Ext\Rights.xml' - it's broken (skipped)

Пример кода

УТшка (11.3), а платформа 8.3.27.1719

Скриншоты

Дополнительная информация

Image

ИИшка говорит, что всему виной:

Предполагаемая первопричина: баг обхода XML-дерева в RoleDataConverter
В RoleDataConverter есть циклы, которые обходят дочерние узлы и . При встрече неизвестного тега код делает continue, но не делает reader.moveUp(), из‑за чего ридер остаётся на неверном уровне вложенности.
Это классический источник StreamException/ConversionException в XStream/StAX: курсор ридера “залипает” внутри неизвестного узла, последующий обход ломается и чтение всего Rights.xml валится.

Источник:
Фрагменты логики (суть):
readObjectRight(...):
если fieldClass == null → continue; (без moveUp)
readRight(...):
если fieldClass == null → continue; (без moveUp)
При этом для restrictionTemplate сделано правильно: они делают reader.moveUp(); continue; — т.е. авторы уже знают, что нужно подниматься, но пропустили этот момент в других ветках.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type/bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions