SIGN IN SIGN UP
FuelLabs / fuel-core UNCLAIMED

Rust full node implementation of the Fuel v2 protocol.

0 0 15 Rust

disable coredumps in fuel-core-bin to keep pod restarts fast (#3301)

Rocksdb's C++ static destructors race fuel-core's own DB teardown during
libc atexit, raising SIGABRT with "pthread lock: Invalid argument". The
application-level shutdown has already completed cleanly at that point
(WAL synced, sub-services drained, runtime workers joined), and rocksdb
recovers from the WAL on the next start — so the abort is functionally
harmless. But the SIGABRT triggers a kernel coredump of fuel-core's full
RSS (~2.5 GB on devnet), and writing that out dominates Kubernetes
pod-restart time: ~60 s with the coredump vs ~6 s without.

Validated on devnet: with `core_pattern` redirected so the kernel
discards the coredump pipe, restart of an authority pod consistently
takes 6-8 s. With the default systemd-coredump pipe handler, the same
restart takes 57-86 s. The fuel-core process itself exits in the same ~5
s either way.

Since the coredump produces no actionable diagnostic (it's the rocksdb
static-destructor race, not a fuel-core bug), disable it via
`setrlimit(RLIMIT_CORE, 0, 0)` early in `main`. An escape hatch
`FUEL_CORE_ENABLE_COREDUMP=1` keeps coredumps on for cases where a
genuine crash needs debugging.

The race itself is upstream and well-known:
  rust-lang/rust#83994       (exit() not thread-safe)
  rust-rocksdb#270           (can't gracefully close rocksdb)
  facebook/rocksdb#3453      (Env threads outlive DB)

Please go to the `Preview` tab and select the appropriate sub-template:

* [Classic PR](?expand=1&template=default.md)
* [Bump version](?expand=1&template=bump_version.md)

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
G
Green Baneling committed
dd7fd89a700e16c729a6f1ff4d55fc584979c57b
Parent: a433b39
Committed by GitHub <noreply@github.com> on 5/14/2026, 3:09:31 PM