Re: F36 Change: Package information on ELF objects (System-Wide Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 25, 2021 at 03:09:00PM -0400, Ben Cotton wrote:
> https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects
> 
> == Summary ==
> All binaries (executables and shared libraries) are annotated with an
> ELF note that identifies the rpm for which this file was built. This
> allows binaries to be identified when they are distributed without any
> of the rpm metadata. `systemd-coredump` uses this to log package
> versions when reporting crashes.
> 
> == Owner ==
> * Name: [[User:Zbyszek|Zbigniew Jędrzejewski-Szmek]]
> * Email: zbyszek@xxxxxxxxx
> * Name: Lennart Poettering
> * Email: mzsrqben@xxxxxxxxxxxx
> 
> 
> == Detailed Description ==


> The directly motivating use case is display of core dumps. Right now
> we have build-ids, but those are just opaque hexadecimal numbers that
> are not meaningful to users. We would like to immediately list
> versions of packages involved in the crash (including both the program
> and any libraries it links to). It is not enough to query the rpm
> database to do the equivalent of `rpm -qf …`: very often programs
> crash after some packages have been upgraded and the binaries loaded
> into memory are not the binaries that are currently present on disk,
> or when through some mishap, the binaries on disk do not match the
> installed rpms.  A mechanism that works without rpm database lookup or
> network access allows this information to be showed immediately in
> `coredumpctl` listings and journal entries about the crash. This
> includes crashes that happen in the initrd and sandboxed containers.

Getting RPM NEVRs directly from the coredumps is something that
will be incredibly helpful for people dealing with support
requests after crashes. build-ids have always been very tedious
to deal with and as you say RPM database may be newer than what
is in memory.  This benefit alone will make it all worthwhile
from my POV.

> === Why not just use the rpm database? ===
> 
> <pre>
> 17:34:33 <dcantrell> The main reason for this appears to be that we
> need the RPM db locally to resolve build-ids to package names. But
> since containers wipe /var/lib/rpm, we can't do that. So the solution
> is to put the ''nevra'' in ELF metadata?
> 17:34:39 <dcantrell> That feels like the wrong approach.
> </pre>
> 
> First, there are legitimate reasons to strip packaging metadata from
> images. For example, for an initrd image from rpms, I get 117 MB of
> files (without compression), and out of this `/var/lib/rpm` is 5.9 MB,
> and `/var/lib/dnf` is 4.2 MB. This is an overhead of 9%. This is ''not
> much'', but still too much to keep in the image unless necessary.
> Similar ratios will happen for containers of similar size. Reducing
> image size by one tenth is important. There is no `rpm` or `dnf` in
> the image, to the package database is not even usable without external
> tools.
> 
> As discussed on IRC
> (https://meetbot.fedoraproject.org/teams/fesco/fesco.2021-05-11-17.01.log.html),
> the containers ''we'' build don't wipe this metadata, but custom
> Dockerfiles do that.

Also even if the RPM database is present, it might not reflect the
NEVRs of what is resident in-memory.

Furthermore as someone dealing with bug reports I don't have access
to the RPM database. That is on the end user's machine. Often all I
get is a core dump attached to a bug report, and if I'm lucky they
manually typed a couple of RPM NEVRs into the bug description. On
many occassions I've found the NEVRs the user supplied in the
description to be wrong due to mistakes on the bug reporter's side
collecting the data.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux