Impact Acquire SDK C++
Clang sanitizers complain about RTLD_DEEPBIND flag and stop

Symptoms

When sanitizing your code using Impact Acquire >= 2.46 (for Linux x86_64), e.g. with a clang address sanitizer, your program stops with a message like:

==2451==You are trying to dlopen a /tmp/shared.F27QQN shared library with RTLD_DEEPBIND flag which
is incompatible with sanitizer runtime (see https://github.com/google/sanitizers/issues/611 for details).
If you want to run /tmp/shared.F27QQN library under sanitizers please remove RTLD_DEEPBIND from dlopen flags.

Cause

Starting with version 2.46.0 of Impact Acquire, a library for allowing licensed access to certain functionality was integrated into the mvGenTLProducer.cti. In the Linux version of the GenTL producer, this library is loaded internally using the mentioned RTLD_DEEPBIND flag. (A flag that is set by design by the library provider.)

Resolution

Currently, this issue cannot be resolved with current versions of the SDK.

  • It is not possible to use a (fixed) suppression rule for the sanitizers since the rule would have to be entered for the licensing library whose name changes from run to run, and not for the mvGenTLProducer.cti.
  • Even if the library could be ignored by the sanitizers, it would cease working in a sanitizer-instrumented environment, according to the provider of the licensing library.

The only solution so far is to use Impact Acquire 2.45.0 for sanitizing your code and then to switch back to a more modern version of the SDK for use in your productive code.