Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-89792

size of debuginfo of LLVM compat libs is too big and causes abidiff to segfault [rhel-10]

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done-Errata
    • Icon: Undefined Undefined
    • rhel-10.1
    • rhel-10.1
    • llvm
    • None
    • llvm-20.1.4-1.el10
    • No
    • Low
    • 2
    • rhel-pt-llvm-rust
    • ssg_platform_tools
    • 1
    • False
    • False
    • No
    • PT LLVMRustGo 2025 S6, PT LLVMRustGo 2025 S7
    • Unspecified Release Note Type - Unknown
    • Unspecified
    • Unspecified
    • Unspecified
    • None

      Testing the rebase of LLVM 20 (RHEL-80988, RHEL-81006) we found out that the compat libs for LLVM19 are causing segfaults on abidiff. I did some comparisons on the compat libs in llvm-20.1.2-1.el10 and the non-compat libs on llvm-19.1.7-2.el10 and there are some differences, being aarch64 where these are most notable.

      Some of my findings:

      • abidiff segfaults with liblldb libclang and libclang-cpp in all archs, but with aarch libs in particular, they cause OOM and the kernel kills up to the bash process running rpminspect/abidiff.
      • The *.debug filesizes are HUGE in comparison with the non-compat llvm 19 libs. We're talking about 200-300MB in the non-compat vs 1.4-1.8GB in the compat debuginfo. The following shows the difference on liblldb, although libclang and libclang-cpp are also affected.
        # find . -name liblldb.so*.debug -exec du -h {} \;
        266M    ./before/aarch64/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-19.1.7-2.el10.aarch64.debug
        268M    ./before/ppc64le/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-19.1.7-2.el10.ppc64le.debug
        267M    ./before/x86_64/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-19.1.7-2.el10.x86_64.debug
        312M    ./before/s390x/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-19.1.7-2.el10.s390x.debug
        273M    ./after/aarch64/usr/lib/debug/usr/lib64/llvm20/lib/liblldb.so.20.1.2-20.1.2-1.el10.aarch64.debug
        1.4G    ./after/aarch64/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-20.1.2-1.el10.aarch64.debug
        275M    ./after/ppc64le/usr/lib/debug/usr/lib64/llvm20/lib/liblldb.so.20.1.2-20.1.2-1.el10.ppc64le.debug
        1.4G    ./after/ppc64le/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-20.1.2-1.el10.ppc64le.debug
        274M    ./after/x86_64/usr/lib/debug/usr/lib64/llvm20/lib/liblldb.so.20.1.2-20.1.2-1.el10.x86_64.debug
        1.4G    ./after/x86_64/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-20.1.2-1.el10.x86_64.debug
        320M    ./after/s390x/usr/lib/debug/usr/lib64/llvm20/lib/liblldb.so.20.1.2-20.1.2-1.el10.s390x.debug
        1.8G    ./after/s390x/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-20.1.2-1.el10.s390x.debug
        
      • The debug-dump info difference is also massive. I ran readelf --debug-dump=info on aarch64 liblldb.so.19.1.7-19.1.7-2.el10.aarch64.debug for the non compat and liblldb.so.19.1.7-20.1.2-1.el10.aarch64.debug for the compat and dumped it to a file. The size of the non-compat dump isĀ  2.7G, while the dump of the compat is 17G.
      • Difference in symbols exported. I ran nm on each debuginfo and diffed them (e.g liblldb.so.19.1.7-19.1.7-2.el10.aarch64.debug vs liblldb.so.19.1.7-20.1.2-1.el10.aarch64.debug) and the difference is massive as well:
        # nm after/aarch64/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-20.1.2-1.el10.aarch64.debug | wc -l
        516403
        # nm before/aarch64/usr/lib/debug/usr/lib64/liblldb.so.19.1.7-19.1.7-2.el10.aarch64.debug  | wc -l
        115218
        

              tstellar@redhat.com Thomas Stellard
              rhn-support-jchecahi Jesus Checa Hidalgo
              Thomas Stellard Thomas Stellard
              Jesus Checa Hidalgo Jesus Checa Hidalgo
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

                Created:
                Updated:
                Resolved: