Guile 3.0.9 in guix shell container with emulated FHS throws ldconfig error @ a050897

  • Open
  • quality assurance status badge
Details
4 participants
  • Thiago Jung Bauermann
  • Juliana Sims
  • Rostislav Svoboda
  • Simon Tournier
Owner
unassigned
Submitted by
Juliana Sims
Severity
normal
J
J
Juliana Sims wrote on 23 Jul 2023 02:58
(address . bug-guix@gnu.org)
LD58YR.ATVC3UZJBDDA3@incana.org
Hi,

When entering `guix shell -CF guile[@3]`, I receive the following
error:
"ldconfig: /lib/libguile-3.0.so.1.6.0-gdb.scm is not an ELF file - it
has the wrong magic bytes at the start."

Here is the information for my version of Guix:
```
(channel
(name 'guix)
(branch "master")
(commit
"a0508975dd6c70a2d2997a75c302a9fd42f7c370")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))
```

Thanks,
Juli
Attachment: file
S
S
Simon Tournier wrote on 20 Sep 2023 08:55
86v8c52v0m.fsf@gmail.com
Hi,

On Sat, 22 Jul 2023 at 20:58, Juliana Sims <juli@incana.org> wrote:

Toggle quote (5 lines)
> When entering `guix shell -CF guile[@3]`, I receive the following
> error:
> "ldconfig: /lib/libguile-3.0.so.1.6.0-gdb.scm is not an ELF file - it
> has the wrong magic bytes at the start."

[...]

Toggle quote (3 lines)
> (commit
> "a0508975dd6c70a2d2997a75c302a9fd42f7c370")

I confirm the message:

Toggle snippet (4 lines)
$ guix shell -CF guile@3
ldconfig: /lib/libguile-3.0.so.1.6.0-gdb.scm is not an ELF file - it has the wrong magic bytes at the start.

with Guix revision 6113e0529d61df7425f64e30a6bf77f7cfdfe5a5.

Is it a warning or an error? Other said, which feature does it break?


Cheers,
simon
R
R
Rostislav Svoboda wrote on 20 Jun 15:00 +0200
Re: Guile 3.0.9 in guix shell container with emulated FHS throws ldconfig error @ a050897
(address . 64794@debbugs.gnu.org)
CAEtmmeyJ8S0+hfXgtDu1oMKHqJvdmmBti3ThC3ZympjGV9PbeQ@mail.gmail.com
The warning appears also for guile@2.0 and later. guile@1.8 works fine:

```
$ guix shell --emulate-fhs --container guile@1.8
[env]$ exit
$ guix shell --emulate-fhs --container guile@2.0
ldconfig: /lib/libguile-2.0.so.22.8.1-gdb.scm is not an ELF file - it
has the wrong magic bytes at the start.

[env]$
```
T
T
Thiago Jung Bauermann wrote on 20 Jun 18:17 +0200
Re: bug#64794: Guile 3.0.9 in guix shell container with emulated FHS throws ldconfig error @ a050897
(name . Rostislav Svoboda)(address . rostislav.svoboda@gmail.com)(address . 64794@debbugs.gnu.org)
86r0cry4ev.fsf@kolabnow.com
Hello,

Rostislav Svoboda <rostislav.svoboda@gmail.com> writes:

Toggle quote (12 lines)
> The warning appears also for guile@2.0 and later. guile@1.8 works fine:
>
> ```
> $ guix shell --emulate-fhs --container guile@1.8
> [env]$ exit
> $ guix shell --emulate-fhs --container guile@2.0
> ldconfig: /lib/libguile-2.0.so.22.8.1-gdb.scm is not an ELF file - it
> has the wrong magic bytes at the start.
>
> [env]$
> ```

The error is harmless. AFAIU ldconfig ignores the non-ELF file and
compiles the ld cache with the ELF shared libraries.

libguile-…-gdb.scm is a GDB extension file¹ that GDB auto-loads when
debugging programs using libguile.so². From the beginning of said .scm
file:

;;; Commentary:
;;;
;;; This file defines GDB extensions to pretty-print 'SCM' objects, and
;;; to walk Guile's virtual machine stack.
;;;
;;; This file is installed under a name that follows the convention that
;;; allows GDB to auto-load it anytime the user is debugging libguile
;;; (info "(gdb) objfile-gdbdotext file").

In distros using the Filesystem Hierarchy Standard, this file is
installed in GDB's data directory instead of /lib, so ldconfig doesn't
run into it. For example, in Debian/Ubuntu:

$ dpkg -L guile-3.0-dev | grep gdb.scm
/usr/share/gdb/auto-load/libguile-3.0.so.1.6.0-gdb.scm

Unfortunately, in the case of Guix the auto-load directory is in GDB's
own immutable installation directory so Guile can't put it there:

$ gdb -q
(gdb) show auto-load scripts-directory
List of directories from which to load auto-loaded scripts is $debugdir:$datadir/auto-load.
(gdb) show data-directory
GDB's data directory is "/gnu/store/i6x19fvlb1ladc3hcg70hnkcq6i6x232-gdb-14.2/share/gdb".

One way to improve that would be to propose a patch to upstream GDB so
that additional auto-load scripts directories could be specified via an
environment variable. Then Guile and other packages that provided GDB
extentions (such as libstdc++) could install them in their respective
/gnu/store/…-package/share/gdb/auto-load directories, and the Guix
profile could set the GDB environment variable to point to them.

--
Thiago

?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 64794@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 64794
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch