Repository navigation
Commit cee3713
authored
fix(runtime): keep the V8 platform and main Runtime alive through exit() (#469)
* fix(runtime): keep the V8 platform and main Runtime alive through exit()
Both were file-scope globals with non-trivial destructors, so exit() tore
them down from whatever thread called it. iOS reclaims a suspended app by
calling exit() on a BackBoard thread while the main thread and every worker
are still running; the platform was freed first, then ~Runtime terminated the
workers, and a worker disposing its isolate dereferenced the freed platform
in V8's TracingCpuProfilerImpl destructor. The same pass also locked the live
main isolate and deallocated JS-owned ObjC objects on a foreign thread.
The platform is now a raw pointer that is never deleted; V8 holds it by raw
pointer for every isolate anyway. The main Runtime is a raw pointer deleted
only by shutdownRuntime and before re-initialization, so embedders keep the
deliberate teardown and restart paths unchanged.
* fix(runtime): clear the main runtime pointer before destroying it
Matches the order the previous unique_ptr reset had, so a caller checking
runtime_ during shutdownRuntime sees null rather than a runtime whose
destructor is running.
* docs(runtime): describe runtime lifetime without the removed unique_ptr1 parent 5343e23 commit cee3713
3 files changed
Lines changed: 31 additions & 28 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
43 | 54 | | |
44 | 55 | | |
45 | 56 | | |
| |||
141 | 152 | | |
142 | 153 | | |
143 | 154 | | |
144 | | - | |
145 | | - | |
146 | | - | |
| 155 | + | |
147 | 156 | | |
148 | 157 | | |
149 | 158 | | |
| |||
165 | 174 | | |
166 | 175 | | |
167 | 176 | | |
168 | | - | |
169 | | - | |
| 177 | + | |
| 178 | + | |
170 | 179 | | |
171 | 180 | | |
172 | 181 | | |
| |||
181 | 190 | | |
182 | 191 | | |
183 | 192 | | |
184 | | - | |
| 193 | + | |
185 | 194 | | |
186 | 195 | | |
187 | 196 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
103 | | - | |
| 103 | + | |
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | 122 | | |
126 | 123 | | |
127 | 124 | | |
| |||
138 | 135 | | |
139 | 136 | | |
140 | 137 | | |
141 | | - | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
| |||
171 | 171 | | |
172 | 172 | | |
173 | 173 | | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
181 | 177 | | |
182 | 178 | | |
183 | 179 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
193 | 193 | | |
194 | 194 | | |
195 | 195 | | |
196 | | - | |
197 | | - | |
198 | | - | |
199 | | - | |
200 | | - | |
201 | | - | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
202 | 200 | | |
203 | 201 | | |
204 | 202 | | |
| |||
331 | 329 | | |
332 | 330 | | |
333 | 331 | | |
334 | | - | |
| 332 | + | |
335 | 333 | | |
336 | | - | |
| 334 | + | |
337 | 335 | | |
338 | 336 | | |
339 | 337 | | |
| |||
781 | 779 | | |
782 | 780 | | |
783 | 781 | | |
784 | | - | |
| 782 | + | |
785 | 783 | | |
786 | 784 | | |
787 | 785 | | |
| |||
0 commit comments