Summary: | Inlined member operators lose class name in logs and generated suppressions | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Daniel <bugzilla> |
Component: | general | Assignee: | Julian Seward <jseward> |
Status: | RESOLVED NOT A BUG | ||
Severity: | normal | CC: | tom |
Priority: | NOR | ||
Version: | 3.13.0 | ||
Target Milestone: | --- | ||
Platform: | RedHat Enterprise Linux | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Daniel
2019-05-24 13:56:35 UTC
This is almost certainly a bug in the (ancient) version of gcc you are using - clearly the mangled name produced by the compiler is missing the class when it has been inlined. There isn't really much we can do about that... Indeed I rather suspect the compiler has put the function in the symbol table as "operator bool" without any mangling at all, given that valgrind has printed it without any mangling. Actually I guess when it's inlined there is no symbol table entry for that function so we must be getting the name from the debug data. It's going to be very messy though - recognising the inline function at all is a fairly recent thing I think and trying to suppress on one is probably not the best plan. I checked that gdb also shows it in the same way, so this is gcc issue. Unfortunately this gcc version is default for RedHat and CentOS 7. RedHat 8 will have new gcc. However migration to it will need time. Helgrind does not recognize atomics and reports race conditions on them. I wanted to create suppression file to filter out them. Fortunately we need it only for our tests, so we can compile them without optimization. This seems to be a problem caused by compilers emitting incomplete names in the Dwarf unwind info, if I understand correctly. Not sure there's anything we can do about that. |