You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We are hitting the following issue when trying to py-spy while using a Python distribution from python-build-standalone and importing shapely.geos from shapely==1.8.5.
$ sudo env "PATH=$PATH" RUST_LOG=info py-spy dump --pid 148674
[2024-10-18T23:25:09.297598685Z INFO py_spy::config] Command line args: ArgMatches { args: {}, subcommand: Some(SubCommand { id: [hash: B8461C91A07ADDC8], name: "dump", matches: ArgMatches { args: {[hash: CD5160AB4406C427]: MatchedArg { occurs: 1, source: Some(CommandLine), indices: [2], type_id: Some(TypeId { t: 15469221632486072992 }), vals: [[AnyValue { inner: TypeId { t: 15469221632486072992 } }]], raw_vals: [["148674"]], ignore_case: false }}, subcommand: None } }) }
[2024-10-18T23:25:09.297957181Z INFO py_spy::python_spy] Got virtual memory maps from pid 148674:
[2024-10-18T23:25:09.298431475Z INFO py_spy::python_spy] Found libpython binary @ /python_standalone_testing/python/lib/libpython3.9.so.1.0
[2024-10-18T23:25:09.311940673Z INFO py_spy::python_spy] got symbol Py_GetVersion.version (0x00007f23d9445860) from libpython binary
[2024-10-18T23:25:09.311949009Z INFO py_spy::python_spy] Getting version from symbol address
[2024-10-18T23:25:09.312385612Z INFO py_spy::python_spy] Getting version from python binary BSS
[2024-10-18T23:25:09.312401592Z INFO py_spy::python_spy] Failed to get version from BSS section: failed to find version string
[2024-10-18T23:25:09.312406531Z INFO py_spy::python_spy] Getting version from libpython BSS
[2024-10-18T23:25:09.312561654Z INFO py_spy::python_spy] Failed to get version from libpython BSS section: failed to find version string
[2024-10-18T23:25:09.312578105Z INFO py_spy::python_spy] Trying to get version from path: /python_standalone_testing/python/bin/python3.9
[2024-10-18T23:25:09.312583014Z INFO py_spy::python_spy] python version 3.9.0 detected
[2024-10-18T23:25:09.312587993Z INFO py_spy::python_spy] got symbol _PyRuntime (0x00007f23d944c358) from libpython binary
[2024-10-18T23:25:09.312631836Z WARN py_spy::python_spy] Interpreter address from _PyRuntime symbol is invalid 000000240000080e
[2024-10-18T23:25:09.312636394Z INFO py_spy::python_spy] Failed to get interp_head from symbols, scanning BSS section from main binary
[2024-10-18T23:25:09.312645752Z INFO py_spy::python_spy] Failed to get interpreter from binary BSS, scanning libpython BSS
Error: Failed to find a python interpreter in the .data section
A bit of digging makes me suspect that its some how related to shapely <2.0 dynamically linking to GEOS. Notably, shapely >2 does work (which we're working on upgrading shapely to avoid this as well).
Notably, running with python from apt does work (i.e. from apt install python3 from APT-Sources: http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Package
debug_dump.log generated from RUST_LOG=debug py-spy dump --pid 151614 &> debug_dump.log
Any ideas if this is something we could fix in py-spy easily?
The text was updated successfully, but these errors were encountered:
wow - thats really interesting. I just tested this out, and can replicate this on my dev machine. It does seem like we can profile the python-build-standalone interpreter without an issue - but after going import shapely.geos we can't.
Taking a quick look at this, it seems like the import shapely.geos adds a new entry in the /proc/PID/maps virtual memory maps pointing to a new executable section to libpython.so. Like before importing shapely.geos we have only
The issue seems to be that py-spy ends up trying to load data from the first smaller section that shapely.geos has imported - and should be using the second one.
We are hitting the following issue when trying to py-spy while using a Python distribution from python-build-standalone and importing shapely.geos from shapely==1.8.5.
A bit of digging makes me suspect that its some how related to shapely <2.0 dynamically linking to GEOS. Notably, shapely >2 does work (which we're working on upgrading shapely to avoid this as well).
Other details:
ubuntu:24.04
containerapt install python3
fromAPT-Sources: http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Package
RUST_LOG=debug py-spy dump --pid 151614 &> debug_dump.log
Any ideas if this is something we could fix in py-spy easily?
The text was updated successfully, but these errors were encountered: