Size: a a a

2019 February 22

KO

Konstantin Osipov in Lua in Moscow
+  lua_assert(traceno != G2J(g)->cur.traceno);
источник

KO

Konstantin Osipov in Lua in Moscow
что полохого в том что gc_marktrace() мы маркируем текущий исполняемый трейс? Похоже мы неправильно понимаем предназначение marktrace
источник

KO

Konstantin Osipov in Lua in Moscow
и да, падает он на ->link
источник

KO

Konstantin Osipov in Lua in Moscow
что такое link?
источник

KY

Kirill Yukhin in Lua in Moscow
Привет! Этот асерт вообще выглядит странно: текущая трасса не может быть помечена, как живая, зачем это вообще?
источник

A

Anton in Lua in Moscow
Konstantin Osipov
погоди, а marktrace разве не помечает достижимые трассы?
Я вот о чём: судя по стектрейсу, в gc_marktrace вы попадаете из gc_traverse_trace, которая пропагирует достижимость на все зависимости трассы.

J->cur – это не исполняемая в данный момент, это ассемблируемая в данный момент трасса, которая запросто может быть неполной.
источник

KY

Kirill Yukhin in Lua in Moscow
А, понятно. Но какой смысл ее НЕ помечать, как живую?
источник

A

Anton in Lua in Moscow
Konstantin Osipov
что такое link?
Либо ссылка на саму трассу для трасс, в которых есть цикл, либо ссылку на другую трассу, если машинный код данной трассы выходит на эту другую.
источник

A

Anton in Lua in Moscow
Kirill Yukhin
А, понятно. Но какой смысл ее НЕ помечать, как живую?
Потому что это некий технический объект, для которого нет гарантий его консистентности.
источник

A

Anton in Lua in Moscow
Видимо, не ваш.
источник

KY

Kirill Yukhin in Lua in Moscow
т е в какой-то момент мы можем решить, что некущая трасса, кот мы собираем, на самом деле не нужна? Т е понятно, что она в состоянии сбора, но почему гарантируется, что мы никогда не попытаемся ее пометить, как активную
источник

KY

Kirill Yukhin in Lua in Moscow
не глядя на то, консистентна она в данный момент или нет
источник

A

Anton in Lua in Moscow
Судя по тому, что пишет Костя

> и да, падает он на ->link

(Что, видимо, значит, что падение вот тут: if (T->link) { gc_marktrace(g, T->link); })

вы оказались в довольно странной ситуации, когда уже полностью готовая трасса содержит ссылку на ассемблируемую трассу.
источник

A

Anton in Lua in Moscow
Окей, а чему, например, link равен? Сколько всего трасс уже собрано?
источник

A

Anton in Lua in Moscow
Боюсь, надо сильно ковырять кордамп и понимать, что происходит в приложении в этот момент (релоад чего-нибудь / создание или уничтожение экземпляров VM / флаш трасс).
источник

KO

Konstantin Osipov in Lua in Moscow
релоад есть
источник

KY

Kirill Yukhin in Lua in Moscow
номер трассы 28160
источник

KO

Konstantin Osipov in Lua in Moscow
а что трасса компилируется частями?
источник

KO

Konstantin Osipov in Lua in Moscow
как такое может быть что фрагмент трассы только ассемблируется?
источник

KO

Konstantin Osipov in Lua in Moscow
в общем в настоящий момент у нас таких крэшей и корок собрался небольшой вагон и маленькая тележка...
источник