-
Notifications
You must be signed in to change notification settings - Fork 17.8k
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: SIGBUS during runtime.init when running an executable stored on GCS via gcsfuse #48997
Comments
What's at address If after this error occurs, and you the I ask because I'm curious if this is a problem writing the binary out during It is possible one of the fuse limitations listed here is to blame. I think we mmap binaries when writing them, so the mmap portion might be relevant. |
Sure. Here's an output of $ objdump -d -s --start-address=0x4d21dd ./gcs/hello | head
./gcs/hello: file format elf64-x86-64
Contents of section .gopclntab:
4d21dd 020430 502f0100 a2015500 de040e02 0d ..0P/....U......
4d21ed 040a02 0e040c04 0c020a00 002c0429 00 ............,.).
4d21fd 020e40 6e3f0140 493f0a00 a201d001 00 ..@n?.@I?.......
4d220d fc0418 02180209 0218020b 040e0209 1c ................
4d221d 0a0532 0217250a 00000401 06020e01 b3 ..2..%..........
4d222d 010205 00002602 4d010a02 49010a00 02 .....&.M...I....
No, it doesn't. |
The same crash happens when we build the Go program in local disk, copy it to the gcsfuse file system, clear the cache, and then run the program on the gcsfuse file system:
UPDATE: Corrected the stack trace after initially posted the comment. |
That kind of eliminates the write-wasn't-flushed-correctly theory. I'm going to guess that this is some sort of failure in the fuse filesystem attempting to get the pages of the binary. |
I was able to reproduce on a Google Cloud instance.
Those are a lot of scary messages from |
@randall77 Thanks for trying it out! I'm glad to hear that. Yes, I see very similar message. |
I tried putting other binaries in the gcs filesystem (e.g. Executing other binaries gets warnings like these:
Which just makes it look like it was looking for supporting files and not finding them. Executing Go binaries gets warnings like these:
which look much more dire. |
Thank you very much for your help!
Yes. I confirmed it as well.
Sounds like I should file a new issue in gcsfuse, and then refer to this issue. |
Thanks for the investigation.
Yeah, that would be great. Thanks. |
@cherrymui Sure. I'll file a issue in gcsfuse shortly. I confirmed that
|
Could Go register all of its handlers with |
Go does already register all signal handlers with |
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
Ran a Go executable stored on GCS via gcsfuse (v0.35.1) after clearing the cache on Linux.
The following is the repro step. Assumes there is a GCS bucket (
my_bucket
in this case).What did you expect to see?
It runs successfully.
What did you see instead?
Note that the crash doesn't happen if the file is being cached.
The text was updated successfully, but these errors were encountered: