Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit abd75b7

Browse files
committed
Create separate objects for isolate state and isolate group state
Isolate data may need to be deleted on the same thread where it was allocated. In particular, the task observer set up in the UIDartState ctor must be removed from the same message loop where it was added. The engine had been using the same DartIsolate object as the root isolate data and as the isolate group data. This object would be deleted when the isolate group was shut down. However, group shutdown may occur on a thread associated with a secondary isolate. When this happens, cleanup of any state tied to the root isolate's thread will fail. This change adds a DartIsolateGroupData object holding state that is common among all isolates in a group. DartIsolateGroupData can be deleted on any thread. See flutter/flutter#45578
1 parent a614c0a commit abd75b7

File tree

5 files changed

+310
-252
lines changed

5 files changed

+310
-252
lines changed

runtime/BUILD.gn

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ source_set("runtime") {
4646
sources = [
4747
"dart_isolate.cc",
4848
"dart_isolate.h",
49+
"dart_isolate_group_data.cc",
50+
"dart_isolate_group_data.h",
4951
"dart_service_isolate.cc",
5052
"dart_service_isolate.h",
5153
"dart_snapshot.cc",

0 commit comments

Comments
 (0)