go func() {
<-killed
tracef(CDebug, "[%s] killed", BuildUUID)
+ TmpsToCleanM.Lock()
for fn := range TmpsToClean {
tracef(CDebug, "[%s] clean tempfile: %s", BuildUUID, fn)
os.Remove(fn)
StopIfMod = false
Jobs sync.WaitGroup
TmpsToClean = make(map[string]struct{})
+ TmpsToCleanM sync.Mutex
flagTrace *bool
flagTraceAll *bool
lockRelease()
return TgtError{tgt, ErrLine(err)}
}
- TmpsToClean[fdDep.Name()] = struct{}{}
+ {
+ TmpsToCleanM.Lock()
+ TmpsToClean[fdDep.Name()] = struct{}{}
+ TmpsToCleanM.Unlock()
+ }
fdDepOpened := true
fdDepExists := true
fdDepW := bufio.NewWriter(fdDep)
fdDep.Close()
}
if fdDepExists {
- delete(TmpsToClean, fdDep.Name())
+ {
+ TmpsToCleanM.Lock()
+ delete(TmpsToClean, fdDep.Name())
+ TmpsToCleanM.Unlock()
+ }
os.Remove(fdDep.Name())
}
}
cleanup()
return TgtError{tgt, ErrLine(err)}
}
- TmpsToClean[fdStdout.Name()] = struct{}{}
+ {
+ TmpsToCleanM.Lock()
+ TmpsToClean[fdStdout.Name()] = struct{}{}
+ TmpsToCleanM.Unlock()
+ }
fdStdout.Close()
tmpPath := fdStdout.Name() + ".3" // and for $3
tmpPathRel := mustRel(cwd, tmpPath)
}
lockRelease()
if fdDepExists {
- delete(TmpsToClean, fdDep.Name())
os.Remove(fdDep.Name())
}
- delete(TmpsToClean, fdStdout.Name())
os.Remove(fdStdout.Name())
- delete(TmpsToClean, tmpPath)
os.Remove(tmpPath)
+ {
+ TmpsToCleanM.Lock()
+ if fdDepExists {
+ delete(TmpsToClean, fdDep.Name())
+ }
+ delete(TmpsToClean, fdStdout.Name())
+ delete(TmpsToClean, tmpPath)
+ TmpsToCleanM.Unlock()
+ }
if FdStatus != nil {
if _, err = FdStatus.Write([]byte{StatusDone}); err != nil {
log.Fatal(err)
if err != nil {
goto Finish
}
- delete(TmpsToClean, fdDep.Name())
+ {
+ TmpsToCleanM.Lock()
+ delete(TmpsToClean, fdDep.Name())
+ TmpsToCleanM.Unlock()
+ }
fdDepExists = false
if !NoSync {
err = ErrLine(syncDir(redoDir))