[GHC] #13599: Something is fishy in Windows hLock implementation
GHC
ghc-devs at haskell.org
Thu Apr 20 20:26:23 UTC 2017
#13599: Something is fishy in Windows hLock implementation
-------------------------------------+-------------------------------------
Reporter: bgamari | Owner: (none)
Type: bug | Status: new
Priority: highest | Milestone: 8.2.1
Component: Compiler | Version: 8.0.1
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Ever since we merged the package database locking patch (#13194) I have
suspected that something isn't quite right in the locking logic on
Windows. The first suspicious sign is that we had to limit the locking
range (7e273ea28fe3630a8fede75ed28f471b7be21b5f) due to mysterious
`ERROR_LOCK_INVALID_RANGE` errors on Harbormaster. While the fix in
7e273ea28fe3630a8fede75ed28f471b7be21b5f seemed to make the issue
disappear, we never were able to pin down the issue.
However, now I'm seeing the `ERROR_LOCK_INVALID_RANGE` issue once again on
my local Windows during `binary-dist-prep`. In particular, it `binary-
dist-prep` seems to reliably fail while registering the `compiler`
directory. Watching the system calls performed by `ghc-pkg` with `procmon`
suggests that the issue is a negative offset being passed to `LockFile`.
Moreover, `LockFile` calls from previous `ghc-pkg` invocations show other,
apparently random offset values being passed. The offset is passed to
`LockFileEx` (the interface used by our `hLock` implementation) via an
`OVERLAPPED` structure, which we locally allocate and zero prior to the
`LockFileEx` call. I still haven't worked out where these random values
are coming from.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13599>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list