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]

Reply via email to