Emacs 27.2, pretty sure it has existed since forever and still exists. To reproduce: M-x profiler-start RET RET M-x profiler-stop RET M-x profiler-report RET After expanding a few nodes under `command-execute' you should come to something like `#'. Now continue: M-: (profiler-write-profile (profiler-cpu-profile) "/tmp/buggy-elisp.prof") RET M-: (profiler-report-profile (profiler-read-profile "/tmp/buggy-elisp.prof")) RET Expand the same nodes and observe that nodes with `#' under them no longer match, after file-roundtrip these `#<...>' multiply like crazy. It seems what's going on is that these things get stored as strings in the file, and after rereading them into memory, they no longer compare as equal by profiler calltree-building code. Paul