milenkovicm commented on issue #2043:
URL:
https://github.com/apache/datafusion-ballista/issues/2043#issuecomment-4996956681
This is a linker warning from Apple's `ld` (specifically the newer `ld`
shipped with recent Xcode/Command Line Tools, sometimes called `ld-prime` or
the "new linker"), not an error — your build still succeeds.
**What it means**
- `__eh_frame` is the ELF/Mach-O section that stores stack-unwinding
metadata: the information the runtime uses to walk the stack and run
destructors/cleanup when a panic or C++-style exception propagates.
- Rust generates this unwinding info for every function that could be
unwound through (relevant when `panic = "unwind"`, which is the default), and
with a large binary — like `ballista-executor`, which likely statically links a
huge dependency graph (Arrow, DataFusion, Tonic/gRPC, etc.) — this section can
grow very large.
- Apple's linker builds a **compact unwind table**, a more efficient
macOS-specific format that summarizes unwind info for fast lookup during
exception handling. It tries to encode `__eh_frame` entries as *offsets* into
this compact table.
- Those offsets have a fixed bit width, and if `__eh_frame` exceeds 16MB,
some entries can't be represented in the compact table anymore. The linker just
warns you and falls back to slower unwinding paths for the frames it couldn't
compact.
**Practical impact**
- Almost none for most programs. It only affects the speed of unwinding
(i.e., panics/exceptions), not normal execution speed.
- Since Rust binaries mostly `panic = "abort"` in release builds or rarely
unwind in hot paths, you're unlikely to notice anything.
**If you want to silence/avoid it**
- Set `panic = "abort"` in your release profile (in `Cargo.toml`):
```toml
[profile.release]
panic = "abort"
```
This removes unwind tables almost entirely, but means panics can no longer
be caught (`catch_unwind` won't work) — fine for most server binaries, but
check if anything in your stack relies on catching panics.
- Strip debug info / reduce codegen units, which can shrink the section
somewhat, though this is less reliable for actually fixing it.
- Otherwise, it's generally safe to just ignore this warning — it's
cosmetic/informational for large Rust binaries on modern macOS toolchains, and
you'll see it on many big Rust projects (this is a known, common warning in the
Rust community with big crates like DataFusion/Arrow-based binaries).
(LLM generated)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]