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, cmd/compile: SIGILL during fixedbugs/issue11656.go on aix-ppc64 #44583

Closed
bcmills opened this issue Feb 24, 2021 · 6 comments
Closed
Labels
arch-ppc64x FrozenDueToAge NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. OS-AIX release-blocker
Milestone

Comments

@bcmills
Copy link
Contributor

bcmills commented Feb 24, 2021

# go run run.go -- fixedbugs/issue11656.go
exit status 2
SIGILL: illegal instruction
PC=0xa0001000007156c m=0 sigcode=30
instruction bytes: 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0

goroutine 1 [running]:
runtime: unknown pc 0xa0001000007156c
stack: frame={sp:0xa00010000071538, fp:0x0} stack=[0xa00010000070000,0xa00010000072000)
0x0a00010000071438:  0x0000000000000000  0x00000001000136ac <runtime.heapBits.initSpan+0x00000000000000cc> 
0x0a00010000071448:  0x0000000000000000  0x0000000000000000 
0x0a00010000071458:  0x0000000000000000  0x0a00000026965100 
0x0a00010000071468:  0x0000000000004000  0x0a00000026b5ffff 
0x0a00010000071478:  0x0000000000000800  0x0a00000026965300 
0x0a00010000071488:  0x0000000000004000  0x0a00000026b5ffff 
0x0a00010000071498:  0x00000001000161e0 <runtime.(*mcentral).grow+0x0000000000000180>  0x0000000000000000 
0x0a000100000714a8:  0x000000010001293c <runtime.heapBits.forwardOrBoundary+0x000000000000006c>  0x0000000100026d50 <runtime.(*mheap).alloc+0x0000000000000070> 
0x0a000100000714b8:  0x0a00000026965100  0x0000000000000200 
0x0a000100000714c8:  0x0a00000026b5ffff  0x0000000000000800 
0x0a000100000714d8:  0x0a00000026965300  0x0000000000004000 
0x0a000100000714e8:  0x0a00000026b5ffff  0x0000000000000800 
0x0a000100000714f8:  0x0000400000004000  0x0000000026c91800 
0x0a00010000071508:  0x0000000000000800  0x0000000000000800 
0x0a00010000071518:  0x0000000000000700  0x0a00000026965300 
0x0a00010000071528:  0x0a00000026b5ffff  0x0000000100015e90 <runtime.(*mcentral).cacheSpan+0x0000000000000380> 
0x0a00010000071538: <0x0000000100090df8 <main.f+0x00000000000000a8>  0x0000000000004000 
0x0a00010000071548:  0x0a00000026b5ffff  0x0a00000026965100 
0x0a00010000071558:  0x0000000000004000  0x0a00010000071568 
0x0a00010000071568:  0xf800000000000000  0x0000000000000000 
0x0a00010000071578:  0x0000000000000000  0x0000000000000000 
0x0a00010000071588:  0x0000000000000000  0x0000000000000000 
0x0a00010000071598:  0x0000000000000000  0x0000000000000000 
0x0a000100000715a8:  0x0a00010000071560  0x0000000100090df8 <main.f+0x00000000000000a8> 
0x0a000100000715b8:  0x0a00000026b5ffff  0x0000000000000400 
0x0a000100000715c8:  0x0000000100015270 <runtime.(*mcache).refill+0x00000000000001b0>  0x0000000000000000 
0x0a000100000715d8:  0x000000010000bd74 <runtime.mallocgc+0x0000000000000634>  0x0a00000026c91800 
0x0a000100000715e8:  0x0000000000000000  0x000000011004a610 
0x0a000100000715f8:  0x000000011004a5c0  0x000000010000b59c <runtime.(*mcache).nextFree+0x000000000000009c> 
0x0a00010000071608:  0x00000000000000d0  0x0a00000026964f00 
0x0a00010000071618:  0x000000010000b5b0 <runtime.(*mcache).nextFree+0x00000000000000b0>  0x0000000110051fe8 
0x0a00010000071628:  0x0000000100090df8 <main.f+0x00000000000000a8>  0x0000000000004000 
runtime: unknown pc 0xa0001000007156c
stack: frame={sp:0xa00010000071538, fp:0x0} stack=[0xa00010000070000,0xa00010000072000)
0x0a00010000071438:  0x0000000000000000  0x00000001000136ac <runtime.heapBits.initSpan+0x00000000000000cc> 
0x0a00010000071448:  0x0000000000000000  0x0000000000000000 
0x0a00010000071458:  0x0000000000000000  0x0a00000026965100 
0x0a00010000071468:  0x0000000000004000  0x0a00000026b5ffff 
0x0a00010000071478:  0x0000000000000800  0x0a00000026965300 
0x0a00010000071488:  0x0000000000004000  0x0a00000026b5ffff 
0x0a00010000071498:  0x00000001000161e0 <runtime.(*mcentral).grow+0x0000000000000180>  0x0000000000000000 
0x0a000100000714a8:  0x000000010001293c <runtime.heapBits.forwardOrBoundary+0x000000000000006c>  0x0000000100026d50 <runtime.(*mheap).alloc+0x0000000000000070> 
0x0a000100000714b8:  0x0a00000026965100  0x0000000000000200 
0x0a000100000714c8:  0x0a00000026b5ffff  0x0000000000000800 
0x0a000100000714d8:  0x0a00000026965300  0x0000000000004000 
0x0a000100000714e8:  0x0a00000026b5ffff  0x0000000000000800 
0x0a000100000714f8:  0x0000400000004000  0x0000000026c91800 
0x0a00010000071508:  0x0000000000000800  0x0000000000000800 
0x0a00010000071518:  0x0000000000000700  0x0a00000026965300 
0x0a00010000071528:  0x0a00000026b5ffff  0x0000000100015e90 <runtime.(*mcentral).cacheSpan+0x0000000000000380> 
0x0a00010000071538: <0x0000000100090df8 <main.f+0x00000000000000a8>  0x0000000000004000 
0x0a00010000071548:  0x0a00000026b5ffff  0x0a00000026965100 
0x0a00010000071558:  0x0000000000004000  0x0a00010000071568 
0x0a00010000071568:  0xf800000000000000  0x0000000000000000 
0x0a00010000071578:  0x0000000000000000  0x0000000000000000 
0x0a00010000071588:  0x0000000000000000  0x0000000000000000 
0x0a00010000071598:  0x0000000000000000  0x0000000000000000 
0x0a000100000715a8:  0x0a00010000071560  0x0000000100090df8 <main.f+0x00000000000000a8> 
0x0a000100000715b8:  0x0a00000026b5ffff  0x0000000000000400 
0x0a000100000715c8:  0x0000000100015270 <runtime.(*mcache).refill+0x00000000000001b0>  0x0000000000000000 
0x0a000100000715d8:  0x000000010000bd74 <runtime.mallocgc+0x0000000000000634>  0x0a00000026c91800 
0x0a000100000715e8:  0x0000000000000000  0x000000011004a610 
0x0a000100000715f8:  0x000000011004a5c0  0x000000010000b59c <runtime.(*mcache).nextFree+0x000000000000009c> 
0x0a00010000071608:  0x00000000000000d0  0x0a00000026964f00 
0x0a00010000071618:  0x000000010000b5b0 <runtime.(*mcache).nextFree+0x00000000000000b0>  0x0000000110051fe8 
0x0a00010000071628:  0x0000000100090df8 <main.f+0x00000000000000a8>  0x0000000000004000 

r0   0x0	r1   0xa00010000071538
r2   0x110015c40	r3   0xa00010000071560
r4   0x0	r5   0x1
r6   0x1	r7   0x11004e780
r8   0x0	r9   0x0
r10  0x2	r11  0xa00010000071560
r12  0xa00010000071568	r13  0x1100647e0
r14  0x8	r15  0x1000cf118
r16  0xa00010000094020	r17  0x0
r18  0xa00010000094000	r19  0xffffffffffffffff
r20  0xa000100000715a8	r21  0xa00010000094020
r22  0x0	r23  0x0
r24  0x16	r25  0xd0
r26  0xbadc0ffee0ddf00d	r27  0xbadc0ffee0ddf00d
r28  0xbadc0ffee0ddf00d	r29  0xbadc0ffee0ddf00d
r30  0xa00010000000180	r31  0x10
pc   0xa0001000007156c	ctr  0x0
link 0x100090ddc	xer  0x20000000
ccr  0x44420222	trap 0x0

FAIL	fixedbugs/issue11656.go	1.126s

2021-02-24T15:12:08-07c6583/aix-ppc64
2021-02-23T04:13:10-378f73e/aix-ppc64

CC @mknyszek @jeremyfaller @trex58

@bcmills bcmills added NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. OS-AIX arch-ppc64x labels Feb 24, 2021
@bcmills bcmills added this to the Go1.17 milestone Feb 24, 2021
@dmitshur
Copy link
Contributor

aix/ppc64 looks green on the dashboard recently. Maybe this is resolved or just rare?

I'll move this to Backlog since it doesn't seem this is actively being worked on for Go 1.17 specifically.

@dmitshur dmitshur modified the milestones: Go1.17, Backlog May 21, 2021
@bcmills
Copy link
Contributor Author

bcmills commented Jan 7, 2022

Marking as release-blocker because this is showing up fairly frequently in the builders and should at least be easy to suppress. If no one is actively working on this issue, the test should be skipped on this platform to avoid masking other regressions.

@bcmills bcmills modified the milestones: Backlog, Go1.18 Jan 7, 2022
@bcmills bcmills self-assigned this Jan 7, 2022
@gopherbot
Copy link

Change https://golang.org/cl/376354 mentions this issue: test: skip fixedbugs/issue11656 on aix

@cherrymui
Copy link
Member

I wonder if there is some cache coherence thing? We write some bytes in memory then execute them, but the I-cache may be still holding the old content which may be an illegal instruction?

@gopherbot
Copy link

Change https://golang.org/cl/377314 mentions this issue: test: workaround SIGILL on issue11656 on aix

@bcmills bcmills removed their assignment Jan 11, 2022
jproberts pushed a commit to jproberts/go that referenced this issue Jun 21, 2022
For some reason, aix sometimes executes the bogus function body. This
should never happen as it lives in a no-execute section. It might be
a transient permission blip as the heap grows.

Add a small function to cleanup and synchronize the icache before
jumping to the bogus function to ensure it causes a panic, not SIGILL.

Fixes golang#44583

Change-Id: Iadca62d82bfb70fc62088705dac42a880a1208fa
Reviewed-on: https://go-review.googlesource.com/c/go/+/377314
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Paul Murphy <murp@ibm.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
@golang golang locked and limited conversation to collaborators Jan 11, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-ppc64x FrozenDueToAge NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. OS-AIX release-blocker
Projects
None yet
Development

No branches or pull requests

4 participants