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

Use real shared library names for symbol files #10812

Merged
merged 1 commit into from Oct 17, 2017

Conversation

Projects
None yet
3 participants
@alespergl
Contributor

alespergl commented Oct 16, 2017

The names of symbol files on Linux are based on the names of the .so files found by ldd as dependencies. Usually these are just symlinks and the actual binaries loaded into the process are named differently, e.g. libstdc++.so.6 resolves to libstdc++.so.6.0.24. When the symlink name is used for the symbol file name, the symbol file will not be matched with the real file name when symbolicating a crash dump. Therefore the real name needs to be used for naming the symbol file.

@alespergl alespergl requested a review from electron/reviewers as a code owner Oct 16, 2017

@zcbenz

zcbenz approved these changes Oct 17, 2017

Nice!

@zcbenz zcbenz merged commit 0358862 into master Oct 17, 2017

8 checks passed

ci/circleci: electron-linux-arm Your tests passed on CircleCI!
Details
ci/circleci: electron-linux-arm64 Your tests passed on CircleCI!
Details
ci/circleci: electron-linux-ia32 Your tests passed on CircleCI!
Details
ci/circleci: electron-linux-x64 Your tests passed on CircleCI!
Details
continuous-integration/appveyor/branch AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
electron-mas-x64 Build #5417 succeeded in 13 min
Details
electron-osx-x64 Build #5401 succeeded in 13 min
Details

@zcbenz zcbenz deleted the fix_symbol_file_names branch Oct 17, 2017

@ckerr

This comment has been minimized.

Member

ckerr commented Oct 17, 2017

Great catch!

Would this be better placed in the GetSharedLibraryDependencies wrapper function, e.g.

  for dep in deps:
+   dep = os.path.realpath(dep)
    if (os.access(dep, os.F_OK)):
     result.append(dep)

That way any possible symlink issues on any platform would be addressed -- though IDK if it's an issue anywhere but Linux...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment