Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
* [lttng-dev] Capturing snapshot on kernel panic
@ 2024-05-15 22:24 Damien Berget via lttng-dev
  2024-05-16 13:37 ` Kienan Stewart via lttng-dev
  0 siblings, 1 reply; 5+ messages in thread
From: Damien Berget via lttng-dev @ 2024-05-15 22:24 UTC (permalink / raw)
  To: lttng-dev


[-- Attachment #1.1: Type: text/plain, Size: 1938 bytes --]

Good day,
we have been using LTTng successfully to capture snapshots on user defined
tracepoints and it did provide invaluable to debug our issues. Thanks to
all the contributors of this project!

We'd like to know if it would be possible to trigger on a kernel panic? I
might be dubiously possible as you would still need to have the file-system
working to write the results but I should ask.

Looking at available kernel syscall, the "reboot" one seems like a good
candidate, however I was not able to capture a snapshot on it. I have
tested the setup below with "--name=chdir" syscall and it works, "cd" to a
directory will create a trace. But no dice with reboot.

Would you have any suggestions?
Thanks for your help,
Cheers
Damien

============================

# Prep output dir
mkdir /application/trace/
rm -rf /application/trace/*

# Create session
sudo lttng destroy snapshot-trace-session
sudo lttng create snapshot-trace-session --snapshot
--output="/application/trace/"
sudo lttng enable-channel --kernel --num-subbuf=8 channelk
sudo lttng enable-channel --userspace --num-subbuf=8 channelu

# Configure session
sudo lttng enable-event --kernel --syscall --all --channel channelk
sudo lttng enable-event --kernel --tracepoint "sched*" --channel channelk
sudo lttng enable-event --userspace --all --channel channelu
sudo lttng add-context -u -t vtid -t procname
sudo lttng remove-trigger trig_reboot
sudo lttng add-trigger --name=trig_reboot \
        --condition=event-rule-matches --type=kernel:syscall:entry \
        --name=reboot\
        --action=snapshot-session snapshot-trace-session \
        --rate-policy=once-after:1

# start & list info
sudo lttng start
sudo lttng list snapshot-trace-session
sudo lttng list-triggers

#======== test it...
sudo reboot

#======= reconnect and Nothing :(
$ ls -alu /application/trace/
drwxr-xr-x    2 u  u       4096 May 15  2024 .
drwxr-xr-x   10 u  u       4096 May 15  2024 ..

[-- Attachment #1.2: Type: text/html, Size: 2374 bytes --]

[-- Attachment #2: Type: text/plain, Size: 156 bytes --]

_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [lttng-dev] Capturing snapshot on kernel panic
  2024-05-15 22:24 [lttng-dev] Capturing snapshot on kernel panic Damien Berget via lttng-dev
@ 2024-05-16 13:37 ` Kienan Stewart via lttng-dev
  2024-05-16 15:12   ` Kienan Stewart via lttng-dev
  0 siblings, 1 reply; 5+ messages in thread
From: Kienan Stewart via lttng-dev @ 2024-05-16 13:37 UTC (permalink / raw)
  To: lttng-dev

Hi Damien,


On 5/15/24 6:24 PM, Damien Berget via lttng-dev wrote:
> Good day,
> we have been using LTTng successfully to capture snapshots on user 
> defined tracepoints and it did provide invaluable to debug our issues. 
> Thanks to all the contributors of this project!
> 
> We'd like to know if it would be possible to trigger on a kernel panic? 
> I might be dubiously possible as you would still need to have the 
> file-system working to write the results but I should ask.
> 

For userspace tracing, I think the recommendation is usually to use a 
dax/pmem device and have the buffers for the session mapped there. After 
a panic, the contents of the buffers can be restored using lttng-crash[1].

Note that dax/pem isn't supported by the kernel space tracer at this time.

If I recall, there are other ways to things in the panic sequence (that 
aren't lttng specific), but I'm personally not as familiar with the 
details of that stage of linux.

> Looking at available kernel syscall, the "reboot" one seems like a good 
> candidate, however I was not able to capture a snapshot on it. I have 
> tested the setup below with "--name=chdir" syscall and it works, "cd" to 
> a directory will create a trace. But no dice with reboot.
> 

The details of how this work will depend on your system. For example, my 
installations tend to use systemd as PID 1. The broad strokes seem to 
be: `/usr/sbin/reboot` is actually a link to `systemctl`, which I 
believe then kicks off the reboot.service, the PID 1 is swapped to 
/usr/lib/systemd/systemd-shutdown, sigterm then sigkill are sent to all 
processes, unmounts, syncs, calls the reboot system call [2,3].

As both the sigterm and the unmounts are done before the syscall, 
lttng-sessiond and the consumers will have already shutdown by the time 
it enters.

While this doesn't necessarily help your original question of panics, if 
you want to snapshot before shutdown or reboot and are using systemd, 
it's possible to leave a script or binary in a known directory so that 
it's invoked prior to the rest of the shutdown sequence[4].

[1]: https://lttng.org/docs/v2.13/#doc-persistent-memory-file-systems
[2]: 
https://github.com/systemd/systemd/blob/6533c14997700f74e9ea42121303fc1f5c63e62b/src/shutdown/shutdown.c
[3]: 
https://github.com/systemd/systemd/blob/main/src/shared/reboot-util.c#L77
[4]: https://www.systutorials.com/docs/linux/man/8-systemd-reboot/

hope this helps,
kienan

> Would you have any suggestions?
> Thanks for your help,
> Cheers
> Damien
> 
> ============================
> 
> # Prep output dir
> mkdir /application/trace/
> rm -rf /application/trace/*
> 
> # Create session
> sudo lttng destroy snapshot-trace-session
> sudo lttng create snapshot-trace-session --snapshot 
> --output="/application/trace/"
> sudo lttng enable-channel --kernel --num-subbuf=8 channelk
> sudo lttng enable-channel --userspace --num-subbuf=8 channelu
> 
> # Configure session
> sudo lttng enable-event --kernel --syscall --all --channel channelk
> sudo lttng enable-event --kernel --tracepoint "sched*" --channel channelk
> sudo lttng enable-event --userspace --all --channel channelu
> sudo lttng add-context -u -t vtid -t procname
> sudo lttng remove-trigger trig_reboot
> sudo lttng add-trigger --name=trig_reboot \
>          --condition=event-rule-matches --type=kernel:syscall:entry \
>          --name=reboot\
>          --action=snapshot-session snapshot-trace-session \
>          --rate-policy=once-after:1
> 
> # start & list info
> sudo lttng start
> sudo lttng list snapshot-trace-session
> sudo lttng list-triggers
> 
> #======== test it...
> sudo reboot
> 
> #======= reconnect and Nothing :(
> $ ls -alu /application/trace/
> drwxr-xr-x    2 u  u       4096 May 15  2024 .
> drwxr-xr-x   10 u  u       4096 May 15  2024 ..
> 
> 
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [lttng-dev] Capturing snapshot on kernel panic
  2024-05-16 13:37 ` Kienan Stewart via lttng-dev
@ 2024-05-16 15:12   ` Kienan Stewart via lttng-dev
  2024-05-16 18:22     ` Damien Berget via lttng-dev
  0 siblings, 1 reply; 5+ messages in thread
From: Kienan Stewart via lttng-dev @ 2024-05-16 15:12 UTC (permalink / raw)
  To: lttng-dev, damien.berget

Hi Damien,

I want to expand on one of the options that could work for your case.

On 5/16/24 9:37 AM, Kienan Stewart via lttng-dev wrote:
> Hi Damien,
> 
> 
> On 5/15/24 6:24 PM, Damien Berget via lttng-dev wrote:
>> Good day,
>> we have been using LTTng successfully to capture snapshots on user 
>> defined tracepoints and it did provide invaluable to debug our issues. 
>> Thanks to all the contributors of this project!
>>
>> We'd like to know if it would be possible to trigger on a kernel 
>> panic? I might be dubiously possible as you would still need to have 
>> the file-system working to write the results but I should ask.
>>
> 
> For userspace tracing, I think the recommendation is usually to use a 
> dax/pmem device and have the buffers for the session mapped there. After 
> a panic, the contents of the buffers can be restored using lttng-crash[1].
> 
> Note that dax/pem isn't supported by the kernel space tracer at this time.
> 
> If I recall, there are other ways to things in the panic sequence (that 
> aren't lttng specific), but I'm personally not as familiar with the 
> details of that stage of linux.
> 

It's possible to kexec-tools to load a new kernel post-panic[1]. If your 
system uses kexec, the contents of RAM aren't necessarily flushed, and 
if both the initial kernel and post-panic kernel started by kexec have 
the same configuration for an emulated PMEM device using the memmap 
paramenter [2,3] that region of memory can have a daxfs created in it 
post-clean boot.

Note: some systems may not flush the memory during a warm reboot, but 
this is dependent on the BIOS.

When your system boots you could do something like the following:

  * If it's a clean boot, create the daxfs
  * If it's an "unclean" boot (e.g. the daxfs already exists, or a 
kernel parameter informs you that it started post-panic) then you can 
copy/move/use lttng-crash to persistent storage for analysis
  * Start tracing using a snapshot session and the userspace buffers on 
the daxfs.

In this type of situation the "snapshot" command is never invoked 
directly, but the recovery of the buffers to create a snapshot is possible.

[1]: https://www.kernel.org/doc/html/latest/admin-guide/kdump/kdump.html
[2]: 
https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
[3]: 
https://docs.pmem.io/persistent-memory/getting-started-guide/creating-development-environments/linux-environments/linux-memmap

thanks,
kienan

>> Looking at available kernel syscall, the "reboot" one seems like a 
>> good candidate, however I was not able to capture a snapshot on it. I 
>> have tested the setup below with "--name=chdir" syscall and it 
>> works, "cd" to a directory will create a trace. But no dice with reboot.
>>
> 
> The details of how this work will depend on your system. For example, my 
> installations tend to use systemd as PID 1. The broad strokes seem to 
> be: `/usr/sbin/reboot` is actually a link to `systemctl`, which I 
> believe then kicks off the reboot.service, the PID 1 is swapped to 
> /usr/lib/systemd/systemd-shutdown, sigterm then sigkill are sent to all 
> processes, unmounts, syncs, calls the reboot system call [2,3].
> 
> As both the sigterm and the unmounts are done before the syscall, 
> lttng-sessiond and the consumers will have already shutdown by the time 
> it enters.
> 
> While this doesn't necessarily help your original question of panics, if 
> you want to snapshot before shutdown or reboot and are using systemd, 
> it's possible to leave a script or binary in a known directory so that 
> it's invoked prior to the rest of the shutdown sequence[4].
> 
> [1]: https://lttng.org/docs/v2.13/#doc-persistent-memory-file-systems
> [2]: 
> https://github.com/systemd/systemd/blob/6533c14997700f74e9ea42121303fc1f5c63e62b/src/shutdown/shutdown.c
> [3]: 
> https://github.com/systemd/systemd/blob/main/src/shared/reboot-util.c#L77
> [4]: https://www.systutorials.com/docs/linux/man/8-systemd-reboot/
> 
> hope this helps,
> kienan
> 
>> Would you have any suggestions?
>> Thanks for your help,
>> Cheers
>> Damien
>>
>> ============================
>>
>> # Prep output dir
>> mkdir /application/trace/
>> rm -rf /application/trace/*
>>
>> # Create session
>> sudo lttng destroy snapshot-trace-session
>> sudo lttng create snapshot-trace-session --snapshot 
>> --output="/application/trace/"
>> sudo lttng enable-channel --kernel --num-subbuf=8 channelk
>> sudo lttng enable-channel --userspace --num-subbuf=8 channelu
>>
>> # Configure session
>> sudo lttng enable-event --kernel --syscall --all --channel channelk
>> sudo lttng enable-event --kernel --tracepoint "sched*" --channel channelk
>> sudo lttng enable-event --userspace --all --channel channelu
>> sudo lttng add-context -u -t vtid -t procname
>> sudo lttng remove-trigger trig_reboot
>> sudo lttng add-trigger --name=trig_reboot \
>>          --condition=event-rule-matches --type=kernel:syscall:entry \
>>          --name=reboot\
>>          --action=snapshot-session snapshot-trace-session \
>>          --rate-policy=once-after:1
>>
>> # start & list info
>> sudo lttng start
>> sudo lttng list snapshot-trace-session
>> sudo lttng list-triggers
>>
>> #======== test it...
>> sudo reboot
>>
>> #======= reconnect and Nothing :(
>> $ ls -alu /application/trace/
>> drwxr-xr-x    2 u  u       4096 May 15  2024 .
>> drwxr-xr-x   10 u  u       4096 May 15  2024 ..
>>
>>
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev@lists.lttng.org
>> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [lttng-dev] Capturing snapshot on kernel panic
  2024-05-16 15:12   ` Kienan Stewart via lttng-dev
@ 2024-05-16 18:22     ` Damien Berget via lttng-dev
  2024-05-16 19:56       ` Mathieu Desnoyers via lttng-dev
  0 siblings, 1 reply; 5+ messages in thread
From: Damien Berget via lttng-dev @ 2024-05-16 18:22 UTC (permalink / raw)
  To: Kienan Stewart; +Cc: lttng-dev


[-- Attachment #1.1: Type: text/plain, Size: 6688 bytes --]

Thanks Kienan for these quick suggestions,
we'll investigate the pmem route (I was not aware of the lttng-cash
utility, it's pretty nice) even if I'm not sure how fast it would burn
through our SSD, it might still be worth trying.
As for kexec-tool, it's not officially supported on our embedded modules
unfortunately, so we might be SOL there. We may have to try to add our own
trace-point in kernel to use as trigger.
Cheers
Damien

On Thu, May 16, 2024 at 8:12 AM Kienan Stewart <kstewart@efficios.com>
wrote:

> Hi Damien,
>
> I want to expand on one of the options that could work for your case.
>
> On 5/16/24 9:37 AM, Kienan Stewart via lttng-dev wrote:
> > Hi Damien,
> >
> >
> > On 5/15/24 6:24 PM, Damien Berget via lttng-dev wrote:
> >> Good day,
> >> we have been using LTTng successfully to capture snapshots on user
> >> defined tracepoints and it did provide invaluable to debug our issues.
> >> Thanks to all the contributors of this project!
> >>
> >> We'd like to know if it would be possible to trigger on a kernel
> >> panic? I might be dubiously possible as you would still need to have
> >> the file-system working to write the results but I should ask.
> >>
> >
> > For userspace tracing, I think the recommendation is usually to use a
> > dax/pmem device and have the buffers for the session mapped there. After
> > a panic, the contents of the buffers can be restored using
> lttng-crash[1].
> >
> > Note that dax/pem isn't supported by the kernel space tracer at this
> time.
> >
> > If I recall, there are other ways to things in the panic sequence (that
> > aren't lttng specific), but I'm personally not as familiar with the
> > details of that stage of linux.
> >
>
> It's possible to kexec-tools to load a new kernel post-panic[1]. If your
> system uses kexec, the contents of RAM aren't necessarily flushed, and
> if both the initial kernel and post-panic kernel started by kexec have
> the same configuration for an emulated PMEM device using the memmap
> paramenter [2,3] that region of memory can have a daxfs created in it
> post-clean boot.
>
> Note: some systems may not flush the memory during a warm reboot, but
> this is dependent on the BIOS.
>
> When your system boots you could do something like the following:
>
>   * If it's a clean boot, create the daxfs
>   * If it's an "unclean" boot (e.g. the daxfs already exists, or a
> kernel parameter informs you that it started post-panic) then you can
> copy/move/use lttng-crash to persistent storage for analysis
>   * Start tracing using a snapshot session and the userspace buffers on
> the daxfs.
>
> In this type of situation the "snapshot" command is never invoked
> directly, but the recovery of the buffers to create a snapshot is possible.
>
> [1]: https://www.kernel.org/doc/html/latest/admin-guide/kdump/kdump.html
> [2]:
> https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
> [3]:
>
> https://docs.pmem.io/persistent-memory/getting-started-guide/creating-development-environments/linux-environments/linux-memmap
>
> thanks,
> kienan
>
> >> Looking at available kernel syscall, the "reboot" one seems like a
> >> good candidate, however I was not able to capture a snapshot on it. I
> >> have tested the setup below with "--name=chdir" syscall and it
> >> works, "cd" to a directory will create a trace. But no dice with reboot.
> >>
> >
> > The details of how this work will depend on your system. For example, my
> > installations tend to use systemd as PID 1. The broad strokes seem to
> > be: `/usr/sbin/reboot` is actually a link to `systemctl`, which I
> > believe then kicks off the reboot.service, the PID 1 is swapped to
> > /usr/lib/systemd/systemd-shutdown, sigterm then sigkill are sent to all
> > processes, unmounts, syncs, calls the reboot system call [2,3].
> >
> > As both the sigterm and the unmounts are done before the syscall,
> > lttng-sessiond and the consumers will have already shutdown by the time
> > it enters.
> >
> > While this doesn't necessarily help your original question of panics, if
> > you want to snapshot before shutdown or reboot and are using systemd,
> > it's possible to leave a script or binary in a known directory so that
> > it's invoked prior to the rest of the shutdown sequence[4].
> >
> > [1]: https://lttng.org/docs/v2.13/#doc-persistent-memory-file-systems
> > [2]:
> >
> https://github.com/systemd/systemd/blob/6533c14997700f74e9ea42121303fc1f5c63e62b/src/shutdown/shutdown.c
> > [3]:
> >
> https://github.com/systemd/systemd/blob/main/src/shared/reboot-util.c#L77
> > [4]: https://www.systutorials.com/docs/linux/man/8-systemd-reboot/
> >
> > hope this helps,
> > kienan
> >
> >> Would you have any suggestions?
> >> Thanks for your help,
> >> Cheers
> >> Damien
> >>
> >> ============================
> >>
> >> # Prep output dir
> >> mkdir /application/trace/
> >> rm -rf /application/trace/*
> >>
> >> # Create session
> >> sudo lttng destroy snapshot-trace-session
> >> sudo lttng create snapshot-trace-session --snapshot
> >> --output="/application/trace/"
> >> sudo lttng enable-channel --kernel --num-subbuf=8 channelk
> >> sudo lttng enable-channel --userspace --num-subbuf=8 channelu
> >>
> >> # Configure session
> >> sudo lttng enable-event --kernel --syscall --all --channel channelk
> >> sudo lttng enable-event --kernel --tracepoint "sched*" --channel
> channelk
> >> sudo lttng enable-event --userspace --all --channel channelu
> >> sudo lttng add-context -u -t vtid -t procname
> >> sudo lttng remove-trigger trig_reboot
> >> sudo lttng add-trigger --name=trig_reboot \
> >>          --condition=event-rule-matches --type=kernel:syscall:entry \
> >>          --name=reboot\
> >>          --action=snapshot-session snapshot-trace-session \
> >>          --rate-policy=once-after:1
> >>
> >> # start & list info
> >> sudo lttng start
> >> sudo lttng list snapshot-trace-session
> >> sudo lttng list-triggers
> >>
> >> #======== test it...
> >> sudo reboot
> >>
> >> #======= reconnect and Nothing :(
> >> $ ls -alu /application/trace/
> >> drwxr-xr-x    2 u  u       4096 May 15  2024 .
> >> drwxr-xr-x   10 u  u       4096 May 15  2024 ..
> >>
> >>
> >> _______________________________________________
> >> lttng-dev mailing list
> >> lttng-dev@lists.lttng.org
> >> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> > _______________________________________________
> > lttng-dev mailing list
> > lttng-dev@lists.lttng.org
> > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>


-- 
*Damien Berget*

[-- Attachment #1.2: Type: text/html, Size: 9375 bytes --]

[-- Attachment #2: Type: text/plain, Size: 156 bytes --]

_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [lttng-dev] Capturing snapshot on kernel panic
  2024-05-16 18:22     ` Damien Berget via lttng-dev
@ 2024-05-16 19:56       ` Mathieu Desnoyers via lttng-dev
  0 siblings, 0 replies; 5+ messages in thread
From: Mathieu Desnoyers via lttng-dev @ 2024-05-16 19:56 UTC (permalink / raw)
  To: Damien Berget, Kienan Stewart; +Cc: lttng-dev

Hi Damien,

If kexec is not an option on your system, you might be able to
access the pmem+dax filesystem after a warm reboot, but it very
much depends on whether your bios clears your memory or not on
warm reboot.

Cheers,

Mathieu

On 2024-05-16 14:22, Damien Berget via lttng-dev wrote:
> Thanks Kienan for these quick suggestions,
> we'll investigate the pmem route (I was not aware of the lttng-cash 
> utility, it's pretty nice) even if I'm not sure how fast it would burn 
> through our SSD, it might still be worth trying.
> As for kexec-tool, it's not officially supported on our embedded modules 
> unfortunately, so we might be SOL there. We may have to try to add our 
> own trace-point in kernel to use as trigger.
> Cheers
> Damien
> 
> On Thu, May 16, 2024 at 8:12 AM Kienan Stewart <kstewart@efficios.com 
> <mailto:kstewart@efficios.com>> wrote:
> 
>     Hi Damien,
> 
>     I want to expand on one of the options that could work for your case.
> 
>     On 5/16/24 9:37 AM, Kienan Stewart via lttng-dev wrote:
>      > Hi Damien,
>      >
>      >
>      > On 5/15/24 6:24 PM, Damien Berget via lttng-dev wrote:
>      >> Good day,
>      >> we have been using LTTng successfully to capture snapshots on user
>      >> defined tracepoints and it did provide invaluable to debug our
>     issues.
>      >> Thanks to all the contributors of this project!
>      >>
>      >> We'd like to know if it would be possible to trigger on a kernel
>      >> panic? I might be dubiously possible as you would still need to
>     have
>      >> the file-system working to write the results but I should ask.
>      >>
>      >
>      > For userspace tracing, I think the recommendation is usually to
>     use a
>      > dax/pmem device and have the buffers for the session mapped
>     there. After
>      > a panic, the contents of the buffers can be restored using
>     lttng-crash[1].
>      >
>      > Note that dax/pem isn't supported by the kernel space tracer at
>     this time.
>      >
>      > If I recall, there are other ways to things in the panic sequence
>     (that
>      > aren't lttng specific), but I'm personally not as familiar with the
>      > details of that stage of linux.
>      >
> 
>     It's possible to kexec-tools to load a new kernel post-panic[1]. If
>     your
>     system uses kexec, the contents of RAM aren't necessarily flushed, and
>     if both the initial kernel and post-panic kernel started by kexec have
>     the same configuration for an emulated PMEM device using the memmap
>     paramenter [2,3] that region of memory can have a daxfs created in it
>     post-clean boot.
> 
>     Note: some systems may not flush the memory during a warm reboot, but
>     this is dependent on the BIOS.
> 
>     When your system boots you could do something like the following:
> 
>        * If it's a clean boot, create the daxfs
>        * If it's an "unclean" boot (e.g. the daxfs already exists, or a
>     kernel parameter informs you that it started post-panic) then you can
>     copy/move/use lttng-crash to persistent storage for analysis
>        * Start tracing using a snapshot session and the userspace
>     buffers on
>     the daxfs.
> 
>     In this type of situation the "snapshot" command is never invoked
>     directly, but the recovery of the buffers to create a snapshot is
>     possible.
> 
>     [1]:
>     https://www.kernel.org/doc/html/latest/admin-guide/kdump/kdump.html
>     <https://www.kernel.org/doc/html/latest/admin-guide/kdump/kdump.html>
>     [2]:
>     https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html <https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html>
>     [3]:
>     https://docs.pmem.io/persistent-memory/getting-started-guide/creating-development-environments/linux-environments/linux-memmap <https://docs.pmem.io/persistent-memory/getting-started-guide/creating-development-environments/linux-environments/linux-memmap>
> 
>     thanks,
>     kienan
> 
>      >> Looking at available kernel syscall, the "reboot" one seems like a
>      >> good candidate, however I was not able to capture a snapshot on
>     it. I
>      >> have tested the setup below with "--name=chdir" syscall and it
>      >> works, "cd" to a directory will create a trace. But no dice with
>     reboot.
>      >>
>      >
>      > The details of how this work will depend on your system. For
>     example, my
>      > installations tend to use systemd as PID 1. The broad strokes
>     seem to
>      > be: `/usr/sbin/reboot` is actually a link to `systemctl`, which I
>      > believe then kicks off the reboot.service, the PID 1 is swapped to
>      > /usr/lib/systemd/systemd-shutdown, sigterm then sigkill are sent
>     to all
>      > processes, unmounts, syncs, calls the reboot system call [2,3].
>      >
>      > As both the sigterm and the unmounts are done before the syscall,
>      > lttng-sessiond and the consumers will have already shutdown by
>     the time
>      > it enters.
>      >
>      > While this doesn't necessarily help your original question of
>     panics, if
>      > you want to snapshot before shutdown or reboot and are using
>     systemd,
>      > it's possible to leave a script or binary in a known directory so
>     that
>      > it's invoked prior to the rest of the shutdown sequence[4].
>      >
>      > [1]:
>     https://lttng.org/docs/v2.13/#doc-persistent-memory-file-systems
>     <https://lttng.org/docs/v2.13/#doc-persistent-memory-file-systems>
>      > [2]:
>      >
>     https://github.com/systemd/systemd/blob/6533c14997700f74e9ea42121303fc1f5c63e62b/src/shutdown/shutdown.c <https://github.com/systemd/systemd/blob/6533c14997700f74e9ea42121303fc1f5c63e62b/src/shutdown/shutdown.c>
>      > [3]:
>      >
>     https://github.com/systemd/systemd/blob/main/src/shared/reboot-util.c#L77 <https://github.com/systemd/systemd/blob/main/src/shared/reboot-util.c#L77>
>      > [4]:
>     https://www.systutorials.com/docs/linux/man/8-systemd-reboot/
>     <https://www.systutorials.com/docs/linux/man/8-systemd-reboot/>
>      >
>      > hope this helps,
>      > kienan
>      >
>      >> Would you have any suggestions?
>      >> Thanks for your help,
>      >> Cheers
>      >> Damien
>      >>
>      >> ============================
>      >>
>      >> # Prep output dir
>      >> mkdir /application/trace/
>      >> rm -rf /application/trace/*
>      >>
>      >> # Create session
>      >> sudo lttng destroy snapshot-trace-session
>      >> sudo lttng create snapshot-trace-session --snapshot
>      >> --output="/application/trace/"
>      >> sudo lttng enable-channel --kernel --num-subbuf=8 channelk
>      >> sudo lttng enable-channel --userspace --num-subbuf=8 channelu
>      >>
>      >> # Configure session
>      >> sudo lttng enable-event --kernel --syscall --all --channel channelk
>      >> sudo lttng enable-event --kernel --tracepoint "sched*" --channel
>     channelk
>      >> sudo lttng enable-event --userspace --all --channel channelu
>      >> sudo lttng add-context -u -t vtid -t procname
>      >> sudo lttng remove-trigger trig_reboot
>      >> sudo lttng add-trigger --name=trig_reboot \
>      >>          --condition=event-rule-matches
>     --type=kernel:syscall:entry \
>      >>          --name=reboot\
>      >>          --action=snapshot-session snapshot-trace-session \
>      >>          --rate-policy=once-after:1
>      >>
>      >> # start & list info
>      >> sudo lttng start
>      >> sudo lttng list snapshot-trace-session
>      >> sudo lttng list-triggers
>      >>
>      >> #======== test it...
>      >> sudo reboot
>      >>
>      >> #======= reconnect and Nothing :(
>      >> $ ls -alu /application/trace/
>      >> drwxr-xr-x    2 u  u       4096 May 15  2024 .
>      >> drwxr-xr-x   10 u  u       4096 May 15  2024 ..
>      >>
>      >>
>      >> _______________________________________________
>      >> lttng-dev mailing list
>      >> lttng-dev@lists.lttng.org <mailto:lttng-dev@lists.lttng.org>
>      >> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>     <https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev>
>      > _______________________________________________
>      > lttng-dev mailing list
>      > lttng-dev@lists.lttng.org <mailto:lttng-dev@lists.lttng.org>
>      > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>     <https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev>
> 
> 
> 
> -- 
> *Damien Berget*
> 
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

-- 
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com

_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-05-16 19:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-15 22:24 [lttng-dev] Capturing snapshot on kernel panic Damien Berget via lttng-dev
2024-05-16 13:37 ` Kienan Stewart via lttng-dev
2024-05-16 15:12   ` Kienan Stewart via lttng-dev
2024-05-16 18:22     ` Damien Berget via lttng-dev
2024-05-16 19:56       ` Mathieu Desnoyers via lttng-dev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox