zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Han (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ZOOKEEPER-1643) Windows: fetch_and_add not 64bit-compatible, may not be correct
Date Tue, 01 Aug 2017 15:42:00 GMT

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-1643?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Michael Han updated ZOOKEEPER-1643:
    Fix Version/s: 3.4.11

> Windows: fetch_and_add not 64bit-compatible, may not be correct
> ---------------------------------------------------------------
>                 Key: ZOOKEEPER-1643
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1643
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: c client
>    Affects Versions: 3.3.3
>         Environment: Windows 7
> Microsoft Visual Studio 2005
>            Reporter: Erik Anderson
>            Assignee: Erik Anderson
>             Fix For: 3.5.0, 3.4.11
>         Attachments: mt_adaptor.c.patch
> Note: While I am using a really old version of ZK, I did do enough "SVN Blame" operations
to realize that this code hasn't changed.
> I am currently attempting to compile the C client under MSVC 2005 arch=x64.  There are
three things I can see with fetch_and_add() inside of /src/c/src/mt_adapter.c
> (1) MSVC 2005 64bit will not compile inline _asm sections.  I'm moderately sure this
code is x86-specific so I'm unsure whether it should attempt to either.
> (2) The Windows intrinsic InterlockedExchangeAdd [http://msdn.microsoft.com/en-us/library/windows/desktop/ms683597(v=vs.85).aspx]
appears to do the same thing this code is attempting to do
> (3) I'm really rusty on my assembly, but why are we doing two separate XADD operations
here, and is the code as-written anything approaching atomicity?
> If you want an official patch I likely can do an SVN checkout and submit a patch the
replaces the entire #else on lines 495-505 with a "return InterlockedExchangeAdd(operand,
> Usually when I'm scratching my head this badly there's something I'm missing though.
 As far as I can tell there has been no prior discussion on this code.

This message was sent by Atlassian JIRA

View raw message