I can’t link to our own .so file that depends on libtbb.so. It looks like TBB is throwing an exception. I can link with Unreal using the same code. TBB has been built with GCC. (I’m trying to get it build with clang separately.)
Should this be possible?
Is there a reason TBB in ThirdParty is not support on Linux?
Is there something on dl load that Unreal prevents TBB from catching its exception?
The crash appears to be coming when TBB runs this code: oneTBB/tbb_misc.cpp at a2cfdfe946933cbe38bffe1d8086ae36f06691a3 · oneapi-src/oneTBB · GitHub
tbb::internal::gcc_rethrow_exception_broken () at ../../src/tbb/tbb_misc.cpp:194
Call stack:
$./UE4Editor
...
terminating with unexpected foreign exception
Program received signal SIGABRT, Aborted.
0x00007fffe649dc37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007fffe649dc37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007fffe64a1028 in __GI_abort () at abort.c:89
#2 0x00007ffff6743b2d in abort_message () from /home/sgundry/UnrealEngine/Engine/Binaries/Linux/../../../Engine/Binaries/ThirdParty/CEF3/Linux/libcef.so
#3 0x00007ffff6743ba0 in default_terminate_handler() () from /home/sgundry/UnrealEngine/Engine/Binaries/Linux/../../../Engine/Binaries/ThirdParty/CEF3/Linux/libcef.so
#4 0x00007ffff6740c83 in std::__terminate(void (*)()) () from /home/sgundry/UnrealEngine/Engine/Binaries/Linux/../../../Engine/Binaries/ThirdParty/CEF3/Linux/libcef.so
#5 0x00007ffff6740d00 in std::terminate() () from /home/sgundry/UnrealEngine/Engine/Binaries/Linux/../../../Engine/Binaries/ThirdParty/CEF3/Linux/libcef.so
#6 0x00007ffff6743c54 in default_unexpected_handler() () from /home/sgundry/UnrealEngine/Engine/Binaries/Linux/../../../Engine/Binaries/ThirdParty/CEF3/Linux/libcef.so
#7 0x00007fffe1c0847a in __gxx_dependent_exception_cleanup (code=<optimized out>, exc=<optimized out>) at ../../../../src/libstdc++-v3/libsupc++/eh_ptr.cc:197
#8 0x00007ffff674259c in __cxa_end_catch () from /home/sgundry/UnrealEngine/Engine/Binaries/Linux/../../../Engine/Binaries/ThirdParty/CEF3/Linux/libcef.so
#9 0x00007fff7b12cc11 in tbb::internal::gcc_rethrow_exception_broken () at ../../src/tbb/tbb_misc.cpp:194
#10 0x00007fff7b12f5cb in tbb::internal::governor::acquire_resources () at ../../src/tbb/governor.cpp:80
#11 0x00007fff7b13aac0 in __TBB_InitOnce (this=<optimized out>) at ../../src/tbb/tbb_main.h:71
#12 __sti___ZN48_INTERNAL_26_______src_tbb_tbb_main_cpp_9b42cb883tbb8internal28__TBB_InitOnceHiddenInstanceE () at ../../src/tbb/tbb_main.cpp:75
#13 __sti__$E () at ../../src/tbb/tbb_main.cpp:56
#14 0x00007ffff7dea20a in call_init (l=<optimized out>, argc=argc@entry=2, argv=argv@entry=0x7fffffffd908, env=env@entry=0x6b1430) at dl-init.c:78
#15 0x00007ffff7dea2f3 in call_init (env=<optimized out>, argv=<optimized out>, argc=<optimized out>, l=<optimized out>) at dl-init.c:36
#16 _dl_init (main_map=main_map@entry=0x309ede0, argc=2, argv=0x7fffffffd908, env=0x6b1430) at dl-init.c:126
#17 0x00007ffff7deef87 in dl_open_worker (a=a@entry=0x7fffffffb4e8) at dl-open.c:592
#18 0x00007ffff7dea0c4 in _dl_catch_error (objname=objname@entry=0x7fffffffb4d8, errstring=errstring@entry=0x7fffffffb4e0, mallocedp=mallocedp@entry=0x7fffffffb4d0, operate=operate@entry=0x7ffff7deea70 <dl_open_worker>, args=args@entry=0x7fffffffb4e8) at dl-error.c:187
#19 0x00007ffff7dee48b in _dl_open (file=0x7fffffffc0b8 "/home/sgundry/Documents/UnrealProjects/MyProject2/Binaries/Linux/libUE4Editor-MyProject2.so", mode=-2147483647, caller_dlopen=<optimized out>, nsid=-2, argc=2, argv=0x7fffffffd908, env=0x6b1430) at dl-open.c:676
#20 0x00007fffe626402b in dlopen_doit (a=a@entry=0x7fffffffb700) at dlopen.c:66
#21 0x00007ffff7dea0c4 in _dl_catch_error (objname=0x66f8e0, errstring=0x66f8e8, mallocedp=0x66f8d8, operate=0x7fffe6263fd0 <dlopen_doit>, args=0x7fffffffb700) at dl-error.c:187
#22 0x00007fffe626462d in _dlerror_run (operate=operate@entry=0x7fffe6263fd0 <dlopen_doit>, args=args@entry=0x7fffffffb700) at dlerror.c:163
#23 0x00007fffe62640c1 in __dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:87
#24 0x00007ffff1deda84 in FLinuxPlatformProcess::GetDllHandle (Filename=<optimized out>) at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Core/Private/Linux/LinuxPlatformProcess.cpp:38
#25 0x00007ffff1f13bb9 in FModuleManager::LoadModuleWithFailureReason (this=<optimized out>, InModuleName=..., OutFailureReason=<optimized out>, bWasReloaded=<optimized out>) at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Core/Private/Modules/ModuleManager.cpp:452
#26 0x00007fffeb8f6bda in FModuleDescriptor::LoadModulesForPhase (LoadingPhase=<optimized out>, Modules=..., ModuleLoadErrors=...) at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Projects/Private/ModuleDescriptor.cpp:412
#27 0x00007fffeb90ac4c in FProjectManager::LoadModulesForProject (this=<optimized out>, LoadingPhase=<optimized out>) at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Projects/Private/ProjectManager.cpp:58
#28 0x0000000000435a4b in FEngineLoop::LoadStartupModules (this=<optimized out>) at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Launch/Private/LaunchEngineLoop.cpp:2395
#29 0x000000000041c2db in FEngineLoop::PreInit (this=<optimized out>, CmdLine=<optimized out>) at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Launch/Private/LaunchEngineLoop.cpp:1832
#30 0x000000000042d678 in EnginePreInit (CmdLine=0x7fffcb202000 L" /home/sgundry/Documents/UnrealProjects/MyProject2/MyProject2.uproject") at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Launch/Private/Launch.cpp:42
#31 GuardedMain (CmdLine=0x1955 <error: Cannot access memory at address 0x1955>) at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Launch/Private/Launch.cpp:127
#32 0x00007fffe6c4d4b7 in CommonLinuxMain (argc=<optimized out>, argv=<optimized out>, RealMain=<optimized out>) at /home/sgundry/UnrealEngine/Engine/Source/Runtime/Linux/LinuxCommonStartup/Private/LinuxCommonStartup.cpp:236
#33 0x00007fffe6488f45 in __libc_start_main (main=0x4371e0 <main(int, char**)>, argc=2, argv=0x7fffffffd908, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd8f8) at libc-start.c:287
#34 0x00000000004176d2 in _start ()