View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008581 | Rocky-Linux-9 | kernel | public | 2024-12-13 16:56 | 2024-12-15 00:12 |
Reporter | Austin Kiekintveld | Assigned To | Louis Abel | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | not fixable | ||
Platform | x86_64 | OS | Rocky Linux | OS Version | Rocky 9.4 |
Summary | 0008581: perf: C++ symbol mangling support regressed/removed in Rocky 9.4 | ||||
Description | Hello! I ran into an issue when using perf from Rocky 9.4 (perf version 5.14.0-427.31.1.el9_4.x86_64) where perf does not properly demangle C++ symbol names. Prior to this I was using Rocky 9.3 (perf version 5.14.0-362.8.1.el9_3.x86_64) and the demangling support works fine there. I suspect there was a change in the build environment that caused this, as perf only builds in support for C++ demangling when binutils-devel is present. I also found what appears to be a similar bug in Ubuntu that details how the build dependencies work in their packages: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1396654. | ||||
Steps To Reproduce | 1. Put the contents of the below code snippet in a file called "example.cpp". The purpose of `foo` is to spin in a loop long enough to be sampled at least once by perf. ``` void foo() { volatile int x = 0; while (x++ != 10000000); } int main() { foo(); } ``` 2. Run `c++ example.cpp` (On my machine that used c++ (GCC) 11.4.1 20231218 (Red Hat 11.4.1-3)). 2. Run `perf record ./a.out` with perf version 5.14.0-427.31.1.el9_4.x86_64. 3. Run `perf report`. 4. Observe that instead of seeing the demangled symbol name `foo` on the report, instead the mangled symbol name `_Z3foov` appears. 5. Repeat the above with perf version to 5.14.0-362.8.1.el9_3.x86_64. 6. Observe that the demangled name `foo` appears as expected. | ||||
Tags | No tags attached. | ||||
Thank you for the report. >I suspect there was a change in the build environment that caused this, as perf only builds in support for C++ demangling when binutils-devel is present. You will find that binutils-devel is brought in as a dependency. https://git.rockylinux.org/staging/rpms/kernel/-/blob/r9/SPECS/kernel.spec?ref_type=heads#L674 In addition, you can review the changes of the kernel spec file here: https://git.rockylinux.org/staging/rpms/kernel/-/commits/r9/ and you can also view the CentOS Stream 9 kernels, the basis of Enterprise Linux kernels, here https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9 and here https://gitlab.com/redhat/centos-stream/rpms/kernel/-/tree/c9s -- What you are reporting is reproducible in CentOS Stream 9. My recommendation is that you spin up RHEL 9.5 and CentOS Stream 9, reproduce your findings, and report it to https://issues.redhat.com -- Please note that Rocky Linux 9.4 is no longer supported. You are recommended to update your systems to 9.5. https://wiki.rockylinux.org/rocky/version/#__tabbed_1_2 Closing. |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2024-12-13 16:56 | Austin Kiekintveld | New Issue | |
2024-12-15 00:12 | Louis Abel | Assigned To | => Louis Abel |
2024-12-15 00:12 | Louis Abel | Status | new => closed |
2024-12-15 00:12 | Louis Abel | Resolution | open => not fixable |
2024-12-15 00:12 | Louis Abel | Note Added: 0009109 |