bloomberg / memray

Memray is a memory profiler for Python
https://bloomberg.github.io/memray/
Apache License 2.0
13.17k stars 392 forks source link

`memray flamegraph` hangs on files generated with `--native` #634

Closed ZeroIntensity closed 3 months ago

ZeroIntensity commented 3 months ago

Is there an existing issue for this?

Current Behavior

memray flamegraph seems to get stuck on any file generated with --native.

Expected Behavior

It should generate the flamegraph.

Steps To Reproduce

(I can't produce a docker image right now, sorry!)

  1. Use memray run --native on any file
  2. Attempt to use memray flamegraph on the output - it will run indefinitely!

Memray Version

1.13.0

Python Version

3.12

Operating System

Linux

Anything else?

This doesn't happen on Memray 1.12.0! I'm on Arch with libc 2.39, with GCC 14.1.1

Running with PyStack gives the following output:

Traceback for thread 92060 (memray) [Has the GIL] (most recent call last):
    (C) File "???", line 0, in _start (/usr/bin/python3.12)
    (C) File "???", line 0, in __libc_start_main (/usr/lib/libc.so.6)
    (C) File "???", line 0, in Py_BytesMain (/usr/lib/libpython3.12.so.1.0)
    (C) File "???", line 0, in Py_RunMain (/usr/lib/libpython3.12.so.1.0)
    (Python) File "/home/zero/Projects/pyawaitable/.venv/bin/memray", line 8, in <module>
        sys.exit(main())
    (Python) File "/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/commands/__init__.py", line 138, in main
        arg_values.entrypoint(arg_values, parser)
    (Python) File "/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/commands/common.py", line 304, in run
        self.write_report(

    (Python) File "/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/commands/common.py", line 160, in write_report
        warn_if_not_enough_symbols()
    (Python) File "/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/commands/common.py", line 56, in warn_if_not_enough_symbols
        support = get_symbolic_support()
    (C) File "src/memray/_memray.cpp", line 36316, in __pyx_pw_6memray_7_memray_15get_symbolic_support(_object*, _object*) [clone .lto_priv.0] (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "src/memray/_memray.cpp", line 36353, in __pyx_pf_6memray_7_memray_14get_symbolic_support (inlined) (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "src/memray/_memray/native_resolver.cpp", line 499, in memray::native_resolver::unwindHere() (inlined) (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "/project/src/vendor/libbacktrace/backtrace.c", line 127, in backtrace_full (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "/usr/src/debug/gcc/gcc/libgcc/unwind.inc", line 309, in _Unwind_Backtrace (/usr/lib/libgcc_s.so.1)
    (C) File "/project/src/vendor/libbacktrace/backtrace.c", line 91, in unwind (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "/project/src/vendor/libbacktrace/fileline.c", line 295, in backtrace_pcinfo (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "/project/src/vendor/libbacktrace/fileline.c", line 261, in fileline_initialize (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "/project/src/vendor/libbacktrace/elf.c", line 4933, in backtrace_initialize (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "???", line 0, in dl_iterate_phdr (/usr/lib/libc.so.6)
    (C) File "/project/src/vendor/libbacktrace/elf.c", line 4889, in phdr_callback (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "/project/src/vendor/libbacktrace/elf.c", line 4463, in elf_add (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "/project/src/vendor/libbacktrace/elf.c", line 870, in elf_open_debugfile_by_debuginfod (inlined) (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray/_memray.cpython-312-x86_64-linux-gnu.so)
    (C) File "/elfutils-0.191/debuginfod/debuginfod-client.c", line 1454, in debuginfod_query_server (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray.libs/libdebuginfod-0-a1ae1d88.191.so)
    (C) File "???", line 0, in curl_multi_wait (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray.libs/libcurl-562ec691.so.4.8.0)
    (C) File "???", line 0, in multi_wait.part.0 (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray.libs/libcurl-562ec691.so.4.8.0)
    (C) File "???", line 0, in Curl_poll (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray.libs/libcurl-562ec691.so.4.8.0)
    (C) File "???", line 0, in __poll (/usr/lib/libc.so.6)

Traceback for thread 92061 (memray) [] (most recent call last):
    (C) File "???", line 0, in curl_thread_create_thunk (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray.libs/libcurl-562ec691.so.4.8.0)
    (C) File "???", line 0, in getaddrinfo_thread (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray.libs/libcurl-562ec691.so.4.8.0)
    (C) File "???", line 0, in Curl_getaddrinfo_ex (/home/zero/Projects/pyawaitable/.venv/lib/python3.12/site-packages/memray.libs/libcurl-562ec691.so.4.8.0)
    (C) File "???", line 0, in getaddrinfo (/usr/lib/libc.so.6)
    (C) File "???", line 0, in _dl_catch_exception (/usr/lib/ld-linux-x86-64.so.2)
    (C) File "???", line 0, in _dl_catch_exception (/usr/lib/ld-linux-x86-64.so.2)
    (C) File "???", line 0, in _dl_catch_exception (/usr/lib/ld-linux-x86-64.so.2)
    (C) File "???", line 0, in pthread_mutex_lock (/usr/lib/libc.so.6)
godlygeek commented 3 months ago

We should maybe yank 1.13.0 after we release 1.13.1... Any objection, @pablogsal?

pablogsal commented 3 months ago

We should maybe yank 1.13.0 after we release 1.13.1... Any objection, @pablogsal?

No objections