Skip to content

Linking fails when using dev_build with GCC sanitizers on linux. #109158

@WhalesState

Description

@WhalesState

Tested versions

master

System information

Fedora - Godot 4.x.

reproduced in:
4.5.dev1
4.x - current master

Not reproduced in:
4.4.1.stable

Issue description

when building the editor with santitizer, linking fails with hundreds of errors when using mold linker, and when using the default ld linker it throws those errors.

build flags:
scons dev_build=yes precision=double use_asan=yes use_ubsan=yes module_text_server_fb_enabled=yes accesskit_sdk_path=/home/fedora/godot/bin/accesskit-c-0.17.0

bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `embree::Lock<embree::MutexSys>::Lock(embree::MutexSys&)':
/home/fedora/godot/thirdparty/embree/kernels/common/../../common/sys/mutex.h:95:(.text+0x82): relocation truncated to fit: R_X86_64_32S against `.bss'
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `rtcNewDevice':
/home/fedora/godot/thirdparty/embree/kernels/common/rtcore.cpp:28:(.text+0x15a): relocation truncated to fit: R_X86_64_32S against symbol `__ubsan_vptr_type_cache' defined in .dynbss section in /usr/lib/gcc/x86_64-redhat-linux/15/../../../../lib64/crt1.o
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `embree::Lock<embree::MutexSys>::Lock(embree::MutexSys&)':
/home/fedora/godot/thirdparty/embree/kernels/common/../../common/sys/mutex.h:95:(.text+0x487): relocation truncated to fit: R_X86_64_32S against `.bss'
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `rtcRetainDevice':
/home/fedora/godot/thirdparty/embree/kernels/common/rtcore.cpp:118:(.text+0x51f): relocation truncated to fit: R_X86_64_32S against symbol `__ubsan_vptr_type_cache' defined in .dynbss section in /usr/lib/gcc/x86_64-redhat-linux/15/../../../../lib64/crt1.o
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `embree::Lock<embree::MutexSys>::Lock(embree::MutexSys&)':
/home/fedora/godot/thirdparty/embree/kernels/common/../../common/sys/mutex.h:95:(.text+0x8a9): relocation truncated to fit: R_X86_64_32S against `.bss'
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `rtcReleaseDevice':
/home/fedora/godot/thirdparty/embree/kernels/common/rtcore.cpp:129:(.text+0x941): relocation truncated to fit: R_X86_64_32S against symbol `__ubsan_vptr_type_cache' defined in .dynbss section in /usr/lib/gcc/x86_64-redhat-linux/15/../../../../lib64/crt1.o
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `embree::RefCount::refDec()':
/home/fedora/godot/thirdparty/embree/kernels/common/../../common/sys/ref.h:22:(.text+0xa51): relocation truncated to fit: R_X86_64_32S against symbol `__ubsan_vptr_type_cache' defined in .dynbss section in /usr/lib/gcc/x86_64-redhat-linux/15/../../../../lib64/crt1.o
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `embree::Lock<embree::MutexSys>::Lock(embree::MutexSys&)':
/home/fedora/godot/thirdparty/embree/kernels/common/../../common/sys/mutex.h:95:(.text+0xe0b): relocation truncated to fit: R_X86_64_32S against `.bss'
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `rtcGetDeviceProperty':
/home/fedora/godot/thirdparty/embree/kernels/common/rtcore.cpp:140:(.text+0xeb8): relocation truncated to fit: R_X86_64_32S against symbol `__ubsan_vptr_type_cache' defined in .dynbss section in /usr/lib/gcc/x86_64-redhat-linux/15/../../../../lib64/crt1.o
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `embree::Lock<embree::MutexSys>::Lock(embree::MutexSys&)':
/home/fedora/godot/thirdparty/embree/kernels/common/../../common/sys/mutex.h:95:(.text+0x1093): relocation truncated to fit: R_X86_64_32S against `.bss'
bin/obj/modules/libmodule_raycast.linuxbsd.editor.dev.double.x86_64.san.a(rtcore.linuxbsd.editor.dev.double.x86_64.san.o): in function `rtcSetDeviceProperty':
/home/fedora/godot/thirdparty/embree/kernels/common/rtcore.cpp:153:(.text+0x1144): additional relocation overflows omitted from the output
/usr/lib/gcc/x86_64-redhat-linux/15/libstdc++.a(eh_terminate.o): in function `std::set_terminate(void (*)())':
(.text._ZSt13set_terminatePFvvE+0xf): failed to convert GOTPCREL relocation against '_ZN10__cxxabiv119__terminate_handlerE'; relink with --no-relax
/usr/bin/ld: final link failed

Note: building with same flags + disable_3d=yes using this PR #105579 doesn't reproduce the issue, which have allowed me to build with debug symbols for a previous crash related to GH actions.

Steps to reproduce

build the editor with those flags on linux: scons dev_build=yes precision=double use_asan=yes use_ubsan=yes

Minimal reproduction project (MRP)

N/A

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Up for grabs

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions