-
Notifications
You must be signed in to change notification settings - Fork 18k
runtime: fatal error: stack not a power of 2 when using go 1.4.2 #12192
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
Comments
Does this happen consistently? Would it be possible for you to try the 1.5 release candidate? |
It is consistent. With go version devel +3c43158 Mon Aug 17 06:58:16 2015 +0000 freebsd/amd64:
|
It looks like the stack entry of G structure is corrupted. When the G finishes and we try to free its stack, we trigger this failure. Any cgo or unsafe used by this code? I don't see how this corruption might happen otherwise. It looks like the corrupted part of the G is the first word. No deadead or anything else that might suggest GC involvement. |
The code is open to try at github: github.com/g3rk6/gopensslproxy |
@tsgan your code has data races, please fix the races and see if the problem still occurs. |
On Wed, Aug 19, 2015 at 12:57 PM, Dave Cheney notifications@github.com
Well, go test -race reports nothing. thanks a lot,
|
This is what I see when I run the tests with race enabled
|
Just some update on Mac OS X.
|
When using go1.3.3 it doesn't crash, it crashes starting from go1.4 |
This is memory corruption. It is most likely caused by bugs in your program. I'm sorry we don't have a better way to pin down exactly what part of your program causes it, but the usual suspects are uses of unsafe, uses of cgo, uses of unsafe and cgo together, and data races. At the least we need you to make Thanks. |
Please educate me then why this works for go1.3.3? |
Please educate me then why this works for go1.3.3? thanks, On Fri, Nov 6, 2015 at 1:22 AM, Russ Cox notifications@github.com wrote:
|
If the problem is due to some sort of memory corruption, then from our point of view it's not interesting why it works with Go 1.3.3. Memory corruption is unpredictable. Sometimes it works, sometimes it fails. You can track down the specific reason why it works with 1.3.3, but it won't be an interesting reason. It will amount to just being lucky. |
go test passes for Linux but crashes on FreeBSD:
The text was updated successfully, but these errors were encountered: