instrumentisto / medea-jason

Mozilla Public License 2.0
2 stars 2 forks source link

Fix segfault during hot-restart #44

Closed alexlapa closed 2 years ago

alexlapa commented 2 years ago

Сейчас если хот-рестартнуть приложение, то практически наверняка вылетит сегфолт. Происходит это потому, что коллбек на Dart_FinalizableHandle'ах отстреливает уже после того как isolate был прибит, а так как мы в этих коллбеках дергаем Dart_DeletePersistentHandle, то вылетаем мы на вот таком ассерте: CHECK_ISOLATE_GROUP(isolate_group);

Решение: можно скедьюлить все операции на на нашем external executor'е, который полит футуры из дарта. Таким образом, если isolate еще жив, то операция выполнится, а если isolate уже закрылся, то при попытке дернуть дарт через native port мы увидим что дарт уже всё.

Checklist

alexlapa commented 2 years ago

FCM:

Fix segfault during Flutter hot reload (#44)