NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/60728 (workqueue panic in wg)
No (happened once, no memory test, no crash dump), this is all I have.


christos
> On Sep 15, 2026, at 1:01 PM, riastradh%netbsd.org@localhost <riastradh%NetBSD.org@localhost> wrote:
>
> Synopsis: workqueue panic in wg
>
> State-Changed-From-To: open->feedback
> State-Changed-By: riastradh%NetBSD.org@localhost
> State-Changed-When: Tue, 15 Sep 2026 17:01:42 +0000
> State-Changed-Why:
> 1. Do you have a crash dump?
>
> 2. Is this reproducible?
>
> 3. Do you have any local patches?
>
> 4. Have you run a memory test on this machine?
>
>
> The workqueue_enqueue calls are serialized by wgp_intr_lock,
> conditional on wgp_tasks != 0, and wgp_tasks transitions to zero only
> after the workqueue function begins to run:
>
> 2811 mutex_enter(wgp->wgp_intr_lock);
> 2812 WG_DLOG("tasks=%d, task=%d\n", wgp->wgp_tasks, task);
> 2813 if (wgp->wgp_tasks == 0)
> 2814 /*
> 2815 * XXX If the current CPU is already loaded -- e.g., if
> 2816 * there's already a bunch of handshakes queued up --
> 2817 * consider tossing this over to another CPU to
> 2818 * distribute the load.
> 2819 */
> 2820 workqueue_enqueue(wg_wq, &wgp->wgp_work, NULL);
> 2821 wgp->wgp_tasks |= task;
> 2822 mutex_exit(wgp->wgp_intr_lock);
> ...
> 3713 static void
> 3714 wg_peer_work(struct work *wk, void *cookie)
> 3715 {
> ...
> 3720 mutex_enter(wgp->wgp_intr_lock);
> 3721 while ((tasks = wgp->wgp_tasks) != 0) {
> 3722 wgp->wgp_tasks = 0;
> 3723 mutex_exit(wgp->wgp_intr_lock);
> ...
> 3740 mutex_enter(wgp->wgp_intr_lock);
> 3741 }
> 3742 mutex_exit(wgp->wgp_intr_lock);
>
> https://nxr.NetBSD.org/xref/src/sys/net/if_wg.c?r=1.143#2811
>
>
Home |
Main Index |
Thread Index |
Old Index