Resolve native symbols for containerized python applications#329
Open
pramodk wants to merge 1 commit into
Open
Resolve native symbols for containerized python applications#329pramodk wants to merge 1 commit into
pramodk wants to merge 1 commit into
Conversation
- Retry failed libdwfl module opens through /proc/<pid>/root for container-private absolute paths. - Store target PID in DWFL module userdata so find_elf can build the process-root path. - Preserve build-id and normal host path lookup before falling back to the target process root. Signed-off-by: Pramod Kumbhar <prkumbhar@nvidia.com>
9558b20 to
695ff34
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Describe your changes
This change fixes native symbol lookup for Python processes running inside container runtimes such as Enroot.
When the libdwfl lookup cannot open an absolute module path from
/proc/<pid>/maps, this PR now retries that same path through the target process root:The fallback is only used after build-id lookup and normal host path lookup fail, so existing host behavior remains unchanged.
Fixes #327.
Testing performed
Additional context
The issue is specific to native C/C++ symbol lookup. Python frames can still be visible because PyStack can inspect the target process, but native library paths from
/proc/<pid>/mapsmay exist only inside the container filesystem. As containers are used extensively in certain domains like AI/ML/Data Science, it would be really helpful to fix this.