Skip to content

hash collision on /usr/lib/rust/lib-1.84.1/librustc_driver-???.so #136701

Closed
@clan

Description

@clan

https://bugs.gentoo.org/949374

We have users' report on unable to run rustc after build rust 1.84.0 and 1.84.1 (no report for earlier version), and it is high suspected the problem is on the collision on librustc_driver-???.so, two version (1.84.0 & 1.84.1) use the same filename (in different path), so rustc-1.84.1 will use librustc_driver in rust 1.84.0, then failed with error:

/usr/lib/rust/1.84.1/bin/rustc: symbol lookup error: /usr/lib/rust/1.84.1/bin/rustc: undefined symbol: _ZN3std2rt19lang_start_internal17h12de313c8fa04a78E

ldd confirm:

> demize@yveltal ~ $ lddtree /usr/bin/rustc-*
> rustc-1.84.0 => /usr/bin/rustc-1.84.0 (interpreter => /lib64/ld-linux-x86-64.so.2)
>     librustc_driver-6f6761e2f1b0d7ca.so => /usr/lib/rust/lib-1.84.0/librustc_driver-6f6761e2f1b0d7ca.so
>         libLLVM.so.19.1+libcxx => /usr/lib/llvm/19/lib64/libLLVM.so.19.1+libcxx
>             libffi.so.8 => /usr/lib64/libffi.so.8
>             libz.so.1 => /usr/lib64/libz.so.1
>             libzstd.so.1 => /usr/lib64/libzstd.so.1
>         libc++.so.1 => /usr/lib64/libc++.so.1
>         libc++abi.so.1 => /usr/lib64/libc++abi.so.1
>         libunwind.so.1 => /usr/lib64/libunwind.so.1
>         libm.so.6 => /usr/lib64/libm.so.6
>         ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
>     libc.so.6 => /usr/lib64/libc.so.6
> rustc-1.84.1 => /usr/bin/rustc-1.84.1 (interpreter => /lib64/ld-linux-x86-64.so.2)
>     librustc_driver-6f6761e2f1b0d7ca.so => /usr/lib/rust/lib-1.84.0/librustc_driver-6f6761e2f1b0d7ca.so
>         libLLVM.so.19.1+libcxx => /usr/lib/llvm/19/lib64/> libLLVM.so.19.1+libcxx
>             libffi.so.8 => /usr/lib64/libffi.so.8
>             libz.so.1 => /usr/lib64/libz.so.1
>             libzstd.so.1 => /usr/lib64/libzstd.so.1
>         libc++.so.1 => /usr/lib64/libc++.so.1
>         libc++abi.so.1 => /usr/lib64/libc++abi.so.1
>         libunwind.so.1 => /usr/lib64/libunwind.so.1
>         libm.so.6 => /usr/lib64/libm.so.6
>         ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
>     libc.so.6 => /usr/lib64/libc.so.6

both rustc 1.84.0 & 1.84.1 use librustc_driver.so with the same name 'librustc_driver-6f6761e2f1b0d7ca.so'

My question is:

  1. is 6f6761e2f1b0d7ca a hash value?
  2. if so, how it's calculated?
  3. what's the probability of collsion?
  4. howto avoid if it's collision?

thanks.

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions