Emacs 27.2, pretty sure it has existed since forever and still exists.

To reproduce:

M-x profiler-start RET RET
<do whatever for a few seconds>
M-x profiler-stop RET
M-x profiler-report RET

After expanding a few nodes under `command-execute' you should come to something like `#<subr call-interactively>'.

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 `#<whatever>' 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