Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pick up symbols from inside the .so where possible #6728

Closed
wants to merge 2 commits into from

Conversation

achamayou
Copy link
Member

The recent PR to add snapshot download (#6727) highlighted the risk of external dependencies being picked up through cchost and being used inside the .so inadvertently. This change reverses the priority when resolving symbols, and links in snmalloc explicitly on the .so side (since it is no longer picked up).

       RTLD_DEEPBIND (since glibc 2.3.4)
              Place the lookup scope of the symbols in this shared
              object ahead of the global scope.  This means that a self-
              contained object will use its own symbols in preference to
              global symbols with the same name contained in objects
              that have already been loaded.

@achamayou achamayou requested a review from a team as a code owner January 7, 2025 14:34
@achamayou achamayou added the run-long-test Run Long Test job label Jan 7, 2025
@achamayou
Copy link
Member Author

==7144==You are trying to dlopen a ./liblogging.virtual.so 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 ./liblogging.virtual.so library under sanitizers please remove RTLD_DEEPBIND from dlopen flags.

@achamayou
Copy link
Member Author

This change would unfortunately prevent us from using ASAN, which is clearly not an acceptable tradeoff.
Another change we can explore is drop our vendored copy of nghttp2 in favour of the OS version, which may work, but is not guaranteed because Ubuntu 20.04 only ships with 1.40.
This would be resolved satisfactorily once we move to Azure Linux where the current release of nghttp2 is 1.61.

@achamayou achamayou closed this Jan 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
run-long-test Run Long Test job
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant