pyflame
pyflame copied to clipboard
Fix pyflame for code compiled with ld -z separate-code
This generates VAS layouts like this:
555555554000-5555555a8000 r--p 00000000 08:02 919707 /opt/python-3.6.8/bin/python3.6 5555555a8000-55555573d000 r-xp 00054000 08:02 919707 /opt/python-3.6.8/bin/python3.6 55555573d000-5555557ce000 r--p 001e9000 08:02 919707 /opt/python-3.6.8/bin/python3.6 5555557cf000-555555835000 rw-p 0027a000 08:02 919707 /opt/python-3.6.8/bin/python3.6 555555835000-555555865000 rw-p 00000000 00:00 0 [heap] 7ffff7fd0000-7ffff7fd3000 r--p 00000000 00:00 0 [vvar] 7ffff7fd3000-7ffff7fd5000 r-xp 00000000 00:00 0 [vdso] 7ffff7fd5000-7ffff7fd6000 r--p 00000000 08:02 265255 /lib/x86_64-linux-gnu/ld-2.28.so 7ffff7fd6000-7ffff7ff4000 r-xp 00001000 08:02 265255 /lib/x86_64-linux-gnu/ld-2.28.so 7ffff7ff4000-7ffff7ffc000 r--p 0001f000 08:02 265255 /lib/x86_64-linux-gnu/ld-2.28.so 7ffff7ffc000-7ffff7ffe000 rw-p 00026000 08:02 265255 /lib/x86_64-linux-gnu/ld-2.28.so 7ffff7ffe000-7ffff7fff000 rw-p 00000000 00:00 0 7ffffffde000-7ffffffff000 rw-p 00000000 00:00 0 [stack]
This is enabled by default on Linux/x86 since 2.29 (f6aec96dce1ddbd8961a3aa8a2925db2021719bb).
This fixes pyflame on 3.6 (including 3.6.6+) for me. It won't work for 3.7 because there is no _PyThreadState_Current
symbol anymore.
# define _PyThreadState_Current _PyRuntime.gilstate.tstate_current
I'll try to have a look at that later on.
This should fix #165 / #157.
This makes pyflame usable again for me with python 2.7.16 (debian buster), will this be merged ?