Skip to content

[Bug] remoteUpdateDstAddr_ is per-connection but overwritten by each semaphore #767

Description

@miss-x-incognita

IBConnection stores a single remoteUpdateDstAddr_ for IB no-atomic. When multiple semaphores are built on one IBConnection (e.g., src/core/executor/executor.cc), each semaphore constructor calls setRemoteUpdateDstAddr to update the single remoteUpdateDstAddr_. Therefore, only the last semaphore’s GPU address remains in remoteUpdateDstAddr_; earlier semaphores on the same connection no longer receive inbound updates at the correct location.

I would suggest either refactoring IB no-atomic delivery so the destination is not stored once per connection (stateless or per-completion semantics), or formally forbidding multiple semaphores on one connection for IB no-atomic. Let me know which you prefer so that I can raise a PR to fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions