Summary
When building Rust 1.93.0 and Rust 1.94.1 from source for the host and target x86_64-unknown-haiku from a Linux build (x86_64-unknown-linux-gnu), the error_index_generator tool is built for the target x86_64-unknown-haiku instead of the x86_64-unknown-linux-gnu target.
The last working version was Rust 1.89.0. I have not tried any intermediate builds yet. The #145007 change by @Kobzol is the change that may have broken the build.
Command used
Expected behaviour
In these cross-compiling cases, the build should use the build machine's compiler to build the tool. The tool should then be able to run on the build machine.
Actual behaviour
The bootstrap config tries to run the tool, which then segfaults. Attaching a debugger shows that it segfaults in the _start() function.
Bootstrap configuration (bootstrap.toml)
# Rust 1.83.0+
change-id = 131075
[llvm]
targets = "WebAssembly;X86"
experimental-targets = ""
static-libstdcpp = false
download-ci-llvm = false
[build]
host = ["x86_64-unknown-haiku"]
target = ["x86_64-unknown-haiku", "wasm32-unknown-unknown"]
extended = true
[install]
prefix = "/boot/system"
[rust]
channel = "stable"
lld = true
deny-warnings = false
[target.x86_64-unknown-haiku]
cc = "x86_64-unknown-haiku-gcc"
cxx = "x86_64-unknown-haiku-g++"
ar = "x86_64-unknown-haiku-ar"
linker = "x86_64-unknown-haiku-gcc"
rpath = false
[dist]
compression-formats = ["xz"]
Operating system
Ubuntu 25.04 on WSL2.
HEAD
e408947
Additional context
Build Log Excerpt
Documenting error index (i686-unknown-haiku)
using sysroot /build/rust/build/x86_64-unknown-linux-gnu/stage1
running: LD_LIBRARY_PATH="/build/rust/build/x86_64-unknown-linux-gnu/stage1/lib" "/build/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" "--target" "i686-unknown-haiku" "--print=file-names" "--crate-type=proc-macro" "-" (failure_mode=Exit) (created at src/bootstrap/src/core/builder/mod.rs:1401:23, executed at src/bootstrap/src/core/build_steps/tool.rs:191:21)
Cache hit: "/build/rust/build/x86_64-unknown-linux-gnu/llvm/bin/llvm-config" "--libdir" (failure_mode=Exit)
Building stage2 error_index_generator (stage1:x86_64-unknown-linux-gnu -> stage2:i686-unknown-haiku)
running: cd "/build/rust" && env -u MAKEFLAGS -u MFLAGS AR_i686_unknown_haiku="i586-pc-haiku-ar-x86" CARGO_BUILD_BUILD_DIR="/build/rust/build/x86_64-unknown-linux-gnu/stage2-tools" CARGO_INCREMENTAL="0" CARGO_PROFILE_RELEASE_DEBUG="0" CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS="false" CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS="false" CARGO_PROFILE_RELEASE_STRIP="false" CARGO_TARGET_DIR="/build/rust/build/x86_64-unknown-linux-gnu/stage2-tools" CARGO_TARGET_I686_UNKNOWN_HAIKU_LINKER="i586-pc-haiku-gcc-x86" CC_i686_unknown_haiku="i586-pc-haiku-gcc-x86" CFG_COMPILER_BUILD_TRIPLE="x86_64-unknown-linux-gnu" CFG_COMPILER_HOST_TRIPLE="i686-unknown-haiku" CFG_RELEASE="1.94.1" CFG_RELEASE_CHANNEL="stable" CFG_RELEASE_NUM="1.94.1" CFG_VERSION="1.94.1 (e408947bf 2026-03-25)" CFG_VER_DATE="2026-03-25" CFG_VER_HASH="e408947bfd200af42db322daf0fadfe7e26d3bd1" CFLAGS_i686_unknown_haiku="" CXXFLAGS_i686_unknown_haiku="" CXX_i686_unknown_haiku="i586-pc-haiku-g++-x86" DOC_RUST_LANG_ORG_CHANNEL="https://doc.rust-lang.org/1.94.1" FORCE_ON_BROKEN_PIPE_KILL="-Zon-broken-pipe=kill" LIBC_CHECK_CFG="1" LZMA_API_STATIC="1" RANLIB_i686_unknown_haiku="i586-pc-haiku-ar-x86 s" REAL_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" RUSTBUILD_NATIVE_DIR="/build/rust/build/i686-unknown-haiku/native" RUSTC="/build/rust/build/bootstrap/debug/rustc" RUSTC_BOOTSTRAP="1" RUSTC_BREAK_ON_ICE="1" RUSTC_ERROR_METADATA_DST="/build/rust/build/tmp/extended-error-metadata" RUSTC_HOST_FLAGS="--check-cfg=cfg(bootstrap)" RUSTC_INSTALL_BINDIR="bin" RUSTC_LIBDIR="/build/rust/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTC_LINK_STD_INTO_RUSTC_DRIVER="1" RUSTC_LINT_FLAGS="-Wrust_2018_idioms -Wunused_lifetimes" RUSTC_REAL="/build/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" RUSTC_SNAPSHOT="/build/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" RUSTC_SNAPSHOT_LIBDIR="/build/rust/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTC_STAGE="1" RUSTC_SYSROOT="/build/rust/build/x86_64-unknown-linux-gnu/stage1" RUSTC_TLS_MODEL_INITIAL_EXEC="1" RUSTC_VERBOSE="1" RUSTC_WRAPPER="/build/rust/build/bootstrap/debug/rustc" RUSTDOC="/build/rust/build/bootstrap/debug/rustdoc" RUSTDOCFLAGS="--cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zannotate-moves -Zunstable-options --check-cfg=cfg(bootstrap) --check-cfg=cfg(rust_analyzer) -Wrustdoc::invalid_codeblock_attributes --crate-version 1.94.1\t(e408947bf\t2026-03-25) -Clinker=i586-pc-haiku-gcc-x86" RUSTDOC_LIBDIR="/build/rust/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTDOC_REAL="/path/to/nowhere/rustdoc/not/required" RUSTFLAGS="--cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zannotate-moves -Zunstable-options --check-cfg=cfg(bootstrap) --check-cfg=cfg(rust_analyzer) -Zdual-proc-macros -Zmacro-backtrace -Csplit-debuginfo=off -Clink-arg=-L/build/rust/build/x86_64-unknown-linux-gnu/llvm/lib\n -Alinker-messages -Zunstable-options" RUST_TEST_THREADS="8" SYSROOT="/build/rust/build/x86_64-unknown-linux-gnu/stage1" __CARGO_DEFAULT_LIB_METADATA="stabletool-rustc1.94.1" "/build/rust/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "build" "-Zwarnings" "--target" "i686-unknown-haiku" "-Zdual-proc-macros" "-Zbinary-dep-depinfo" "-j" "8" "-Zroot-dir=/build/rust" "--release" "--manifest-path" "/build/rust/src/tools/error_index_generator/Cargo.toml" "--message-format" "json-render-diagnostics" (failure_mode=Exit)
Finished `release` profile [optimized] target(s) in 0.29s
running: LD_LIBRARY_PATH="/build/rust/build/i686-unknown-haiku/stage2/lib/rustlib/i686-unknown-haiku/lib:/build/rust/build/i686-unknown-haiku/stage2/lib" "/build/rust/build/x86_64-unknown-linux-gnu/stage2-tools-bin/error_index_generator" "html" "/build/rust/build/i686-unknown-haiku/doc" "1.94.1" (failure_mode=Exit) (created at src/bootstrap/src/core/build_steps/tool.rs:570:23, executed at src/bootstrap/src/core/build_steps/doc.rs:1258:14)
Command `LD_LIBRARY_PATH="/build/rust/build/i686-unknown-haiku/stage2/lib/rustlib/i686-unknown-haiku/lib:/build/rust/build/i686-unknown-haiku/stage2/lib" "/build/rust/build/x86_64-unknown-linux-gnu/stage2-tools-bin/error_index_generator" "html" "/build/rust/build/i686-unknown-haiku/doc" "1.94.1" (failure_mode=Exit)` failed with exit code 1
Created at: src/bootstrap/src/core/build_steps/tool.rs:570:23
Executed at: src/bootstrap/src/core/build_steps/doc.rs:1258:14
Traceback (most recent call last):
File "/build/rust/./x.py", line 53, in <module>
bootstrap.main()
File "/build/rust/src/bootstrap/bootstrap.py", line 1410, in main
bootstrap(args)
File "/build/rust/src/bootstrap/bootstrap.py", line 1370, in bootstrap
run(args, env=env, verbose=build.verbose, is_bootstrap=True)
File "/build/rust/src/bootstrap/bootstrap.py", line 237, in run
raise RuntimeError(err)
RuntimeError: failed to run: /build/rust/build/bootstrap/debug/bootstrap -j 8 -v dist
Summary
When building Rust 1.93.0 and Rust 1.94.1 from source for the host and target
x86_64-unknown-haikufrom a Linux build (x86_64-unknown-linux-gnu), theerror_index_generatortool is built for the targetx86_64-unknown-haikuinstead of thex86_64-unknown-linux-gnutarget.The last working version was Rust 1.89.0. I have not tried any intermediate builds yet. The #145007 change by @Kobzol is the change that may have broken the build.
Command used
Expected behaviour
In these cross-compiling cases, the build should use the build machine's compiler to build the tool. The tool should then be able to run on the build machine.
Actual behaviour
The bootstrap config tries to run the tool, which then segfaults. Attaching a debugger shows that it segfaults in the
_start()function.Bootstrap configuration (bootstrap.toml)
Operating system
Ubuntu 25.04 on WSL2.
HEAD
e408947
Additional context
Build Log Excerpt
Documenting error index (i686-unknown-haiku) using sysroot /build/rust/build/x86_64-unknown-linux-gnu/stage1 running: LD_LIBRARY_PATH="/build/rust/build/x86_64-unknown-linux-gnu/stage1/lib" "/build/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" "--target" "i686-unknown-haiku" "--print=file-names" "--crate-type=proc-macro" "-" (failure_mode=Exit) (created at src/bootstrap/src/core/builder/mod.rs:1401:23, executed at src/bootstrap/src/core/build_steps/tool.rs:191:21) Cache hit: "/build/rust/build/x86_64-unknown-linux-gnu/llvm/bin/llvm-config" "--libdir" (failure_mode=Exit) Building stage2 error_index_generator (stage1:x86_64-unknown-linux-gnu -> stage2:i686-unknown-haiku) running: cd "/build/rust" && env -u MAKEFLAGS -u MFLAGS AR_i686_unknown_haiku="i586-pc-haiku-ar-x86" CARGO_BUILD_BUILD_DIR="/build/rust/build/x86_64-unknown-linux-gnu/stage2-tools" CARGO_INCREMENTAL="0" CARGO_PROFILE_RELEASE_DEBUG="0" CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS="false" CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS="false" CARGO_PROFILE_RELEASE_STRIP="false" CARGO_TARGET_DIR="/build/rust/build/x86_64-unknown-linux-gnu/stage2-tools" CARGO_TARGET_I686_UNKNOWN_HAIKU_LINKER="i586-pc-haiku-gcc-x86" CC_i686_unknown_haiku="i586-pc-haiku-gcc-x86" CFG_COMPILER_BUILD_TRIPLE="x86_64-unknown-linux-gnu" CFG_COMPILER_HOST_TRIPLE="i686-unknown-haiku" CFG_RELEASE="1.94.1" CFG_RELEASE_CHANNEL="stable" CFG_RELEASE_NUM="1.94.1" CFG_VERSION="1.94.1 (e408947bf 2026-03-25)" CFG_VER_DATE="2026-03-25" CFG_VER_HASH="e408947bfd200af42db322daf0fadfe7e26d3bd1" CFLAGS_i686_unknown_haiku="" CXXFLAGS_i686_unknown_haiku="" CXX_i686_unknown_haiku="i586-pc-haiku-g++-x86" DOC_RUST_LANG_ORG_CHANNEL="https://doc.rust-lang.org/1.94.1" FORCE_ON_BROKEN_PIPE_KILL="-Zon-broken-pipe=kill" LIBC_CHECK_CFG="1" LZMA_API_STATIC="1" RANLIB_i686_unknown_haiku="i586-pc-haiku-ar-x86 s" REAL_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" RUSTBUILD_NATIVE_DIR="/build/rust/build/i686-unknown-haiku/native" RUSTC="/build/rust/build/bootstrap/debug/rustc" RUSTC_BOOTSTRAP="1" RUSTC_BREAK_ON_ICE="1" RUSTC_ERROR_METADATA_DST="/build/rust/build/tmp/extended-error-metadata" RUSTC_HOST_FLAGS="--check-cfg=cfg(bootstrap)" RUSTC_INSTALL_BINDIR="bin" RUSTC_LIBDIR="/build/rust/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTC_LINK_STD_INTO_RUSTC_DRIVER="1" RUSTC_LINT_FLAGS="-Wrust_2018_idioms -Wunused_lifetimes" RUSTC_REAL="/build/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" RUSTC_SNAPSHOT="/build/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc" RUSTC_SNAPSHOT_LIBDIR="/build/rust/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTC_STAGE="1" RUSTC_SYSROOT="/build/rust/build/x86_64-unknown-linux-gnu/stage1" RUSTC_TLS_MODEL_INITIAL_EXEC="1" RUSTC_VERBOSE="1" RUSTC_WRAPPER="/build/rust/build/bootstrap/debug/rustc" RUSTDOC="/build/rust/build/bootstrap/debug/rustdoc" RUSTDOCFLAGS="--cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zannotate-moves -Zunstable-options --check-cfg=cfg(bootstrap) --check-cfg=cfg(rust_analyzer) -Wrustdoc::invalid_codeblock_attributes --crate-version 1.94.1\t(e408947bf\t2026-03-25) -Clinker=i586-pc-haiku-gcc-x86" RUSTDOC_LIBDIR="/build/rust/build/x86_64-unknown-linux-gnu/stage1/lib" RUSTDOC_REAL="/path/to/nowhere/rustdoc/not/required" RUSTFLAGS="--cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zannotate-moves -Zunstable-options --check-cfg=cfg(bootstrap) --check-cfg=cfg(rust_analyzer) -Zdual-proc-macros -Zmacro-backtrace -Csplit-debuginfo=off -Clink-arg=-L/build/rust/build/x86_64-unknown-linux-gnu/llvm/lib\n -Alinker-messages -Zunstable-options" RUST_TEST_THREADS="8" SYSROOT="/build/rust/build/x86_64-unknown-linux-gnu/stage1" __CARGO_DEFAULT_LIB_METADATA="stabletool-rustc1.94.1" "/build/rust/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "build" "-Zwarnings" "--target" "i686-unknown-haiku" "-Zdual-proc-macros" "-Zbinary-dep-depinfo" "-j" "8" "-Zroot-dir=/build/rust" "--release" "--manifest-path" "/build/rust/src/tools/error_index_generator/Cargo.toml" "--message-format" "json-render-diagnostics" (failure_mode=Exit) Finished `release` profile [optimized] target(s) in 0.29s running: LD_LIBRARY_PATH="/build/rust/build/i686-unknown-haiku/stage2/lib/rustlib/i686-unknown-haiku/lib:/build/rust/build/i686-unknown-haiku/stage2/lib" "/build/rust/build/x86_64-unknown-linux-gnu/stage2-tools-bin/error_index_generator" "html" "/build/rust/build/i686-unknown-haiku/doc" "1.94.1" (failure_mode=Exit) (created at src/bootstrap/src/core/build_steps/tool.rs:570:23, executed at src/bootstrap/src/core/build_steps/doc.rs:1258:14) Command `LD_LIBRARY_PATH="/build/rust/build/i686-unknown-haiku/stage2/lib/rustlib/i686-unknown-haiku/lib:/build/rust/build/i686-unknown-haiku/stage2/lib" "/build/rust/build/x86_64-unknown-linux-gnu/stage2-tools-bin/error_index_generator" "html" "/build/rust/build/i686-unknown-haiku/doc" "1.94.1" (failure_mode=Exit)` failed with exit code 1 Created at: src/bootstrap/src/core/build_steps/tool.rs:570:23 Executed at: src/bootstrap/src/core/build_steps/doc.rs:1258:14 Traceback (most recent call last): File "/build/rust/./x.py", line 53, in <module> bootstrap.main() File "/build/rust/src/bootstrap/bootstrap.py", line 1410, in main bootstrap(args) File "/build/rust/src/bootstrap/bootstrap.py", line 1370, in bootstrap run(args, env=env, verbose=build.verbose, is_bootstrap=True) File "/build/rust/src/bootstrap/bootstrap.py", line 237, in run raise RuntimeError(err) RuntimeError: failed to run: /build/rust/build/bootstrap/debug/bootstrap -j 8 -v dist