The Go team has found that recent Linux kernels break the recently integrated goroutine preemption logic.<p>There is deep analysis here <a href="https://github.com/golang/go/issues/35326#issuecomment-558212984" rel="nofollow">https://github.com/golang/go/issues/35326#issuecomment-55821...</a> They have bisected the kernel and found that <a href="https://github.com/torvalds/linux/commit/d9c9ce34ed5c892323cbf5b4f9a4c498e036316a" rel="nofollow">https://github.com/torvalds/linux/commit/d9c9ce34ed5c892323c...</a> is the culprit. Apparently, it introduces changes in the signal handling behavior only visible when compiled with GCC 9, presumably because it uses AVX registers.<p>The entire discussion is a nice read.