On Thu, Nov 30, 2023 at 08:44:19AM +0100, Alexandr Nedvedicky wrote:
> Hello Johan,
>
> On Wed, Nov 29, 2023 at 11:24:59PM -0500, Johan Huldtgren wrote:
> >
> > so my machine paniced today, but the panic this time is completely
> > different.
> > I don't know if it's related to this issue, the patch, or a completely new
> > issue, but I figured I'd start reporting it here. Unfortuntately when I
> > tried
> > to swap CPU to collect traces from the other ones the machine froze and I
> > was
> > forced to power cycle it. So I have the panic and initial trace but that's
> > it.
> >
> > panic: ip_output no HDR
> > Stopped at db_enter+0x14: popq %rbp
> > TID PID UID PRFLAGS PFLAGS CPU COMMAND
> > 74003 25022 0 0x10 0 2 afpd
> > 355827 29745 107 0x1100002 0x4000000 3 vmd
> > 451006 29745 107 0x1100002 0x4000000 4 vmd
> > 131508 78367 107 0x1100002 0x4000000 5 vmd
> > 112644 78367 107 0x1100002 0x4000000 1 vmd
> > *133058 91446 0 0x14000 0x200 0 softnet0
> > db_enter() at db_enter+0x14
> > panic(ffffffff820c20df) at panic+0xc3
> > ip_output(fffffd8076b76e00,0,fffffd9c9e59e708,0,0,fffffd9c9e59e690,e4a23bf8c0204936)
> > at ip_output+0xa26
> > udp_output(fffffd9c9e59e690,fffffd8076b76e00,fffffd8079d14b00,0) at
> > udp_output+0x3be
> > sosend(fffffd9c9e59f000,fffffd8079d14b00,0,fffffd8076b76e00,0,0) at
> > sosend+0x37f
> > pflow_output_process(ffff8000011a0800) at pflow_output_process+0x67
> > taskq_thread(ffff800000035200) at taskq_thread+0x100
> > end trace frame: 0x0, count: 8
> > https://www.openbsd.org/ddb.html describes the minimum info required in bug
> > reports. Insufficient info makes it difficult to find and fix bugs.
> > ddb{0}>
> >
> > ddb{0}> show panic
> > *cpu0: ip_output no HDR
> >
> > ddb{0}> trace
> > db_enter() at db_enter+0x14
> > panic(ffffffff820c20df) at panic+0xc3
> > ip_output(fffffd8076b76e00,0,fffffd9c9e59e708,0,0,fffffd9c9e59e690,e4a23bf8c0204936)
> > at ip_output+0xa26
> > udp_output(fffffd9c9e59e690,fffffd8076b76e00,fffffd8079d14b00,0) at
> > udp_output+0x3be
> > sosend(fffffd9c9e59f000,fffffd8079d14b00,0,fffffd8076b76e00,0,0) at
> > sosend+0x37f
> > pflow_output_process(ffff8000011a0800) at pflow_output_process+0x67
> > taskq_thread(ffff800000035200) at taskq_thread+0x100
> > end trace frame: 0x0, count: -7
> >
>
> This is a different issue to what we were seeing. The panic indicates
> the ip_output() function deals with packet buffer which contains no
> ip header. How it could happen that's the question...
>
I found the reason of that panic. The `sc_mbuf{,6}' cumulative mbuf(9)
of pflow_softc structure has missing protection. So it was overwritten
concurrently with pflow_sendout_*(). I will fix this later.