Home > OS >  CRC mismatch warning running helloworld.c from gdb on ubuntu 20.04.3
CRC mismatch warning running helloworld.c from gdb on ubuntu 20.04.3

Time:11-28

I have the most trivial program

$ cat helloworld.c
#include <stdio.h>
int main(void){
  printf("Hello World!\n");
  return 0;
}

$ gcc -g helloworld.c -o helloworld

Which I'm wanting to run under gdb

$ gdb -tui ./helloworld

When I run, from within gdb,

warning: the debug information found in "/lib64/ld-2.31.so" does not match "/lib64/ld-linux-x86-64.so.2" (CRC mismatch).

I think my system is up to date. I've already run

$ sudo apt-get update
$ sudo apt-get upgrade

I've attempted to reinstall any libc6* packages

$ apt list --installed | grep 'libc6'

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.  
libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]  
libc6-dbg/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]  
libc6-dev-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]  
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]  
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]  
libc6/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]  
libc6/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]

followed by, for each of those 7 packages, the equivalent of

$ sudo apt-get --reinstall install 'libc6-amd64'

but the warning is the same as previously.

Regarding ld-2.31.so, mentioned by @employedrussian in the comments

$ ls -lsh /lib64/ld-linux-x86-64.so.2
0 lrwxrwxrwx 1 root root 32 Dec 16  2020 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.31.so
$ ls -lsh /lib/x86_64-linux-gnu/ld-2.31.so 
188K -rwxr-xr-x 1 root root 187K Dec 16  2020 /lib/x86_64-linux-gnu/ld-2.31.so

$ ls -lsh /lib64/ld-2.31.so 
180K -rwxr-xr-x 1 root root 178K Dec 16  2020 /lib64/ld-2.31.so

$ dpkg -S /lib64/ld-linux-x86-64.so.2
libc6:amd64: /lib64/ld-linux-x86-64.so.2

$ dpkg -S /lib64/ld-2.31.so
libc6-amd64:i386: /lib64/ld-2.31.so

I've uninstalled libc6-dev-amd64 as identified by @employedrussian below

$ sudo apt-get purge libc6-dev-amd64
$ apt list --installed | grep libc6

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]
libc6-dbg/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6-dev/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]
libc6/focal-updates,now 2.31-0ubuntu9.2 amd64 [installed,automatic]
libc6/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]

But the exact same error reported in gdb remains

/lib64/ld-2.31.so is still present

$ cd /lib64
$ ls -l ld-2.31.so
-rwxr-xr-x 1 root root 182168 Dec 16  2020 ld-2.31.so

libc6-amd64:i386 is still installed

$ dpkg -l | grep libc6-amd64
ii  libc6-amd64:i386  2.31-0ubuntu9.2  i386  GNU C Library: 64bit Shared libraries for AMD64

$ apt list --installed | grep libc6-amd64
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libc6-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,auto-removable]

Attempting to remove the package fails

$ sudo dpkg --remove libc6-amd64:i386
[sudo] password for rgh: 
dpkg: dependency problems prevent removal of libc6-amd64:i386:
 lib64tinfo6:i386 depends on libc6-amd64 (>= 2.16).
 lib64ncursesw6:i386 depends on libc6-amd64 (>= 2.14).
 lib64ncurses6:i386 depends on libc6-amd64 (>= 2.14).

dpkg: error processing package libc6-amd64:i386 (--remove):
 dependency problems - not removing
Errors were encountered while processing:
 libc6-amd64:i386

I do remember installing some ncurses packages a while back.

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:    20.04
Codename:   focal

CodePudding user response:

This appears to be the root cause:

$ dpkg -S /lib64/ld-2.31.so
libc6-amd64:i386: /lib64/ld-2.31.so

According to this answer, libc6-amd64:i386 is a 64bit cross-compile tool-chain prepared for Ubuntu 32bit. Since you are on a 64-bit system, this package is useless.

Uninstalling it will likely fix your warning.

Update:

Trying to understand this

The format in which apt list and dpkg -l show package names is different. On my system:

dpkg-query -l libc6* | grep '^ii'

ii  libc6:amd64           2.32-4       amd64        GNU C Library: Shared libraries
ii  libc6:i386            2.32-4       i386         GNU C Library: Shared libraries
ii  libc6-dbg:amd64       2.32-4       amd64        GNU C Library: detached debugging symbols
ii  libc6-dev:amd64       2.32-4       amd64        GNU C Library: Development Libraries and Header Files
ii  libc6-dev-i386        2.32-4       amd64        GNU C Library: 32-bit development libraries for AMD64
ii  libc6-dev-x32         2.32-4       amd64        GNU C Library: X32 ABI Development Libraries for AMD64
ii  libc6-i386            2.32-4       amd64        GNU C Library: 32-bit shared libraries for AMD64
ii  libc6-x32             2.32-4       amd64        GNU C Library: X32 ABI Shared libraries for AMD64

versus:

apt list --installed libc6*

libc6-dbg/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev-i386/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev-x32/...,now 2.32-4 amd64 [installed,automatic]
libc6-dev/...,now 2.32-4 amd64 [installed,automatic]
libc6-i386/...,now 2.32-4 amd64 [installed,automatic]
libc6-x32/...,now 2.32-4 amd64 [installed,automatic]
libc6/...,now 2.32-4 amd64 [installed]
libc6/...,now 2.32-4 i386 [installed,automatic]

I believe the package you want to remove is this one:

libc6-dev-amd64/focal-updates,now 2.31-0ubuntu9.2 i386 [installed,automatic]  
  • Related