Hi, ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, July 21st, 2021 at 1:08 AM, Chris Marusich <cmmarus...@gmail.com> wrote: > Hi, > > I need a little help figuring out how to use gdb in Guix for bug 48941: > > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=48941 > > Here's the situation. A libfaketime test hangs forever. Upstream > > suggested I debug it. I'm trying to, but gdb errors out. What am I > > doing wrong? It's probably something simple, but I can't see what. > > I'll describe what I've done. First, I started a build like so: > > ./pre-inst-env guix build --keep-failed libfaketime > > While the problematic test hung, I found the PID of the test and killed > > it. This caused the build to fail, leaving the build environment for me > > to play around in. > > I entered a pure environment that contains all the things I need to > > debug the test (gcc 10.3.0 is currently the default gcc on > > core-updates): > > ./pre-inst-env guix environment --pure libfaketime --ad-hoc > gcc-toolchain@10.3.0 gcc-toolchain@10.3.0:debug gdb > > In the pure environment, I confirmed I can build and run the hanging > > test via the following commands (I added -g in order to get debug > > symbols): > > make FAKETIME_COMPILE_CFLAGS='-DFORCE_MONOTONIC_FIX -g' CC=gcc > PREFIX=/tmp/guix-build-libfaketime-0.9.9.drv-0/myprefix > > make FAKETIME_COMPILE_CFLAGS='-DFORCE_MONOTONIC_FIX -g' CC=gcc > PREFIX=/tmp/guix-build-libfaketime-0.9.9.drv-0/myprefix test > > OK, so I can trigger the hang. Great! Next step, fire up GDB: > > --8<---------------cut here---------------start------------->8--- > > [0] [env] marusich@suzaku:/tmp/guix-build-libfaketime-0.9.9.drv-0/source/test > > $ gdb ./timetest > > GNU gdb (GDB) 10.2 > > Copyright (C) 2021 Free Software Foundation, Inc. > > License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html > > This is free software: you are free to change and redistribute it. > > There is NO WARRANTY, to the extent permitted by law. > > Type "show copying" and "show warranty" for details. > > This GDB was configured as "powerpc64le-unknown-linux-gnu". > > Type "show configuration" for configuration details. > > For bug reporting instructions, please see: > > https://www.gnu.org/software/gdb/bugs/. > > Find the GDB manual and other documentation resources online at: > > http://www.gnu.org/software/gdb/documentation/. > > For help, type "help". > > Type "apropos word" to search for commands related to "word"... > > Reading symbols from ./timetest... > > (gdb) > > --8<---------------cut here---------------end--------------->8--- > > The debug symbols provided by gcc-toolchain@10.3.0:debug are under > > $GUIX_ENVIRONMENT/lib/debug. This is the value of GUIX_ENVIRONMENT: > > --8<---------------cut here---------------start------------->8--- > > $ echo $GUIX_ENVIRONMENT > > /gnu/store/32fjhp30k34fh0g9f1gmgcj8pc5wldq6-profile > > --8<---------------cut here---------------end--------------->8--- > > By the way, this directory corresponds to glibc 2.33: > > --8<---------------cut here---------------start------------->8--- > > $ realpath /gnu/store/32fjhp30k34fh0g9f1gmgcj8pc5wldq6-profile/lib/debug > > /gnu/store/8akrlhc25d7xvi85gzvginw0vdi4zyg4-glibc-2.33-debug/lib/debug > > --8<---------------cut here---------------end--------------->8--- > > Let's tell GDB where to find those debug symbols: > > (gdb) set debug-file-directory > /gnu/store/32fjhp30k34fh0g9f1gmgcj8pc5wldq6-profile/lib/debug > > Let's also tell GDB to set the environment variables that upstream > > recommended when running the test program: > > --8<---------------cut here---------------start------------->8--- > > (gdb) set environment LD_PRELOAD=../src/libfaketime.so.1 > > (gdb) set environment FAKETIME=-10d > > (gdb) set environment NO_FAKE_STAT=1 > > --8<---------------cut here---------------end--------------->8--- > > Now run it: > > --8<---------------cut here---------------start------------->8--- > > (gdb) run > > Starting program: /tmp/guix-build-libfaketime-0.9.9.drv-0/source/test/timetest > > /bin/sh: /lib/powerpc64le-linux-gnu/libc.so.6: version `GLIBC_2.33' not found > (required by ../src/libfaketime.so.1) /bin/sh: > /lib/powerpc64le-linux-gnu/libc.so.6: version` GLIBC_2.32' not found > (required by > /gnu/store/kmblbljiygayhlc5gb02an9imhy90ws9-glibc-2.33/lib/libpthread.so.0) Are you using Guix on a foreign distro? This line looks like your distro's normal libc.so was being used and it was from glibc-2.31 or older. The x86-64 systems I have that run pure Guix don't have any /lib*/ directories. You might try running gdb with LD_LIBRARY_PATH=/gnu/store/kmblbljiygayhlc5gb02an9imhy90ws9-glibc-2.33/lib to have the Guix libc.so picked up before the other one. HTH Cheers, Kaelyn > > /bin/sh: /lib/powerpc64le-linux-gnu/libc.so.6: version `GLIBC_2.32' not found > (required by > /gnu/store/kmblbljiygayhlc5gb02an9imhy90ws9-glibc-2.33/lib/libdl.so.2) > /bin/sh: /lib/powerpc64le-linux-gnu/libc.so.6: version` GLIBC_2.32' not found > (required by > /gnu/store/kmblbljiygayhlc5gb02an9imhy90ws9-glibc-2.33/lib/librt.so.1) > > During startup program exited with code 1. > > (gdb) > > --8<---------------cut here---------------end--------------->8--- > > Huh? What happened? I've double checked that I'm using gdb provided by > > Guix: > > --8<---------------cut here---------------start------------->8--- > > $ type -P gdb > > /gnu/store/32fjhp30k34fh0g9f1gmgcj8pc5wldq6-profile/bin/gdb > > --8<---------------cut here---------------end--------------->8--- > > I also tried running gdb by invoking it via that absolute file name, and > > it still errored out in the same way. > > I'm operating in a --pure environment. All the tools are provided by > > Guix. I'm surprised that /bin/sh and /lib are even mentioned above. > > If anyone can provide any advice, I'd be very grateful. I'm not sure > > how to proceed. > > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Chris