INotify.removeWatch can crash
authorJoey Hess <joeyh@joeyh.name>
Fri, 13 Aug 2021 19:35:18 +0000 (15:35 -0400)
committerJoey Hess <joeyh@joeyh.name>
Fri, 13 Aug 2021 19:35:18 +0000 (15:35 -0400)
Unsure why, possibly if the file has been replaced by another file.

Annex/Verify.hs

index 72ac71b86891ca5f5e57ad26930f801e5977ac48..d9045a627e79aab368902c93c48c4241a36ee32c 100644 (file)
@@ -193,7 +193,7 @@ tailVerify iv f finished =
                                (Just <$> readTMVar hv)
                                        `orElse` 
                                ((const Nothing) <$> readTMVar finished)
-                       INotify.removeWatch wd
+                       void $ tryNonAsync $ INotify.removeWatch wd
                        return v
        
        inotifycreate i cont = INotify.addWatch i evs (P.takeDirectory f) $ \case
@@ -231,8 +231,9 @@ tailVerify iv f finished =
                wd <- INotify.addWatch i [INotify.Modify] f $ \_event ->
                        atomically $ void $ tryPutTMVar modified ()
                r <- follow h modified
-               INotify.removeWatch wd
+               void $ tryNonAsync $ INotify.removeWatch wd
                return r
+
        -- File never showed up, but we've been told it's done being
        -- written to.
        go' _ Nothing = do