Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added test for PERF_FORMAT_LOST attribute #579

Merged
merged 3 commits into from
Jan 13, 2024

Conversation

GitMensch
Copy link
Contributor

@GitMensch GitMensch commented Dec 21, 2023

fixes #578

note: the testcase output now has:

1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far
1: QWARN  : TestPerfParser::testZeroCost() hotspot.perfparser: Unexpected attribute id: -1 Only know about 2 attributes so far

further note: this testcase without the binary files needed 45-95 seconds.
I'm quite sure that this can be improved - but I don't have an environment where I can easily perf record that.

@GitMensch GitMensch marked this pull request as draft December 21, 2023 17:32
@GitMensch GitMensch marked this pull request as ready for review December 21, 2023 18:01
@milianw
Copy link
Member

milianw commented Jan 1, 2024

this looks conceptually broken to me, I rather believe that this goes wrong in perfparser land somehow - question is how and why. I have spend some time now and found the real issue in perfparser ab14b6989d123af60f4c822e8ece8638945139c6 - can you please rework this patch to only add the basic test coverage? that's fine, the rest shouldn't be needed

@GitMensch
Copy link
Contributor Author

KDAB/perfparser@ab14b69 looks nice. Yes, I'll add the testcase part, then push and re-request a review.

@GitMensch GitMensch marked this pull request as draft January 1, 2024 17:10
@GitMensch GitMensch marked this pull request as ready for review January 2, 2024 08:10
@GitMensch
Copy link
Contributor Author

Test case reworded and checked in without the skipping, works fine.

Note: the current output of the testcase is:

1: unhandled feature PerfHeader::MEM_TOPOLOGY 56
1: unhandled feature PerfHeader::SAMPLE_TIME 16
1: unhandled feature PerfHeader::CACHE 17608
1: feature not properly read PerfHeader::CPU_TOPOLOGY 2356 1708
1: unhandled feature PerfHeader::BPF_BTF 4
1: unhandled feature PerfHeader::BPF_PROG_INFO 4
1: unhandled feature PerfHeader::CPU_PMU_CAPS 140
1: Linux version "6.6-1" detected. Switching to automatic buffering.
1: unhandled event type 79   PERF_RECORD_TIME_CONV
1: unhandled event type 69   PERF_RECORD_ID_INDEX
1: unhandled event type 73   PERF_RECORD_THREAD_MAP
1: unhandled event type 74   PERF_RECORD_CPU_MAP
1: unhandled event type 17   PERF_RECORD_KSYMBOL
1: unhandled event type 17   PERF_RECORD_KSYMBOL
1: unhandled event type 82   unknown type
1: PerfUnwind::InvalidKallsyms: Failed to parse kernel symbol mapping file "//proc/kallsyms": Mapping is empty.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libreadline.so.8.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libreadline.so.8.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libreadline.so.8.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libreadline.so.8.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: DWARF unwind tried to access kernel space 7f3a0c3bd000
1: DWARF unwind tried to access kernel space 7f3a0c3bd008
1: DWARF unwind tried to access kernel space 7f3a0c3bd000
1: DWARF unwind tried to access kernel space 7f3a0c3bd008
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libncursesw.so.6.4. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libncursesw.so.6.4. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libncursesw.so.6.4. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libncursesw.so.6.4. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libncursesw.so.6.4. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libreadline.so.8.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: DWARF unwind tried to access kernel space 3
1: DWARF unwind tried to access kernel space b
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/bin/python3.11. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/bin/python3.11. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/bin/python3.11. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/bin/python3.11. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: DWARF unwind tried to access kernel space 2f3d584946455250
1: DWARF unwind tried to access kernel space 2f3d584946455258
1: DWARF unwind tried to access kernel space 2f3d584946455250
1: DWARF unwind tried to access kernel space 2f3d584946455258
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libpython3.11.so.1.0. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libpython3.11.so.1.0. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libpython3.11.so.1.0. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libpython3.11.so.1.0. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libm.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libm.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libm.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libm.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libc.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libm.so.6. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libpython3.11.so.1.0. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/bin/python3.11. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/ld-linux-x86-64.so.2. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_opcode.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_opcode.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_opcode.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_opcode.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_opcode.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/math.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/math.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/math.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/math.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/math.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_datetime.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_datetime.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_datetime.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_datetime.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_datetime.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: DWARF unwind tried to access kernel space 7ff051b89378
1: DWARF unwind tried to access kernel space 7ff051b89380
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_hashlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_hashlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_hashlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_hashlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libcrypto.so.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libcrypto.so.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libcrypto.so.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libcrypto.so.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libcrypto.so.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_hashlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_blake2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_blake2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_blake2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_blake2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_blake2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_json.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_json.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_json.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_json.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_json.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/zlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/zlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/zlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/zlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libz.so.1.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libz.so.1.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libz.so.1.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libz.so.1.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libz.so.1.3. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/zlib.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bz2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bz2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bz2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bz2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libbz2.so.1.0.8. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libbz2.so.1.0.8. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libbz2.so.1.0.8. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libbz2.so.1.0.8. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/libbz2.so.1.0.8. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bz2.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_lzma.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_lzma.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_lzma.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_lzma.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/liblzma.so.5.4.5. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/liblzma.so.5.4.5. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/liblzma.so.5.4.5. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/liblzma.so.5.4.5. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/liblzma.so.5.4.5. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_lzma.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/fcntl.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/fcntl.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/fcntl.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/fcntl.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/fcntl.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_posixsubprocess.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_posixsubprocess.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_posixsubprocess.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_posixsubprocess.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_posixsubprocess.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/select.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/select.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/select.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/select.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/select.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_struct.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_struct.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_struct.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_struct.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_struct.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/grp.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/grp.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/grp.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/grp.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/grp.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bisect.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bisect.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bisect.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bisect.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_bisect.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_random.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_random.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_random.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_random.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_random.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_sha512.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_sha512.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_sha512.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_sha512.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_sha512.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_pickle.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_pickle.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_pickle.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_pickle.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_pickle.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_socket.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_socket.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_socket.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_socket.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/_socket.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/array.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/array.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/array.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/array.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: PerfUnwind::MissingElfFile: Could not find ELF file for /usr/lib/python3.11/lib-dynload/array.cpython-311-x86_64-linux-gnu.so. This can break stack unwinding and lead to missing symbols.
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: DWARF unwind tried to access kernel space 15
1: DWARF unwind tried to access kernel space 1d
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: DWARF unwind tried to access kernel space 2000
1: DWARF unwind tried to access kernel space 2008
1: PASS   : TestPerfParser::testPerfFormatLost()

I still think that there's some performance issue - which seems to only occur during ctest (!) - when elf files are missing - but that's unrelated to the added test "in general".

@GitMensch GitMensch changed the title skip zero cost entries added test for PERF_FORMAT_LOST attribute Jan 2, 2024
@GitMensch GitMensch marked this pull request as draft January 3, 2024 07:14
@GitMensch GitMensch marked this pull request as ready for review January 3, 2024 07:31
@GitMensch
Copy link
Contributor Author

GitMensch commented Jan 3, 2024

This PR now contains 3 commits: the test without the lookup-time comment (as solved by KDAB/perfparser#34), the minor adjustment to const the newSize in perfparser (not a huge improvement, but definitely more clear), and the unsetting of DEBUGINFOD_URLS as requested (along with removing comments about long parsing times that are gone as soon as KDAB/perfparser#34 is applied)

I suggest to pull both this and the referenced perfparser changes in (+adjust the submodule reference), then have a look if it is possible to reduce the amount of calls to registerElf(). The ones not found are checked 5 times and because the new QSet is at "lookup sope" within findFile(), the filesystem check is still done 5 times.
I've thought there was an issue for that, but it seems we just discussed it in some other issue. The option that seems most easy for me is to still include "not found" files in m_elfs, with a marker that there's no lookup possible.

tests/integrationtests/tst_perfparser.cpp Outdated Show resolved Hide resolved
tests/integrationtests/tst_perfparser.cpp Outdated Show resolved Hide resolved
reduce and drop the unneeded wait time parameter (for full speed on
Debian/Ubuntu this additionally needs KDAB/perfparser#34 to be applied)
@GitMensch
Copy link
Contributor Author

adjusted as requested, should be ready to be merged (of course - please pull the hotspot-perfparser change first and update the reference, otherwise this will now fail on Debian/Ubuntu)

@GitMensch GitMensch requested a review from milianw January 10, 2024 20:07
Copy link
Member

@milianw milianw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks, I'll merge this and look at the perfparser change next. there's no direct dependency, worst case the test will fail now but it's fine on the CI and that's what counts for now.

@milianw milianw merged commit 4b7c378 into KDAB:master Jan 13, 2024
12 checks passed
@GitMensch GitMensch deleted the ZeroCostCrash branch January 13, 2024 12:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

chrash in hotspot in handling perfparser output
2 participants