Make sure stale object pointers don't hang around #87
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.
When an object is being finalized, other thread may re-reference the object right before it gets removed from the table (making ref_count greater than 1) and then quickly release that reference before g_object_unref() re-checks the refcount.
If that happens, the object may remain in the table by time when its finalize() callback is called. That applies both to local and remote objects.
We still have to invalidate the handle in dispose() callback because it's the last point when GObject can be legitimately re-referenced and brought back to life.