Skip to content

core: fix false-positive orphan warning in ManagedChannelOrphanWrapper#12705

Open
themechbro wants to merge 4 commits intogrpc:masterfrom
themechbro:fix/orphan-wrapper-race-condition-12641
Open

core: fix false-positive orphan warning in ManagedChannelOrphanWrapper#12705
themechbro wants to merge 4 commits intogrpc:masterfrom
themechbro:fix/orphan-wrapper-race-condition-12641

Conversation

@themechbro
Copy link

This PR addresses a race condition identified in #12641 where ManagedChannelOrphanWrapper could incorrectly log a "not shutdown properly" warning during garbage collection.

Changes:

Moved phantom.clearSafely() to execute after the super.shutdown() calls.

Added a reachability fence in shutdown() and shutdownNow() to ensure the wrapper remains alive until the methods return.

Added a regression test that simulates a reference being held on the stack to verify the fix.

Testing:
Verified with ./gradlew :grpc-core:test --tests ManagedChannelOrphanWrapperTest -PskipAndroid=true.

Add a reachability fence in shutdown() and shutdownNow() to ensure the
wrapper is not garbage collected while shutdown logic is executing.
This prevents a race condition when using directExecutor() where a
warning could be logged despite a proper shutdown.

Fixes grpc#12641
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant