This is an archive of the discontinued LLVM Phabricator instance.

[debuginfo-tests] Always use the system python to invoke llgdb.py.
ClosedPublic

Authored by ab on Jun 8 2018, 5:24 PM.

Details

Summary

llgdb.py almost always ends up using the system LLDB python and framework. LLDB.framework is linked against the system python. If we have a different python installed, and first in PATH, we're going to try using that, which invariably fails because of internal data structure incompatibilities.

Don't pretend we can use any arbitrary python: just use the system one.

Diff Detail

Event Timeline

ab created this revision.Jun 8 2018, 5:24 PM
MatzeB added a subscriber: MatzeB.Jun 8 2018, 5:26 PM

usr/bin/env is the recommended way to invoke python... Or is lldb somehow hardcoded to use /usr/bin/python and you need to match this here?

ab added a comment.Jun 8 2018, 6:36 PM

Precisely: /usr/bin/env is recommended as a cross-platform way to find python. But:

  • we're only using lldb on darwin, where we know python (or at least, the xcrun-style shortcut) is in /usr/bin/
  • the python interpreter in LLDB comes from /S/L/F, for instance:
        $ otool -L /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/LLDB | grep Python
	    /System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.10)

so when we use the lldb python module, it calls into the swig/python support in the lldb framework, and if there's a mismatch between the interpreter and the linked python, weird things occur.

In theory, this should be done by:

  • looking for the LLDB framework (llgdb.py does some of that)
  • finding the binary inside the framework
  • looking for the Python it was linked against (otool -L)
  • finding the interpreter executable inside the Python.framework

But in practice, that's only different if we use a custom LLDB framework/pythonpath when running these tests, and AFAIK nobody does that right now, so the code would be dead anyway.

aprantl accepted this revision.Jun 9 2018, 11:41 AM

From a pragmatic point of view this change is okay for all the reasons you outlined above.

This revision is now accepted and ready to land.Jun 9 2018, 11:41 AM

Please do watch the LLDB linux bots on lab.llvm.org:8011 after landing this.

This revision was automatically updated to reflect the committed changes.