Skip to content

ChannelAdaptor potentially unsafe synchronization #585

@agustiza

Description

@agustiza

Hello everyone,

Skimming through ChannelAdaptor source it seems in this line the disconnectLock is the shared Boolean.TRUE object.

This might be unsafe as someone might inadvertly deadlock the shutdown of a ChannelAdaptor by locking on Boolean.True. Also this would make the lock static in scope given that this lock instance would be shared among all other ChannelAdaptors.

Finally synchronizing against Boolean is warned against by the Java spec as Boolean and a few other java.lang classes are considered ValueBased classes. (See @jdk.internal.ValueBased)

A program may produce unpredictable results if it attempts to distinguish two references to equal values of a value-based class, whether directly via reference equality or indirectly via an appeal to synchronization, identity hashing, serialization, or any other identity-sensitive mechanism

Seems it could be swapped for new Object() without any side effect as far as I could see.

Probably never harmed anyone but better be safe!

Cheers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions