What do you see when you run an strace? On Mon, Oct 7, 2024 at 10:55 AM Harendra Kumar <harendra.ku...@gmail.com> wrote:
> Hi everyone, > > We have a long standing, elusive and intermittent test failure in > streamly's file system event test suite. The code where the error > emanates from looks like this: > > createFileWithParent :: FilePath -> FilePath -> IO () > createFileWithParent file parent = do > let filepath = parent </> file > let dir = takeDirectory filepath > putStrLn $ "createFileWithParent: file [" > ++ file ++ "] dir [" ++ dir ++ "]" > putStrLn $ "Ensuring dir: " ++ dir > createDirectoryIfMissing True dir > r <- doesDirectoryExist dir > if r > then do > putStrLn $ "Ensured dir: " ++ dir > when (not (null file)) $ do > exists <- doesFileExist filepath > if not exists > then do > putStrLn $ "Creating file: " ++ (parent </> file) > openFile (parent </> file) WriteMode >>= hClose > putStrLn $ "Created file: " ++ (parent </> file) > else error $ "File exists: " ++ filepath > else error $ "Could not create dir: " ++ dir > > > The important thing in the code above is that we check that the file > does not exist already, and we are creating it. Creating this new file > intermittently fails with the following error messages, all of these > are coming from prints in the above: > > createFileWithParent: file [file1] dir > [/tmp/fsevent_dir-e1098325dc2b0880/watch-root] > Ensuring dir: /tmp/fsevent_dir-e1098325dc2b0880/watch-root > Ensured dir: /tmp/fsevent_dir-e1098325dc2b0880/watch-root > Creating file: /tmp/fsevent_dir-e1098325dc2b0880/watch-root/file1 > > uncaught exception: IOException of type ResourceBusy > /tmp/fsevent_dir-e1098325dc2b0880/watch-root/file1: openFile: resource > busy (file is locked) > > How can a file that does not exist and being created be locked during > creation? We see this only on Linux, the same tests always succeed on > Windows and macOS. We are facing this in GHC 9.2.8, I am not sure if > it is version specific because in the past I selectively disabled the > tests for specific GHC versions and the error still surfaced in other > GHC versions. > > Anything obvious that we may be missing here? Any pointers or more > debug info to generate to debug this? I have not started looking into > the openFile code yet, hoping someone else knowing it well might help > here. > > Is this some other "resource busy" error which is being wrongly > bucketed into "file is locked" error? > > Thanks, > Harendra > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs