Open egonspace opened 2 months ago
It seems to be killed by go-wemix or OS context beacuse the top of trace is runtime.cgocall
instead of C functions in rocksdb.
runtime/cgocall.go:158 points entersyscall()
which is implemented as assembly.
Since go 1.19.3, the minor versions including syscall change are 1.19.7 and 1.19.9.
IMHO, this issue is related to rlimit which is handled by go-wemix. (More precisely, RLIMIT_NOFILE
resource)
Hence, go 1.19.9 or later will resolve this issue.
Also check rlimit setting for RLIMIT_NOFILE
is enough before running gwemix.
I don't think so. In all cases where the program crashes in C code, the top of the stack trace in Go will only show cgocall
. To find out where exactly the crash occurred in the C code, we'll need to generate a core dump and use gdb to investigate.
If it were an rlimit
issue, it wouldn't have resulted in a SIGSEGV. I think it's more likely an issue with rocksdb
than with golang
.
runtime.SetCgoTraceback()
shows C frames but gwemix does not set this option, resulting runtime.cgocall()
becomes the top most frame.
This issue is related to rocksdb as originally mentioned.
System information
gwemix version:
Gwemix/v0.10.8-stable-53273fcb/linux-amd64/go1.19.3
OS & Version: Linux Commit hash :53273fcb3729c477c62cd0215d4c90dcd3cb5d83
Expected behaviour
Actual behaviour
An en host was killed with these logs
It seems to be an issue with
rocksdb
, and the version being used isv6.27.3
, which is quite outdated. Since then, many bug fixes have been made, and we will monitor the situation by operating some devnet EN host withgo-wemix
built withrocksdb v6.28.2
. If the issue occurs again, I will document the details in this issue.