coverage: fix race of signal vs start of a process
License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
Jakub Sztandera committed
Apr 4, 2019 at 20:10 UTC
5d19b58911638155cdb28d74a84ba8a93b7f6770
1 file changed
+13
-2
coverage/main/main.go
+13
-2
@@ -43,15 +43,26 @@ func main() {
43
Pdeathsig: syscall.SIGTERM,
44
}
45
46
- sig := make(chan os.Signal, 1)
46
+ sig := make(chan os.Signal, 10)
47
+ start := make(chan struct{})
48
go func() {
49
+ <-start
50
for {
51
p.Process.Signal(<-sig)
52
}
53
}()
54
+
55
signal.Notify(sig, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM)
56
54
- err = p.Run()
57
+ err = p.Start()
58
+ if err != nil {
59
+ fmt.Println(err.Error())
60
+ os.Exit(1)
61
+ }
62
+
63
+ close(start)
64
+
65
+ err = p.Wait()
66
if err != nil {
67
fmt.Println(err.Error())
68
os.Exit(1)