
#14460: Symlink resolving fails against SMB mounts -------------------------------------+------------------------------------- Reporter: astert | Owner: Phyx- Type: bug | Status: closed Priority: normal | Milestone: 8.4.1 Component: Compiler | Version: 8.2.1 Resolution: fixed | Keywords: Operating System: Windows | Architecture: Type of failure: GHC doesn't work | Unknown/Multiple at all | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D4216 Wiki Page: | -------------------------------------+------------------------------------- Comment (by Vyse007): So for some strange weirdness with `autoconf` I can't actually test my fix, but sleuthing with APIMonitor as suggested by Phyx- leads me to the following conclusion: In the `getBaseDir` function in `BaseDir.hs`, the value of `GetModuleFileName` is indeed `Z:\sandbox\Vyse\8.4.3\bin\ghc.exe` - APIMonitor confirms this. This function then calls `getFinalPath` defined under it, which attempts to find the 'final' path of the executable. This function internally calls `GetFinalPathNameByHandleW`, and this function returns a slightly different value (after adding the backslashes): `\\\\?\\UNC\\vNetwork\\users\\sandbox\\Vyse\\8.4.3\\bin\\ghc.exe` - again, as reported by APIMonitor. Now calling `sanitize` and `takeDirectory` (twice) gets rid of the preceding `\\\\?\\`, but still leaves us with `UNC\\vNetworks\\users\\sandbox\\Vyse\\8.4.3`. This directory, according to `doesDirectoryExist`, does not exist. And that is correct in a way, as you cant `cd` to that location with that path, but you can use (without the extra slashes) `cd \\vNetwork\users\sandbox...` Anyway, API monitor reports that after the `GetFinalPathNameByHandleW` call, which returns the value with the `UNC` prefix, we end up calling `CreateFileW` again, but this time with the bizarre value of `\\?\Z:\sandbox\Vyse\8.4.3\bin\UNC\vNetwork\users\sandbox\Vyse\8.4.3\lib` - not sure where this came from, but at this point `NtCreateFile` errors out. I'll look into it a bit more when I get some time. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14460#comment:20 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler