Сейчас если хот-рестартнуть приложение, то практически наверняка вылетит сегфолт. Происходит это потому, что коллбек на Dart_FinalizableHandle'ах отстреливает уже после того как isolate был прибит, а так как мы в этих коллбеках дергаем Dart_DeletePersistentHandle, то вылетаем мы на вот таком ассерте: CHECK_ISOLATE_GROUP(isolate_group);
Решение: можно скедьюлить все операции на на нашем external executor'е, который полит футуры из дарта. Таким образом, если isolate еще жив, то операция выполнится, а если isolate уже закрылся, то при попытке дернуть дарт через native port мы увидим что дарт уже всё.
Сейчас если хот-рестартнуть приложение, то практически наверняка вылетит сегфолт. Происходит это потому, что коллбек на
Dart_FinalizableHandle
'ах отстреливает уже после того как isolate был прибит, а так как мы в этих коллбеках дергаемDart_DeletePersistentHandle
, то вылетаем мы на вот таком ассерте:CHECK_ISOLATE_GROUP(isolate_group);
Решение: можно скедьюлить все операции на на нашем external executor'е, который полит футуры из дарта. Таким образом, если isolate еще жив, то операция выполнится, а если isolate уже закрылся, то при попытке дернуть дарт через native port мы увидим что дарт уже всё.
Checklist
Draft:
prefixk::
labels appliedDraft:
prefix is removed