aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/lockedfile/lockedfile.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/lockedfile/lockedfile.go')
-rw-r--r--internal/lockedfile/lockedfile.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/internal/lockedfile/lockedfile.go b/internal/lockedfile/lockedfile.go
index 8bd2ffbe..f48124ff 100644
--- a/internal/lockedfile/lockedfile.go
+++ b/internal/lockedfile/lockedfile.go
@@ -94,6 +94,11 @@ func (f *File) Close() error {
err := closeFile(f.osFile.File)
f.cleanup.Stop()
+ // f may be dead at the moment after we access f.cleanup,
+ // so the cleanup can fire before Stop completes. Keep f
+ // alive while we call Stop. See the documentation for
+ // runtime.Cleanup.Stop.
+ runtime.KeepAlive(f)
return err
}