On Wed, Feb 06, 2019 at 03:35:23AM +0530, Prasanna V. Loganathar wrote:
> >
> > You need to have apport itself installed in the container, I suspect
> > that the Docker containers do not have it.
> 
> 
> This will make no difference. Doing an `apt update && apt install -y
> apport` will not do any good, as apport is set to disable itself on
> containers.

And indeed Docker doesn't even have an init system running so that'd be
pretty useless as the apport forwarding service wouldn't work.

> > Having the dump handled by apport on the host would be useless as the
> > host doesn't know what binary was used to produce the dump (and so can't
> > be used with retracers) nor can it capture any of the crash environment
> > information as the relevant data is in the container, not in the host.
> >
> 
> Precisely my point. But this is not a problem with systemd-coredump, as it
> simply just manages the dumps. Doesn't need retracing. All
> RHEL/Fedora/CentOS based distros work without any modifications, as
> expected. With containers everywhere, I think it's reconsidering the
> default and unifying things around system-coredump effort simplifies things
> for everyone. coredumpctl is also much nicer to work with. apport should
> easily be able to just watch over the dumps and do it's reporting on
> desktop systems from there.

Except for the part where a coredump for an unknown binary is useless.

So having all the dumps centralized on the host when you don't know what
container it came from and may no longer have any of the environment
information is completely useless.

That's why our current setup is to forward the crash to the containers
when the containers are detected to know how to handle coredumps and
otherwise throw them out as they're not going to be of any use.


For people who are actively debugging a container that's getting crashes
and know what binary to use with the dumped core file, it's not a huge
deal to change the core dump handler (stopping the apport service will
even do that for you).

Those people make for a fraction of a percent of Ubuntu's userbase,
everyone else strongly benefits from crash reports being handed over to
apport where extra data is captured and the resulting crashes can be
send to errors.ubuntu.com for retracing and aggregation.


> On Wed, Feb 6, 2019 at 3:22 AM Stéphane Graber <stgra...@ubuntu.com> wrote:
> 
> > On Wed, Feb 06, 2019 at 03:05:20AM +0530, Prasanna V. Loganathar wrote:
> > > Hi Stephane,
> > >
> > > Ah. I had overlooked this one. It does work well in lxc. Thanks for
> > > pointing that out.
> > > However, apport's default is to do nothing in containers.
> > >
> > > docker run --name testbox --rm -it ubuntu bash
> > > > sleep 10 & kill -ABRT $(pgrep sleep)
> > >
> > > This has no /var/crash directory. There are no dumps. Doesn't help
> > > with "--ulimit core=x:x" to docker option either.
> >
> > You need to have apport itself installed in the container, I suspect
> > that the Docker containers do not have it.
> >
> > Having the dump handled by apport on the host would be useless as the
> > host doesn't know what binary was used to produce the dump (and so can't
> > be used with retracers) nor can it capture any of the crash environment
> > information as the relevant data is in the container, not in the host.
> >
> > >
> > > On Tue, Feb 5, 2019 at 10:32 PM Stéphane Graber <stgra...@ubuntu.com>
> > wrote:
> > > >
> > > > On Tue, Feb 05, 2019 at 06:36:48AM +0530, Prasanna V. Loganathar wrote:
> > > > > Hi Stephane,
> > > > >
> > > > > Thanks for the reply. Please correct me if I'm wrong.
> > > > >
> > > > > lxc launch ubuntu:18:04 testbox
> > > > > lxc exec testbox bash
> > > > > sleep 100 & kill -ABRT $(pgrep sleep)
> > > >
> > > > stgraber@castiana:~$ lxc launch ubuntu:18.04 testbox
> > > > Creating testbox
> > > > Starting testbox
> > > > stgraber@castiana:~$ lxc exec testbox bash
> > > > root@testbox:~# sleep 10 &
> > > > [1] 303
> > > > root@testbox:~# kill -ABRT 303
> > > > root@testbox:~#
> > > > [1]+  Aborted                 (core dumped) sleep 10
> > > > root@testbox:~# ls -lh /var/crash
> > > > total 512
> > > > -rw-r----- 1 root root 34K Feb  5 17:02 _bin_sleep.0.crash
> > > > root@testbox:~#
> > > >
> > > > > There's no crash dump anywhere.
> > > > >
> > > > > /var/crash is empty. No `core` file, etc. The default is
> > > > > crashes just vaporises itself - that's my biggest concern. While, for
> > > > > instance on a debian - you can rely on a 'core' file, or on
> > > > > CentOS/RHEL, you can always rely on a systemd-coredump
> > infrastructure,
> > > > > and addressed so nicely by the coredumpctl command.
> > > > >
> > > > > With systemd being the init, and coredumpctl being very well
> > > > > architectured to manage this, I just don't see why Ubuntu shouldn't
> > > > > make use of that and have apport only do what it does best - which is
> > > > > primarily reporting.
> > > > >
> > > > >
> > > > >
> > > > > On Tue, Feb 5, 2019 at 1:57 AM Stéphane Graber <stgra...@ubuntu.com>
> > wrote:
> > > > > >
> > > > > > On Sat, Feb 02, 2019 at 03:34:22AM +0530, Prasanna V. Loganathar
> > wrote:
> > > > > > > Hi folks,
> > > > > > >
> > > > > > > Currently, `$ sysctl kernel.core_pattern` gives
> > > > > > > `kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P`
> > > > > > >
> > > > > > > This is usually fine, however, when run from containers or lxc
> > this
> > > > > > > will just error out, with no core dump being produced, due to it
> > being
> > > > > > > disabled. Adding to the problem: with container or lxc, you
> > can't just
> > > > > > > change it per container, and should be changed on the host. And
> > it's
> > > > > > > not reasonable to expect apport in all containers either. Since,
> > this
> > > > > > > is a common problem, I think it's important to consider a change
> > in
> > > > > > > the default handling.
> > > > > > >
> > > > > > > There are multiple options to deal with this:
> > > > > > >
> > > > > > > 1. Drop apport as default core_pattern handler and switch to a
> > simple
> > > > > > > file in either /var/crash (this requires creating /var/crash as
> > a part
> > > > > > > of the installation as it's currently created by apport), or
> > /tmp and
> > > > > > > let apport handle the core dump after the fact, and report it.
> > > > > > >
> > > > > > > 2. Switch to systemd-coredump, and default to it, since it
> > already
> > > > > > > does this very well and provides "coredumpctl" which is much
> > nicer to
> > > > > > > work with. systemd-coredump also is a part of the systemd suite
> > of
> > > > > > > utils and doesn't pull in a larger dependency as apport -- which
> > to
> > > > > > > date, isn't as robust (I still have "core" files being left all
> > over
> > > > > > > the place due to the fact that apport reset's itself and crashes
> > > > > > > during startup aren't handled properly). This also has a nice
> > > > > > > advantage of unifying the OSS community in terms of coredump
> > handler.
> > > > > > > apport can handle things from the core dumps that systemd
> > generates,
> > > > > > > further on desktops.
> > > > > > >
> > > > > > > 3. Employ a tiny helper script, as the default core dump handler,
> > > > > > > which looks for specified programs such as "apport", "abrt",
> > > > > > > systemd-coredump" and pipes to them, or pipes it to /var/crash,
> > or
> > > > > > > /tmp during it's absence. This does have the disadvantage of
> > growing
> > > > > > > with it's own config, rather quickly.
> > > > > > >
> > > > > > > That being said, I highly suggest option 2 be used in the
> > upcoming
> > > > > > > versions, and apport be a layer sitting on top of the coredumps
> > > > > > > generated by systemd-coredumps by either hooking into it, or by
> > > > > > > watching it's folders.
> > > > > > >
> > > > > > > I've also filed this as a bug here:
> > > > > > > https://bugs.launchpad.net/ubuntu/+bug/1813403
> > > > > >
> > > > > > Are you aware that apport is aware of containers (LXC & LXD) and
> > will
> > > > > > just forward your crash to apport inside the container?
> > > > > >
> > > > > > That actually tends to be a better way to handle things that
> > > > > > centralizing all crashes on the host as monitoring tools running
> > inside
> > > > > > the containers will operate as normal, reporting on the presence
> > of a
> > > > > > crash file, as well, sending the bug report to Launchpad will then
> > work
> > > > > > properly, capturing the details from the container rather than
> > > > > > confusingly mixing package details of the host with a crash that
> > may
> > > > > > have come from a completely different release.
> > > > > >
> > > > > > There's obviously nothing wrong with someone opting out of apport
> > and
> > > > > > switching to whatever core dump handler they want, but for Ubuntu,
> > > > > > apport has much better integration with the distribution, has
> > hooks in
> > > > > > many packages and was designed with proper container support.
> > > > > >
> > > > > > --
> > > > > > Stéphane Graber
> > > > > > Ubuntu developer
> > > > > > http://www.ubuntu.com
> > > >
> > > > --
> > > > Stéphane Graber
> > > > Ubuntu developer
> > > > http://www.ubuntu.com
> >
> > --
> > Stéphane Graber
> > Ubuntu developer
> > http://www.ubuntu.com
> >

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com

Attachment: signature.asc
Description: PGP signature

-- 
Ubuntu-devel-discuss mailing list
Ubuntu-devel-discuss@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss

Reply via email to