Skip to content

IOCP ready_ field lacks atomic ordering (ARM64 bug) #300

Description

@sgerbino

Summary

The IOCP ready_ field is a plain long mixed between interlocked and plain
access, without release/acquire ordering for the published payload — an ordering
bug on ARM64.

Detail

win_overlapped_op.hpp:52 ready_ is a plain long accessed via both
InterlockedCompareExchange (win_scheduler.hpp:350, :579) and a plain store
(:366); dwError / bytes_transferred are published without release/acquire —
fine on x86 TSO, an ordering bug on ARM64.

Acceptance criteria

  • ready_ and the published payload (dwError / bytes_transferred) use
    correct release/acquire ordering across all access sites.

References

win_overlapped_op.hpp:52; win_scheduler.hpp:350, :366, :579.

Raised by Gennaro Prota (code-referenced). Author triage pending. Source: Boost
ML announcement.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions