Dear developers,
we are trying to run a go program using dmtcp (GitHub - dmtcp/dmtcp: DMTCP: Distributed MultiThreaded CheckPointing). dmtcp uses SIGUSR2 (can be switched to SIGUSR1) and complains if the program controlled by dmtcp uses them. It seems (at least that was the result of our experiments) that every go program (even the simplest) uses both signals. I tried to find it in the documentation, but couldn’t, sorry if I missed something here. Do you know about this, and if there is any option to prevent go from using those signals?
Many thanks
Hello!
Go programs inherently use SIGUSR1 (for profiling) and SIGUSR2 (for runtime management), causing conflicts with DMTCP, which also uses these signals (though DMTCP can switch to SIGUSR1). Currently, there’s no direct way to prevent Go’s runtime from using these signals. Potential workarounds include avoiding runtime/pprof imports, cautiously configuring DMTCP to use only SIGUSR1, isolating Go processes, or communicating with DMTCP developers for specific advice. Directly intercepting these signals in Go is strongly discouraged when using DMTCP.
Thank you for your reply, that clarifies the situation.