On Fri, 26 Jul 2024 02:28:12 +0200,
Kirill A. Korinsky <kir...@korins.ky> wrote:
> 
> >Synopsis:    swapctl -d crashes the system
> >Category:    swap
> >Environment:
>       System      : OpenBSD 7.5
>       Details     : OpenBSD 7.5-current (DEBUG.MP) #5: Thu Jul 18 02:50:06 
> WEST 2024
>                        
> catap@matebook.local:/usr/src/sys/arch/amd64/compile/DEBUG.MP
> 
>       Architecture: OpenBSD.amd64
>       Machine     : amd64
> >Description:
>       The system is running on a week-old snapshot with WITNESS enabled. The
>       kernel was built from git commit
>       58b8553b11de927ce5c25f31489cec554cac10de, which matches the snapshot and
>       includes a work-in-progress patch for perfpolicy which I'm testing.
> 
>       After approximately 5 days of uptime, the system begins to degrade and
>       becomes less responsive. I've observed that it consistently uses a bit
>       of swap. htop reports that out of 16GB of RAM, it uses 5-6GB, and
>       between 500 and 600MB of swap.
> 
>       An attempt to remove the swap device using the command swapctl -d
>       /dev/sd1b resulted in a crash with the following message:
> 
>               panic: kernel diagnostic assertion "pg->wire_count == 0" 
> failed: file "/usr/src/sys/uvm/uvm_page.c", line 1277
> 
>       This is the same system where I previously encountered a deadlock inside
>       mfs when it began using swap space. For reference, see:
>       https://marc.info/?l=openbsd-bugs&m=171959901216119&w=2
> >How-To-Repeat:
>     I never tried to remove swap, but this system start to degrade after a
>     week of using. The next time I'll try to remove swap one more time.
> >Fix:
>       No idea
>

Meanwhile, I had reproduced it on

    OpenBSD 7.6-beta (GENERIC.MP) #303: Sun Sep  1 19:52:18 MDT 2024

unfortently, the way is stil unclear, but it was a few days of uptime, which
includes hibernate.

Anyway, this time I have ddb's stack trace (text is OCR from a picture):

    panic: kernel diagnostic assertion "pg->wire_count == 0" failed: file 
"/usr/src/sys/uvm/uvm_page.c", line 1227
    Stopped at db_enter+0x14: popq %rbp
    TID     PID   UID  PRFLAGS    PFLAGS     CPU   COMMAND
    354154  43687 Q   0x3        0x1        1     swapctl
    457283  84981 99  0x1100010  0x1        2     sndiod
    371136  89678 @   0x1400     0x40000200 @     softclock

    db_enter() at db_enter+0x14
    panic(0xffffff824283dc) at panic+0xdd
    __assert(0xffffffff823e2dca, 0xffffffff823bd771, 0xffffffffffff82378c92) at 
__assert+0x29
    uvm_pagezero(0xfffffd81809ebea0) at uvm_pagezero
    uao_pagein_page(0xfffffd814278e5f0, 1f2) at uao_pagein_page+0x134
    uao_swap_off(0x1, 0x3fec2e) at uao_swap_off+0x150
    swap_off(0xffff88084c5e0cd8, 0xffff880012898080) at swap_off+0xa6
    sys_swapctl(0xffff88084c5e0cd8, 0xffff88084cb7b80) at sys_swapctl+0x271
    syscall(0xffff88084cb7c18) at syscall+0x5e7
    Xsyscall() at Xsyscall+0x128
    end of kernel
    end trace frame: 0x7b7d6dfbb30, count: 5
    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{1}>


-- 
wbr, Kirill

Reply via email to