libvirtcpuid icon indicating copy to clipboard operation
libvirtcpuid copied to clipboard

Mark `dlsym` with `__attribute__((noinline))`.

Open eatnumber1 opened this issue 3 years ago • 0 comments

In some circumstances (e.g. under higher optimization modes when compiled with LLVM), dlsym gets inlined into libvirtcpuid_init_dso.

When this happens, dlsym's use of __builtin_return_address(0) no longer returns the address of dlsym and instead returns the address of libvirtcpuid_init_dso. When that happens, _dl_sym fails to find the next dlsym and the process crashes.

eatnumber1 avatar Jun 25 '21 17:06 eatnumber1