On Tue, 8 Oct 2024 at 11:50, Viktor Dukhovni <ietf-d...@dukhovni.org> wrote:

> What sort of filesystem is "/tmp/fsevent_dir-.../watch-root" located in?

This happens on github Linux CI. Not sure which filesystem they are
using. Earlier I was wondering if something funny is happening in case
they are using NFS. But NFS usually causes issues due to caching of
directory entries if we are doing cross-node operations, here we are
on a single node and operations are not running in parallel (or that's
what I believe).  I will remove the hspec layer from the tests to make
sure that the code is simpler and our understanding is correct.

I will also run the tests on circle-ci to check if the problem occurs
there. I have never seen this problem in testing this on a Linux
machine on AWS even if I ran the tests for days in a loop.

> Creating and closing a file in write mode from GHC:
>
>     import System.IO
>
>     main :: IO ()
>     main = do
>         putStrLn "Show time" >> hFlush stdout
>         openFile "/tmp/foo.out" WriteMode >>= hClose
>
> translates on Linux to (strace):
>
>     write(1, "Show time\n", 10)             = 10
>     openat(AT_FDCWD, "/tmp/foo.out", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 
> 0666) = 6
>     newfstatat(6, "", {st_mode=S_IFREG|0644, st_size=0, ...}, AT_EMPTY_PATH) 
> = 0
>     ftruncate(6, 0)                         = 0
>     ioctl(6, TCGETS, 0x7ffd358412a0)        = -1 ENOTTY (Inappropriate ioctl 
> for device)
>     close(6)                                = 0
>
> Nothing at all unusual happening here, so if the OS returns EBUSY,
> perhaps there's something interesting you can report about the state of
> that directory before file creation?  Perhaps there's some filesystem or
> other kernel resource you're maxing out during the tests?

Is EBUSY errno getting translated to "file is locked" error here? In
that case there can be other possibilities, depending on the machine
or the file system. The error message should perhaps indicate other
possibilities here, something like "file may be locked, or the file
system is temporarily busy/unavailable".

Let me check the openFile code, how it is translating system errors to
user errors.

-harendra
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to