go: all: test failures on `netbsd` blocked on waiting for subprocesses
#!watchflakes
post <- builder ~ `netbsd-.*` && (log ~ `^\s*os\.wait6` || log ~ `^\s*syscall.wait4` || `DETECTED A HANGING GO COMMAND` || `test timed out while running command` || `script_test\.go:\d+: .*: signal: killed`)
About this issue
- Original URL
- State: open
- Created a year ago
- Comments: 131 (17 by maintainers)
Commits related to this issue
- internal/gocommand: more tweaks to DebugHangingGoCommands As suggested by bcmills, this change increases the time between SIGINT and SIGKILL to 5s (was 1s), and also suppresses the process dump if SI... — committed to golang/tools by adonovan a year ago
- net/http: use testenv.Command instead of exec.Command in tests On Unix platforms, testenv.Command sends SIGQUIT to stuck commands before the test times out. For subprocesses that are written in Go, t... — committed to golang/go by bcmills 10 months ago
- os: use testenv.Command and os.Executable in tests On Unix platforms, testenv.Command sends SIGQUIT to stuck commands before the test times out. For subprocesses that are written in Go, that causes t... — committed to golang/go by bcmills 10 months ago
- net/http: use testenv.Command instead of exec.Command in tests On Unix platforms, testenv.Command sends SIGQUIT to stuck commands before the test times out. For subprocesses that are written in Go, t... — committed to cellularmitosis/go by bcmills 10 months ago
- os: use testenv.Command and os.Executable in tests On Unix platforms, testenv.Command sends SIGQUIT to stuck commands before the test times out. For subprocesses that are written in Go, that causes t... — committed to cellularmitosis/go by bcmills 10 months ago
Thanks! Some quick followups:
I examined a go1.20 executable on netbsd-9 with
readelf --dynamicand it certainly looks like it’s linked against libpthread:If you’re calling the _lwp_create syscall directly instead of using the pthread_create symbol, but you’re calling any other functions via dynamic symbols, that will get you in trouble and having a newer libpthread.so with the rtld/pthread fix won’t help. There is probably lots of other trouble you can get into if you bypass the pthread symbols – I would have to think more about it.
Is there a document anywhere that lays out how this works on each OS, or roughly how things like the syscalls and cgo dynamic symbol calls are put together?
How do you tell?
Can you be more specific about what the difference is?
To be clear, I am suggesting that this is a NetBSD kernel bug in
wait6.