-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Closed
Labels
FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.OS-Darwin
Milestone
Description
What version of Go are you using (go version)?
$ go version go version devel +d40f3a19b9 Wed Jul 31 14:37:10 2019 +0200 darwin/amd64
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env GO111MODULE="on" GOARCH="amd64" GOBIN="" GOCACHE="/Users/elias/Library/Caches/go-build" GOENV="/Users/elias/Library/Application Support/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GONOPROXY="" GONOSUMDB="" GOOS="darwin" GOPATH="/Users/elias/go" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/Users/elias/go-tip" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/Users/elias/go-tip/pkg/tool/darwin_amd64" GCCGO="gccgo" AR="ar" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="/Users/elias/go-tip/misc/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/_7/lnt35k555hl2bs7fjygkhgx00000gp/T/go-build504643451=/tmp/go-build -gno-record-gcc-switches -fno-common"
What did you do?
Patched in https://golang.org/cl/188297 and ran
$ cd misc/cgo/testcarchive
$ go test -v -run OsSig -count=1 .
=== RUN TestOsSignal
--- FAIL: TestOsSignal (1.65s)
carchive_test.go:478: unexpected SIGPIPE
carchive_test.go:479: exit status 1
FAIL
FAIL misc/cgo/testcarchive 1.856s
FAIL
What did you expect to see?
No error.
What did you see instead?
Unexpected SIGPIPE from ProvokeSIGPIPE called on a non-main thread.
ProvokeSIGPIPE raises a SIGPIPE from a write to a closed pipe. It is a Go function so the Go runtime should catch it. Alas, it doesn't and the reason appears to be that the signal is raised on the main thread regardless of the raising thread.
To prove my claim, here is a backtrace from running the modified libgo3 test in lldb:
$ lldb ./testp
(lldb) target create "./testp"
Current executable set to './testp' (x86_64).
(lldb) b main
Breakpoint 1: 14 locations.
(lldb) run
Process 14147 launched: '/Users/elias/go-tip/misc/cgo/testcarchive/testp' (x86_64)
4 locations added to breakpoint 1
Process 14147 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100001580 testp`main
testp`main:
-> 0x100001580 <+0>: pushq %rbp
0x100001581 <+1>: movq %rsp, %rbp
0x100001584 <+4>: subq $0xd0, %rsp
0x10000158b <+11>: xorl %eax, %eax
Target 0: (testp) stopped.
(lldb) process handle SIGPIPE -s true NAME PASS STOP NOTIFY
=========== ===== ===== ======
SIGPIPE true true false
(lldb) cont
Process 14147 resuming
Process 14147 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGPIPE
frame #0: 0x00007fff6af789de libsystem_kernel.dylib`__ulock_wait + 10
libsystem_kernel.dylib`__ulock_wait:
-> 0x7fff6af789de <+10>: jae 0x7fff6af789e8 ; <+20>
0x7fff6af789e0 <+12>: movq %rax, %rdi
0x7fff6af789e3 <+15>: jmp 0x7fff6af76457 ; cerror_nocancel
0x7fff6af789e8 <+20>: retq
Target 0: (testp) stopped.
(lldb) bt all
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGPIPE
* frame #0: 0x00007fff6af789de libsystem_kernel.dylib`__ulock_wait + 10
frame #1: 0x00007fff6b0396de libsystem_pthread.dylib`_pthread_join + 358
frame #2: 0x0000000100001658 testp`main + 216
frame #3: 0x00007fff6ae413d5 libdyld.dylib`start + 1
thread #2
frame #0: 0x00007fff6af7986a libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6b03856e libsystem_pthread.dylib`_pthread_cond_wait + 722
frame #2: 0x0000000100055fe0 testp`runtime.pthread_cond_wait_trampoline + 16
frame #3: 0x000000010005399d testp`runtime.asmcgocall + 173
frame #4: 0x0000000100055fd0 testp`runtime.pthread_cond_init_trampoline + 32
frame #5: 0x0000000100045a09 testp`runtime.pthread_cond_wait + 57
frame #6: 0x0000000100027a45 testp`runtime.semasleep + 133
frame #7: 0x000000010000a2f0 testp`runtime.notesleep + 224
frame #8: 0x000000010002fa30 testp`runtime.stopm + 192
frame #9: 0x0000000100030342 testp`runtime.startlockedm + 130
frame #10: 0x00000001000315a9 testp`runtime.schedule + 105
frame #11: 0x0000000100032226 testp`runtime.goexit0 + 470
frame #12: 0x00000001000520fb testp`runtime.mcall + 91
frame #13: 0x0000000100027a45 testp`runtime.semasleep + 133
frame #14: 0x000000010000a2f0 testp`runtime.notesleep + 224
frame #15: 0x000000010002fa30 testp`runtime.stopm + 192
frame #16: 0x0000000100030342 testp`runtime.startlockedm + 130
frame #17: 0x00000001000315a9 testp`runtime.schedule + 105
frame #18: 0x0000000100032226 testp`runtime.goexit0 + 470
frame #19: 0x00000001000520fb testp`runtime.mcall + 91
frame #20: 0x000000010000a2f0 testp`runtime.notesleep + 224
frame #21: 0x000000010002fa30 testp`runtime.stopm + 192
frame #22: 0x0000000100030342 testp`runtime.startlockedm + 130
frame #23: 0x00000001000315a9 testp`runtime.schedule + 105
frame #24: 0x0000000100032226 testp`runtime.goexit0 + 470
frame #25: 0x00000001000520fb testp`runtime.mcall + 91
frame #26: 0x000000010002fa30 testp`runtime.stopm + 192
frame #27: 0x0000000100030342 testp`runtime.startlockedm + 130
frame #28: 0x00000001000315a9 testp`runtime.schedule + 105
frame #29: 0x0000000100032226 testp`runtime.goexit0 + 470
frame #30: 0x00000001000520fb testp`runtime.mcall + 91
frame #31: 0x0000000100030342 testp`runtime.startlockedm + 130
frame #32: 0x00000001000315a9 testp`runtime.schedule + 105
frame #33: 0x0000000100032226 testp`runtime.goexit0 + 470
frame #34: 0x00000001000520fb testp`runtime.mcall + 91
frame #35: 0x00000001000315a9 testp`runtime.schedule + 105
frame #36: 0x0000000100032226 testp`runtime.goexit0 + 470
frame #37: 0x00000001000520fb testp`runtime.mcall + 91
frame #38: 0x0000000100032226 testp`runtime.goexit0 + 470
frame #39: 0x00000001000520fb testp`runtime.mcall + 91
frame #40: 0x00000001000520fb testp`runtime.mcall + 91
frame #41: 0x00000001000541c6 testp`runtime.goexit + 6
thread #3
frame #0: 0x000000010003b06a testp`runtime.semrelease1 + 106
frame #1: 0x000000010003ac99 testp`internal/poll.runtime_Semrelease + 57
frame #2: 0x000000010006a1c1 testp`internal/poll.(*FD).destroy + 113
frame #3: 0x0000000100069ae2 testp`internal/poll.(*FD).decref + 66
frame #4: 0x000000010006a25f testp`internal/poll.(*FD).Close + 79
frame #5: 0x000000010006c8ad testp`os.(*file).close + 77
frame #6: 0x000000010006c813 testp`os.(*File).Close + 51
frame #7: 0x000000010007025e testp`main.ProvokeSIGPIPE + 206
frame #8: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #9: 0x00000001000524cb testp`runtime.call32 + 59
frame #10: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #11: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #12: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #13: 0x00000001000541c1 testp`runtime.goexit + 1
frame #14: 0x000000010003ac99 testp`internal/poll.runtime_Semrelease + 57
frame #15: 0x000000010006a1c1 testp`internal/poll.(*FD).destroy + 113
frame #16: 0x0000000100069ae2 testp`internal/poll.(*FD).decref + 66
frame #17: 0x000000010006a25f testp`internal/poll.(*FD).Close + 79
frame #18: 0x000000010006c8ad testp`os.(*file).close + 77
frame #19: 0x000000010006c813 testp`os.(*File).Close + 51
frame #20: 0x000000010007025e testp`main.ProvokeSIGPIPE + 206
frame #21: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #22: 0x00000001000524cb testp`runtime.call32 + 59
frame #23: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #24: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #25: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #26: 0x00000001000541c1 testp`runtime.goexit + 1
frame #27: 0x000000010006a1c1 testp`internal/poll.(*FD).destroy + 113
frame #28: 0x0000000100069ae2 testp`internal/poll.(*FD).decref + 66
frame #29: 0x000000010006a25f testp`internal/poll.(*FD).Close + 79
frame #30: 0x000000010006c8ad testp`os.(*file).close + 77
frame #31: 0x000000010006c813 testp`os.(*File).Close + 51
frame #32: 0x000000010007025e testp`main.ProvokeSIGPIPE + 206
frame #33: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #34: 0x00000001000524cb testp`runtime.call32 + 59
frame #35: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #36: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #37: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #38: 0x00000001000541c1 testp`runtime.goexit + 1
frame #39: 0x0000000100069ae2 testp`internal/poll.(*FD).decref + 66
frame #40: 0x000000010006a25f testp`internal/poll.(*FD).Close + 79
frame #41: 0x000000010006c8ad testp`os.(*file).close + 77
frame #42: 0x000000010006c813 testp`os.(*File).Close + 51
frame #43: 0x000000010007025e testp`main.ProvokeSIGPIPE + 206
frame #44: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #45: 0x00000001000524cb testp`runtime.call32 + 59
frame #46: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #47: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #48: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #49: 0x00000001000541c1 testp`runtime.goexit + 1
frame #50: 0x000000010006a25f testp`internal/poll.(*FD).Close + 79
frame #51: 0x000000010006c8ad testp`os.(*file).close + 77
frame #52: 0x000000010006c813 testp`os.(*File).Close + 51
frame #53: 0x000000010007025e testp`main.ProvokeSIGPIPE + 206
frame #54: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #55: 0x00000001000524cb testp`runtime.call32 + 59
frame #56: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #57: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #58: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #59: 0x00000001000541c1 testp`runtime.goexit + 1
frame #60: 0x000000010006c8ad testp`os.(*file).close + 77
frame #61: 0x000000010006c813 testp`os.(*File).Close + 51
frame #62: 0x000000010007025e testp`main.ProvokeSIGPIPE + 206
frame #63: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #64: 0x00000001000524cb testp`runtime.call32 + 59
frame #65: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #66: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #67: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #68: 0x00000001000541c1 testp`runtime.goexit + 1
frame #69: 0x000000010006c813 testp`os.(*File).Close + 51
frame #70: 0x000000010007025e testp`main.ProvokeSIGPIPE + 206
frame #71: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #72: 0x00000001000524cb testp`runtime.call32 + 59
frame #73: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #74: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #75: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #76: 0x00000001000541c1 testp`runtime.goexit + 1
frame #77: 0x000000010007025e testp`main.ProvokeSIGPIPE + 206
frame #78: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #79: 0x00000001000524cb testp`runtime.call32 + 59
frame #80: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #81: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #82: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #83: 0x00000001000541c1 testp`runtime.goexit + 1
frame #84: 0x0000000100070070 testp`main._cgoexpwrap_956550655198_ProvokeSIGPIPE + 32
frame #85: 0x00000001000524cb testp`runtime.call32 + 59
frame #86: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #87: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #88: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #89: 0x00000001000541c1 testp`runtime.goexit + 1
frame #90: 0x00000001000524cb testp`runtime.call32 + 59
frame #91: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #92: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #93: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #94: 0x00000001000541c1 testp`runtime.goexit + 1
frame #95: 0x00000001000043b7 testp`runtime.cgocallbackg1 + 439
frame #96: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #97: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #98: 0x00000001000541c1 testp`runtime.goexit + 1
frame #99: 0x0000000100004161 testp`runtime.cgocallbackg + 193
frame #100: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #101: 0x00000001000541c1 testp`runtime.goexit + 1
frame #102: 0x0000000100053a9b testp`runtime.cgocallback_gofunc + 155
frame #103: 0x00000001000539ee testp`runtime.cgocallback + 62
frame #104: 0x0000000100070037 testp`_cgoexp_956550655198_ProvokeSIGPIPE + 71
frame #105: 0x000000010005a937 testp`crosscall2 + 55
frame #106: 0x00000001000703c3 testp`ProvokeSIGPIPE at _cgo_export.c:75:2 [opt]
frame #107: 0x0000000100070037 testp`_cgoexp_956550655198_ProvokeSIGPIPE + 71
frame #108: 0x000000010005a937 testp`crosscall2 + 55
frame #109: 0x000000010005a937 testp`crosscall2 + 55
frame #110: 0x00000001000703c3 testp`ProvokeSIGPIPE at _cgo_export.c:75:2 [opt]
frame #111: 0x00000001000703c3 testp`ProvokeSIGPIPE at _cgo_export.c:75:2 [opt]
frame #112: 0x0000000100001ac3 testp`provokeSIGPIPE + 19
frame #113: 0x00007fff6b0352eb libsystem_pthread.dylib`_pthread_body + 126
frame #114: 0x00007fff6b038249 libsystem_pthread.dylib`_pthread_start + 66
frame #115: 0x00007fff6b03440d libsystem_pthread.dylib`thread_start + 13
thread #4
frame #0: 0x00007fff6af79f32 libsystem_kernel.dylib`__semwait_signal + 10
frame #1: 0x00007fff6af05914 libsystem_c.dylib`nanosleep + 199
frame #2: 0x00007fff6af05808 libsystem_c.dylib`usleep + 53
frame #3: 0x0000000100055deb testp`runtime.usleep_trampoline + 11
frame #4: 0x000000010005399d testp`runtime.asmcgocall + 173
frame #5: 0x0000000100045431 testp`runtime.usleep + 49
frame #6: 0x0000000100035b6d testp`runtime.sysmon + 141
frame #7: 0x000000010002e6a3 testp`runtime.mstart1 + 195
frame #8: 0x000000010002e5c6 testp`runtime.mstart + 102
frame #9: 0x000000010007092d testp`crosscall_amd64 at gcc_amd64.S:35
frame #10: 0x0000000100070584 testp`threadentry(v=<unavailable>) at gcc_darwin_amd64.c:64:2 [opt]
frame #11: 0x00007fff6b0352eb libsystem_pthread.dylib`_pthread_body + 126
frame #12: 0x00007fff6b038249 libsystem_pthread.dylib`_pthread_start + 66
frame #13: 0x00007fff6b03440d libsystem_pthread.dylib`thread_start + 13
thread #5
frame #0: 0x00000001000306d5 testp`runtime.findrunnable + 197
frame #1: 0x00000001000317fe testp`runtime.schedule + 702
frame #2: 0x0000000100031b3d testp`runtime.park_m + 157
frame #3: 0x00000001000520fb testp`runtime.mcall + 91
frame #4: 0x00000001000317fe testp`runtime.schedule + 702
frame #5: 0x0000000100031b3d testp`runtime.park_m + 157
frame #6: 0x00000001000520fb testp`runtime.mcall + 91
frame #7: 0x0000000100031b3d testp`runtime.park_m + 157
frame #8: 0x00000001000520fb testp`runtime.mcall + 91
frame #9: 0x00000001000520fb testp`runtime.mcall + 91
frame #10: 0x000000010001ee81 testp`runtime.bgscavenge + 225
frame #11: 0x00000001000541c1 testp`runtime.goexit + 1
frame #12: 0x00000001000541c1 testp`runtime.goexit + 1
thread #6
frame #0: 0x00007fff6af77ef2 libsystem_kernel.dylib`read + 10
frame #1: 0x0000000100055a82 testp`runtime.read_trampoline + 18
frame #2: 0x0000000100053960 testp`runtime.asmcgocall + 112
frame #3: 0x000000010002e560 testp`runtime.startTheWorldWithSema + 640
frame #4: 0x00000001000452d9 testp`runtime.read + 57
frame #5: 0x0000000100027cf7 testp`runtime.sigNoteSleep + 71
frame #6: 0x000000010003eb96 testp`os/signal.signal_recv + 150
frame #7: 0x000000010006f9b2 testp`os/signal.loop + 34
frame #8: 0x00000001000541c1 testp`runtime.goexit + 1
frame #9: 0x0000000100027cf7 testp`runtime.sigNoteSleep + 71
frame #10: 0x000000010003eb96 testp`os/signal.signal_recv + 150
frame #11: 0x000000010006f9b2 testp`os/signal.loop + 34
frame #12: 0x00000001000541c1 testp`runtime.goexit + 1
frame #13: 0x000000010003eb96 testp`os/signal.signal_recv + 150
frame #14: 0x000000010006f9b2 testp`os/signal.loop + 34
frame #15: 0x00000001000541c1 testp`runtime.goexit + 1
frame #16: 0x000000010006f9b2 testp`os/signal.loop + 34
frame #17: 0x00000001000541c1 testp`runtime.goexit + 1
frame #18: 0x00000001000541c1 testp`runtime.goexit + 1
thread #7
frame #0: 0x00007fff6af7986a libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6b03856e libsystem_pthread.dylib`_pthread_cond_wait + 722
frame #2: 0x0000000100055fe0 testp`runtime.pthread_cond_wait_trampoline + 16
frame #3: 0x000000010005399d testp`runtime.asmcgocall + 173
frame #4: 0x0000000100055fd0 testp`runtime.pthread_cond_init_trampoline + 32
frame #5: 0x0000000100045a09 testp`runtime.pthread_cond_wait + 57
frame #6: 0x0000000100027a45 testp`runtime.semasleep + 133
frame #7: 0x000000010000a2f0 testp`runtime.notesleep + 224
frame #8: 0x000000010002fa30 testp`runtime.stopm + 192
frame #9: 0x0000000100030b4f testp`runtime.findrunnable + 1343
frame #10: 0x00000001000317fe testp`runtime.schedule + 702
frame #11: 0x0000000100031b3d testp`runtime.park_m + 157
frame #12: 0x00000001000520fb testp`runtime.mcall + 91
frame #13: 0x0000000100027a45 testp`runtime.semasleep + 133
frame #14: 0x000000010000a2f0 testp`runtime.notesleep + 224
frame #15: 0x000000010002fa30 testp`runtime.stopm + 192
frame #16: 0x0000000100030b4f testp`runtime.findrunnable + 1343
frame #17: 0x00000001000317fe testp`runtime.schedule + 702
frame #18: 0x0000000100031b3d testp`runtime.park_m + 157
frame #19: 0x00000001000520fb testp`runtime.mcall + 91
frame #20: 0x000000010000a2f0 testp`runtime.notesleep + 224
frame #21: 0x000000010002fa30 testp`runtime.stopm + 192
frame #22: 0x0000000100030b4f testp`runtime.findrunnable + 1343
frame #23: 0x00000001000317fe testp`runtime.schedule + 702
frame #24: 0x0000000100031b3d testp`runtime.park_m + 157
frame #25: 0x00000001000520fb testp`runtime.mcall + 91
frame #26: 0x000000010002fa30 testp`runtime.stopm + 192
frame #27: 0x0000000100030b4f testp`runtime.findrunnable + 1343
frame #28: 0x00000001000317fe testp`runtime.schedule + 702
frame #29: 0x0000000100031b3d testp`runtime.park_m + 157
frame #30: 0x00000001000520fb testp`runtime.mcall + 91
frame #31: 0x0000000100030b4f testp`runtime.findrunnable + 1343
frame #32: 0x00000001000317fe testp`runtime.schedule + 702
frame #33: 0x0000000100031b3d testp`runtime.park_m + 157
frame #34: 0x00000001000520fb testp`runtime.mcall + 91
frame #35: 0x00000001000317fe testp`runtime.schedule + 702
frame #36: 0x0000000100031b3d testp`runtime.park_m + 157
frame #37: 0x00000001000520fb testp`runtime.mcall + 91
frame #38: 0x0000000100031b3d testp`runtime.park_m + 157
frame #39: 0x00000001000520fb testp`runtime.mcall + 91
frame #40: 0x00000001000520fb testp`runtime.mcall + 91
frame #41: 0x00000001000159a3 testp`runtime.runfinq + 163
frame #42: 0x00000001000541c1 testp`runtime.goexit + 1
frame #43: 0x00000001000541c1 testp`runtime.goexit + 1
thread #8
frame #0: 0x00007fff6af7986a libsystem_kernel.dylib`__psynch_cvwait + 10
frame #1: 0x00007fff6b03856e libsystem_pthread.dylib`_pthread_cond_wait + 722
frame #2: 0x0000000100055fe0 testp`runtime.pthread_cond_wait_trampoline + 16
frame #3: 0x000000010005399d testp`runtime.asmcgocall + 173
frame #4: 0x0000000100045a09 testp`runtime.pthread_cond_wait + 57
frame #5: 0x0000000100027a45 testp`runtime.semasleep + 133
frame #6: 0x000000010000a2f0 testp`runtime.notesleep + 224
frame #7: 0x000000010002f952 testp`runtime.templateThread + 242
frame #8: 0x000000010002e6a3 testp`runtime.mstart1 + 195
frame #9: 0x000000010002e5c6 testp`runtime.mstart + 102
frame #10: 0x000000010007092d testp`crosscall_amd64 at gcc_amd64.S:35
frame #11: 0x0000000100070584 testp`threadentry(v=<unavailable>) at gcc_darwin_amd64.c:64:2 [opt]
frame #12: 0x00007fff6b0352eb libsystem_pthread.dylib`_pthread_body + 126
frame #13: 0x00007fff6b038249 libsystem_pthread.dylib`_pthread_start + 66
frame #14: 0x00007fff6b03440d libsystem_pthread.dylib`thread_start + 13
From the backtraces it is clear that the main thread received the SIGPIPE while thread #3 called ProvokeSIGPIPE.
CC @ianlancetaylor: I don't know what to do here. There is SO_NOSIGPIPE but that's only for sockets, not pipes. Should we never forward SIGPIPEs on darwin?
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.OS-Darwin