**observed behaviour**
`clIcdGetPlatformIDsKHR()` crashes if multiple llvm base…d implementations present (using radeonsi GPU)
- mesa 22.2.1
- ROCm 5.1.3
**output**
```
> clinfo
mesa: CommandLine Error: Option 'h' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options
```
**backtrace**
```
Thread 1 "clinfo" received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
44 pthread_kill.c: No such file or directory.
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007ffff7de8cef in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007ffff7d9ba22 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff7d86469 in __GI_abort () at abort.c:79
#4 0x00007fffedd768d2 in llvm::report_fatal_error(llvm::Twine const&, bool) () from /usr/lib/llvm/14/lib64/libLLVM-14.so
#5 0x00007fffedd76a45 in llvm::report_fatal_error(char const*, bool) () from /usr/lib/llvm/14/lib64/libLLVM-14.so
#6 0x00007fffedd5ac8a in ?? () from /usr/lib/llvm/14/lib64/libLLVM-14.so
#7 0x00007fffedd5af3a in llvm::cl::Option::addArgument() () from /usr/lib/llvm/14/lib64/libLLVM-14.so
#8 0x00007fffe0654bd0 in llvm::cl::alias::done (this=0x7fffe0f4c840 <SectionHeadersShorter>) at /usr/lib/llvm/14/include/llvm/Support/CommandLine.h:1910
#9 llvm::cl::alias::alias<char [2], llvm::cl::desc, llvm::cl::aliasopt> (this=0x7fffe0f4c840 <SectionHeadersShorter>) at /usr/lib/llvm/14/include/llvm/Support/CommandLine.h:1928
#10 0x00007fffe064957c in __static_initialization_and_destruction_0 (__initialize_p=__initialize_p@entry=1, __priority=__priority@entry=65535) at /var/tmp/portage/dev-libs/rocm-comgr-5.1.3/work/ROCm-CompilerSupport-rocm-5.1.3/lib/comgr/src/comgr-objdump.cpp:180
#11 0x00007fffe064a303 in _GLOBAL__sub_I_comgr_objdump.cpp(void) () at /var/tmp/portage/dev-libs/rocm-comgr-5.1.3/work/ROCm-CompilerSupport-rocm-5.1.3/lib/comgr/src/comgr-objdump.cpp:2440
#12 0x00007ffff7fcceee in call_init (env=0x7fffffffd738, argv=0x7fffffffd728, argc=1, l=<optimized out>) at dl-init.c:70
#13 call_init (l=<optimized out>, argc=1, argv=0x7fffffffd728, env=0x7fffffffd738) at dl-init.c:26
#14 0x00007ffff7fccfdc in _dl_init (main_map=0x5555558573b0, argc=1, argv=0x7fffffffd728, env=0x7fffffffd738) at dl-init.c:117
#15 0x00007ffff7eae175 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at /var/tmp/portage/sys-libs/glibc-2.35-r8/work/glibc-2.35/elf/dl-error-skeleton.c:182
#16 0x00007ffff7fd3cd6 in dl_open_worker (a=a@entry=0x7fffffffcbc0) at dl-open.c:808
#17 0x00007ffff7eae114 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at /var/tmp/portage/sys-libs/glibc-2.35-r8/work/glibc-2.35/elf/dl-error-skeleton.c:208
#18 0x00007ffff7fd406b in _dl_open (file=<optimized out>, mode=-2147483647, caller_dlopen=0x7ffff7c6929c <amd::Os::loadLibrary_(char const*)+24>, nsid=-2, argc=1, argv=0x7fffffffd728, env=0x7fffffffd738) at dl-open.c:883
#19 0x00007ffff7de2ff8 in dlopen_doit (a=a@entry=0x7fffffffce30) at dlopen.c:56
#20 0x00007ffff7eae114 in __GI__dl_catch_exception (exception=exception@entry=0x7fffffffcd90, operate=<optimized out>, args=<optimized out>) at /var/tmp/portage/sys-libs/glibc-2.35-r8/work/glibc-2.35/elf/dl-error-skeleton.c:208
#21 0x00007ffff7eae1df in __GI__dl_catch_error (objname=0x7fffffffcde8, errstring=0x7fffffffcdf0, mallocedp=0x7fffffffcde7, operate=<optimized out>, args=<optimized out>) at /var/tmp/portage/sys-libs/glibc-2.35-r8/work/glibc-2.35/elf/dl-error-skeleton.c:227
#22 0x00007ffff7de2ac8 in _dlerror_run (operate=operate@entry=0x7ffff7de2fa0 <dlopen_doit>, args=args@entry=0x7fffffffce30) at dlerror.c:138
#23 0x00007ffff7de30b1 in dlopen_implementation (dl_caller=<optimized out>, mode=<optimized out>, file=<optimized out>) at dlopen.c:71
#24 ___dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:81
#25 0x00007ffff7c6929c in amd::Os::loadLibrary_ (filename=filename@entry=0x7ffff7d1bca6 "libamd_comgr.so.2") at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCclr-rocm-5.1.3/os/os_posix.cpp:178
#26 0x00007ffff7c6b95b in amd::Os::loadLibrary (libraryname=libraryname@entry=0x7ffff7d1bca6 "libamd_comgr.so.2") at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCclr-rocm-5.1.3/os/os.cpp:76
#27 0x00007ffff7ccf996 in amd::Comgr::LoadLib () at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCclr-rocm-5.1.3/device/comgrctx.cpp:37
#28 0x00007ffff7c586b9 in std::__invoke_impl<bool, bool (&)()> (__f=<optimized out>) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/bits/invoke.h:61
#29 std::__invoke<bool (&)()> (__fn=<optimized out>) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/bits/invoke.h:96
#30 std::call_once<bool (&)()>(std::once_flag&, bool (&)())::{lambda()#1}::operator()() const (__closure=<optimized out>) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/mutex:776
#31 std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<bool (&)()>(std::once_flag&, bool (&)())::{lambda()#1}>(bool (&)())::{lambda()#1}::operator()() const (__closure=0x0) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/mutex:712
#32 std::once_flag::_Prepare_execution::_Prepare_execution<std::call_once<bool (&)()>(std::once_flag&, bool (&)())::{lambda()#1}>(bool (&)())::{lambda()#1}::_FUN() () at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/mutex:712
#33 0x00007ffff7dec10a in __pthread_once_slow (once_control=0x7ffff7d589d8 <amd::Comgr::initialized>, init_routine=0x7ffff74d4c50 <__once_proxy>) at pthread_once.c:116
#34 0x00007ffff7c539ea in __gthread_once (__func=<optimized out>, __once=<optimized out>) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/x86_64-pc-linux-gnu/bits/gthr-default.h:700
#35 std::call_once<bool (&)()> (__f=<optimized out>, __once=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/mutex:783
#36 amd::Device::ValidateComgr (this=this@entry=0x555555856dd0) at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCclr-rocm-5.1.3/device/device.cpp:488
#37 0x00007ffff7c90f2a in roc::NullDevice::create (this=this@entry=0x555555856dd0, isa=...) at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCclr-rocm-5.1.3/device/rocm/rocdevice.cpp:130
#38 0x00007ffff7c91684 in roc::NullDevice::init () at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCclr-rocm-5.1.3/device/rocm/rocdevice.cpp:301
#39 0x00007ffff7c537ec in amd::Device::init () at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCclr-rocm-5.1.3/device/device.cpp:424
#40 0x00007ffff7c88bac in amd::Runtime::init () at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCclr-rocm-5.1.3/platform/runtime.cpp:74
#41 0x00007ffff7c2708f in ShouldLoadPlatform () at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCm-OpenCL-Runtime-rocm-5.1.3/amdocl/cl_icd.cpp:226
#42 operator() (__closure=<optimized out>) at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCm-OpenCL-Runtime-rocm-5.1.3/amdocl/cl_icd.cpp:276
#43 std::__invoke_impl<void, clIcdGetPlatformIDsKHR(cl_uint, _cl_platform_id**, cl_uint*)::<lambda()> > (__f=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/bits/invoke.h:61
#44 std::__invoke<clIcdGetPlatformIDsKHR(cl_uint, _cl_platform_id**, cl_uint*)::<lambda()> > (__fn=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/bits/invoke.h:96
#45 operator() (__closure=<optimized out>) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/mutex:776
#46 operator() (__closure=0x0) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/mutex:712
#47 _FUN () at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/mutex:712
#48 0x00007ffff7dec10a in __pthread_once_slow (once_control=0x7ffff7d50a00 <clIcdGetPlatformIDsKHR::initOnce>, init_routine=0x7ffff74d4c50 <__once_proxy>) at pthread_once.c:116
#49 0x00007ffff7c271a1 in __gthread_once (__func=<optimized out>, __once=0x7ffff7d50a00 <clIcdGetPlatformIDsKHR::initOnce>) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/x86_64-pc-linux-gnu/bits/gthr-default.h:700
#50 std::call_once<clIcdGetPlatformIDsKHR(cl_uint, _cl_platform_id**, cl_uint*)::<lambda()> > (__f=..., __once=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/11.3.0/include/g++-v11/mutex:783
#51 clIcdGetPlatformIDsKHR (num_entries=<optimized out>, platforms=0x0, num_platforms=0x7fffffffd3d8) at /var/tmp/portage/dev-libs/rocm-opencl-runtime-5.1.3/work/ROCm-OpenCL-Runtime-rocm-5.1.3/amdocl/cl_icd.cpp:276
#52 0x00007ffff7f62824 in _find_and_check_platforms (num_icds=3) at /var/tmp/portage/dev-libs/ocl-icd-2.3.0/work/ocl-icd-2.3.0/ocl_icd_loader.c:469
#53 __initClIcd () at /var/tmp/portage/dev-libs/ocl-icd-2.3.0/work/ocl-icd-2.3.0/ocl_icd_loader.c:773
#54 0x00007ffff7dec10a in __pthread_once_slow (once_control=0x7ffff7f88740 <once_init>, init_routine=0x7ffff7f61fd9 <__initClIcd>) at pthread_once.c:116
#55 0x00007ffff7f6160e in _initClIcd_real () at /var/tmp/portage/dev-libs/ocl-icd-2.3.0/work/ocl-icd-2.3.0/ocl_icd_loader.c:816
#56 0x00007ffff7f64406 in _initClIcd () at /var/tmp/portage/dev-libs/ocl-icd-2.3.0/work/ocl-icd-2.3.0/ocl_icd_loader.c:853
#57 clGetPlatformIDs (num_entries=num_entries@entry=0, platforms=platforms@entry=0x0, num_platforms=num_platforms@entry=0x7fffffffd590) at /var/tmp/portage/dev-libs/ocl-icd-2.3.0/work/ocl-icd-2.3.0/ocl_icd_loader.c:1014
#58 0x00005555555681d3 in main (argc=1, argv=0x7fffffffd728) at src/clinfo.c:3945
```