mitranim / gow

Missing watch mode for Go commands. Watch Go files and execute a command like "go run" or "go test"
The Unlicense
772 stars 29 forks source link

1.14 signal change #8

Closed deltamualpha closed 4 years ago

deltamualpha commented 4 years ago

I've seen gow starting to log spurious received signal: urgent I/O condition. This is presumably related to the change to the runtime in 1.14: https://golang.org/doc/go1.14#runtime

A consequence of the implementation of preemption is that on Unix systems, including Linux and macOS systems, programs built with Go 1.14 will receive more signals than programs built with earlier releases.

I've written up a tiny little example repo that exhibits the behavior: https://github.com/deltamualpha/gow-debug; run make and then touch main.go repeatedly outside the container to see it in action. I can't tell if it's actually a problem, but this came up when I was trying to debug why restarts within a local docker container seemed to get very hit-or-miss after I upgraded the container to 1.14.

mitranim commented 4 years ago

My apologies for the slow response, and thank you for reporting and testing! Just letting you know that I'm not ignoring the issue, just been very busy the last few days. Will try to get to it when I can.

mitranim commented 4 years ago

Just pushed bb07dc578edf21605dbb1c42ba093c0905c6ce81 which seems to fix it. Previously, gow subscribed to all OS signals, but now it subscribes only to the kill signals it intends to handle. I'm glad this came up, the previous decision was eyebrow-raising.

mitranim commented 4 years ago

Should work. Closing for now, let me know if you run into any issues. 🙂