View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008581 | Rocky-Linux-9 | kernel | public | 2024-12-13 16:56 | 2025-01-06 15:47 |
Reporter | Austin Kiekintveld | Assigned To | Louis Abel | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | assigned | Resolution | reopened | ||
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. |
|
Reopening just in case anyone else wants to follow along, it looks like this issue was noticed upstream in Fedora 40 and is being fixed there, so the fix should flow down eventually here: https://bugzilla.redhat.com/show_bug.cgi?id=2256856 | |
Feel free to close again, sorry I couldn't find a way to add a note without reopening. | |
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 | |
2025-01-06 15:42 | Austin Kiekintveld | Status | closed => feedback |
2025-01-06 15:42 | Austin Kiekintveld | Resolution | not fixable => reopened |
2025-01-06 15:42 | Austin Kiekintveld | Note Added: 0009241 | |
2025-01-06 15:47 | Austin Kiekintveld | Note Added: 0009242 | |
2025-01-06 15:47 | Austin Kiekintveld | Status | feedback => assigned |