fix(runtime): Crashes after destroying a worker runtime#1213
Merged
mbektchiev merged 5 commits intomasterfrom Oct 21, 2019
Merged
fix(runtime): Crashes after destroying a worker runtime#1213mbektchiev merged 5 commits intomasterfrom
mbektchiev merged 5 commits intomasterfrom
Conversation
There are optimizations which skip `configure` and `autoreconf` steps, but it's good to leave some traces in the build output in case these lead to obscure failures.
* Check for destroyed `TNSRuntime` and handle gracefully in `dealloc`. Sometimes native objects having JS counterparts could live longer than their respective `TNSRuntimes` (e.g. JS callbacks that have been subscribed for events from `NSNotificationCenter`) * Add `RELEASE_ASSERT`s for alive `TNSRuntime` in all places in the code where this is expected. * Allow creation of an `ObjCWrapperObject` without an alive `TNSRuntime`. This is needed when the native object needs to be accessed from another VM (e.g. accessing the handler to destroy it from the main (notifications producer) thread when the worker has already exited) * [webkit] Guard against destroyed and `nullptr` VM's in locking primitives
* Add strong references to VM from blocks and native adapters for JS objects * Invoke C++ destructor in `disposeBlock` instead of the explicit clearing its member(s)
* Keep worker thread alive as long as the VM is in use * Add tests for crashes and leaked runtimes
679af62 to
2d41cb2
Compare
darind
approved these changes
Oct 21, 2019
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Check for destroyed
TNSRuntimeand handle gracefully indealloc. Sometimesnative objects having JS counterparts could live longer than their respective
TNSRuntimes(e.g. JS callbacks that have been subscribed for events from
NSNotificationCenter)Add
RELEASE_ASSERTs for aliveTNSRuntimein all places in the code wherethis is expected.
Allow creation of an
ObjCWrapperObjectwithout an aliveTNSRuntime. Thisis needed when the native object needs to be accessed from another VM (e.g.
accessing the handler to destroy it from the main (notifications producer) thread
when the worker has already exited)
[webkit] Guard against destroyed and
nullptrVM's in locking primitivesKeep VM alive as long as there are objects referring it
Add strong references to VM from blocks and native adapters for JS objects
Invoke C++ destructor in
disposeBlockinstead of the explicit clearing itsmember(s)
Keep worker thread alive as long as the VM is in use
Add tests for crashes and leaked runtimes
PR Checklist
refs #1163