Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

runtime: TestSegv/Segv failure with unexpected return pc on openbsd-386-68 #52043

Open
bcmills opened this issue Mar 30, 2022 · 3 comments
Open

runtime: TestSegv/Segv failure with unexpected return pc on openbsd-386-68 #52043

bcmills opened this issue Mar 30, 2022 · 3 comments
Assignees
Labels
arch-386 NeedsInvestigation OS-OpenBSD
Milestone

Comments

@bcmills
Copy link
Member

@bcmills bcmills commented Mar 30, 2022

--- FAIL: TestSegv (0.00s)
    --- FAIL: TestSegv/Segv (0.12s)
        testenv.go:361: [/tmp/workdir/tmp/go-build374830791/testprogcgo.exe Segv] exit status: exit status 2
        crash_cgo_test.go:611: fatal error: unexpected signal during runtime execution
            [signal SIGSEGV: segmentation violation code=0xb addr=0xb pc=0x545be1b]
            
            runtime stack:
            runtime: g 0: unexpected return pc for runtime.sigpanic called from 0x545be1b
            stack: frame={sp:0x4b1e9284, fp:0x4b1e929c} stack=[0x4b1a98e8,0x4b1e94e8)
            0x4b1e9204:  0x0052dca7 <runtime.dopanic_m+0x00000217>  0x0052d534 <runtime.throw+0x00000064>  0x4b1e9270  0x00000000 
            0x4b1e9214:  0x73406870  0x01000001  0x0000001f  0x0545be1b 
            0x4b1e9224:  0x0000000b  0x0000000b  0x00000001  0x00433d8e 
            0x4b1e9234:  0x0052d785 <runtime.fatalthrow.func1+0x00000045>  0x73406870  0x0052d534 <runtime.throw+0x00000064>  0x4b1e9270 
            0x4b1e9244:  0x00000001  0x4b1e9270  0x0052d534 <runtime.throw+0x00000064>  0x73406870 
            0x4b1e9254:  0x0052d734 <runtime.fatalthrow+0x00000054>  0x4b1e925c  0x0052d740 <runtime.fatalthrow.func1+0x00000000>  0x73406870 
            0x4b1e9264:  0x0052d534 <runtime.throw+0x00000064>  0x4b1e9270  0x0052d534 <runtime.throw+0x00000064>  0x4b1e9274 
            0x4b1e9274:  0x0052d540 <runtime.throw.func1+0x00000000>  0x004361ce  0x0000002a  0x00542cab <runtime.sigpanic+0x0000022b> 
            0x4b1e9284: <0x004361ce  0x0000002a  0x33bb9c30  0x05482afc 
            0x4b1e9294:  0x73406870 !0x0545be1b >0x054592f2  0x4b1e92c0 
            0x4b1e92a4:  0x00000000  0x73406870  0x253fd084  0x4b1e92dc 
            0x4b1e92b4:  0x0543ca82  0x4b1e92c0  0x00000000  0x00000000 
            0x4b1e92c4:  0x00000000  0x00000bb8  0xffffffff  0x569926c7 
            0x4b1e92d4:  0x00000000  0x4b1e9338  0x4b1e92e8  0x0055a9f4 <runtime.usleep_trampoline+0x00000014> 
            0x4b1e92e4:  0x00000003  0x73430480  0x0055973c <runtime.asmcgocall+0x0000004c>  0x4b1e9338 
            0x4b1e92f4:  0x000001d8  0x73406870  0x00000000  0x4b1e9338 
            0x4b1e9304:  0x0000000c  0x257c7228  0x33bb9030  0x0054a0ea <runtime.libcCall+0x0000005a> 
            0x4b1e9314:  0x0055a9e0 <runtime.usleep_trampoline+0x00000000>  0x4b1e9338 
            runtime.throw({0x4361ce, 0x2a})
            	/tmp/workdir/go/src/runtime/panic.go:992 +0x64
            runtime: g 0: unexpected return pc for runtime.sigpanic called from 0x545be1b
            stack: frame={sp:0x4b1e9284, fp:0x4b1e929c} stack=[0x4b1a98e8,0x4b1e94e8)
            0x4b1e9204:  0x0052dca7 <runtime.dopanic_m+0x00000217>  0x0052d534 <runtime.throw+0x00000064>  0x4b1e9270  0x00000000 
            0x4b1e9214:  0x73406870  0x01000001  0x0000001f  0x0545be1b 
            0x4b1e9224:  0x0000000b  0x0000000b  0x00000001  0x00433d8e 
            0x4b1e9234:  0x0052d785 <runtime.fatalthrow.func1+0x00000045>  0x73406870  0x0052d534 <runtime.throw+0x00000064>  0x4b1e9270 
            0x4b1e9244:  0x00000001  0x4b1e9270  0x0052d534 <runtime.throw+0x00000064>  0x73406870 
            0x4b1e9254:  0x0052d734 <runtime.fatalthrow+0x00000054>  0x4b1e925c  0x0052d740 <runtime.fatalthrow.func1+0x00000000>  0x73406870 
            0x4b1e9264:  0x0052d534 <runtime.throw+0x00000064>  0x4b1e9270  0x0052d534 <runtime.throw+0x00000064>  0x4b1e9274 
            0x4b1e9274:  0x0052d540 <runtime.throw.func1+0x00000000>  0x004361ce  0x0000002a  0x00542cab <runtime.sigpanic+0x0000022b> 
            0x4b1e9284: <0x004361ce  0x0000002a  0x33bb9c30  0x05482afc 
            0x4b1e9294:  0x73406870 !0x0545be1b >0x054592f2  0x4b1e92c0 
            0x4b1e92a4:  0x00000000  0x73406870  0x253fd084  0x4b1e92dc 
            0x4b1e92b4:  0x0543ca82  0x4b1e92c0  0x00000000  0x00000000 
            0x4b1e92c4:  0x00000000  0x00000bb8  0xffffffff  0x569926c7 
            0x4b1e92d4:  0x00000000  0x4b1e9338  0x4b1e92e8  0x0055a9f4 <runtime.usleep_trampoline+0x00000014> 
            0x4b1e92e4:  0x00000003  0x73430480  0x0055973c <runtime.asmcgocall+0x0000004c>  0x4b1e9338 
            0x4b1e92f4:  0x000001d8  0x73406870  0x00000000  0x4b1e9338 
            0x4b1e9304:  0x0000000c  0x257c7228  0x33bb9030  0x0054a0ea <runtime.libcCall+0x0000005a> 
            0x4b1e9314:  0x0055a9e0 <runtime.usleep_trampoline+0x00000000>  0x4b1e9338 
            runtime.sigpanic()
            	/tmp/workdir/go/src/runtime/signal_unix.go:802 +0x22b
            
            goroutine 1 [runnable]:
            time.Sleep(0x3b9aca00)
            	/tmp/workdir/go/src/runtime/time.go:185 +0x61
            main.Segv()
            	/tmp/workdir/go/src/runtime/testdata/testprogcgo/segv.go:39 +0xb0
            main.main()
            	/tmp/workdir/go/src/runtime/testdata/testprogcgo/main.go:34 +0x148
            
            goroutine 6 [runnable]:
            main.Segv.func1()
            	/tmp/workdir/go/src/runtime/testdata/testprogcgo/segv.go:28 +0x1a
            created by main.Segv
            	/tmp/workdir/go/src/runtime/testdata/testprogcgo/segv.go:27 +0x76
            
        crash_cgo_test.go:638: unexpectedly saw "runtime: " in output
FAIL
FAIL	runtime	61.363s

(CC @golang/runtime)

@bcmills
Copy link
Member Author

@bcmills bcmills commented Mar 30, 2022

Part of the test is currently skipped on linux/386 as of CL 376656 (#49182, #50504).

Perhaps that skip should be extended to openbsd/386 as well?

(Marking as release-blocker, but since openbsd/386 is not a first class port this can be resolved by updating the skips in the test.)

@bcmills bcmills added OS-OpenBSD release-blocker arch-386 labels Mar 30, 2022
@bcmills bcmills added this to the Go1.19 milestone Mar 30, 2022
@cherrymui cherrymui added the NeedsInvestigation label Apr 5, 2022
@cherrymui
Copy link
Contributor

@cherrymui cherrymui commented Apr 18, 2022

On OpenBSD we use libc for syscalls. We generally cannot unwind the C stack if the signal arrives in the libc functions. Perhaps for short term skipping on all OpenBSD sounds reasonable. But I still don't understand why we get into sigpanic. I think we should not use sigpanic for externally-generated SIGSEGV. Maybe sigcode is not correct on OpenBSD/386?

@bcmills
Copy link
Member Author

@bcmills bcmills commented May 13, 2022

greplogs -l -e '(?ms)FAIL: TestSegv/Segv.*unexpected return pc' --since=2022-01-01
2022-03-18T12:07:27-12eca21/openbsd-386-68

Only one of these this year and it's not a first-class port, and (unlike openbsd-amd64-68) this builder appears not to be a TryBot.

If the builder gets too noisy I'll remove it from triage, but I don't think this needs to be a release-blocker.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arch-386 NeedsInvestigation OS-OpenBSD
Projects
None yet
Development

No branches or pull requests

3 participants