Closed
Description
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:
- is 6f6761e2f1b0d7ca a hash value?
- if so, how it's calculated?
- what's the probability of collsion?
- howto avoid if it's collision?
thanks.