From nobody Fri Jun 12 04:02:45 2026 X-Original-To: current@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gc5TG2D1Fz6hMK4 for ; Fri, 12 Jun 2026 04:02:58 +0000 (UTC) (envelope-from rlibby@gmail.com) Received: from mail-yw1-f175.google.com (mail-yw1-f175.google.com [209.85.128.175]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gc5TG0841z3H7H for ; Fri, 12 Jun 2026 04:02:58 +0000 (UTC) (envelope-from rlibby@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-yw1-f175.google.com with SMTP id 00721157ae682-7e2fc11088dso5256657b3.2 for ; Thu, 11 Jun 2026 21:02:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781236977; x=1781841777; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fzRlC/hRolqlI2E5zDiDuSa9fBXoayXDVRNX5yoRRjs=; b=aC+wno4mpgz+xy1kpLZ3uuUtjlITlPJHCJDLK/U4aM3FpN52G5DfwDneeK02WgCS54 Ub/U2Fy31jokxp8DJ3N2t7i7hTYHvS1jz2IVTTRz89fLPz6Q/wxBVcwKTNvq+tec+a0P 93LWiB9w/53y/LxulOLfz2OcGvKJqC3X9Rw0dLE2ifNrZlx4JFwCBJN4OWtgWX5sSHwU CkBUJhi7sjs8H7QfrCi2vNnINPAC5HVFEeanbMdGrWVpjHJTD588FW8zICJgQ+d7NnK4 DHx2xWx4W2Bpw1xS8HzTKEQw9ge+F2MYPYh6943vhXOi6ljl+qjJ8xQ1Z6psTpnpQcXX 8ZLg== X-Forwarded-Encrypted: i=1; AFNElJ+3M0JcawzMv565bbUMIc+A7VZ/kMUOl/cvALY4d9uOYVKELFLqpXmxqn+wQX7xRBZOh3Fme3pf@freebsd.org X-Gm-Message-State: AOJu0YzJccfMXwH1nXNgvtf6EFNbZqlX0qv799Kin7/nEMyXXnVYB5B0 wwkzYTXaMg8j9e1H+gqWlMNvZHIJ83olQ21Xnb0fEoX9ahU8zZT9/1H2xSJ1iw== X-Gm-Gg: Acq92OHHXkBXQBFT0TlG1PZ9W118pD4hDIHIkUCRooRdgrk5hjzLrjXVVv4k5U4FLcy QDq+fhllDzN+F5qFN+lVTyJT0V3og5890feHDorseXeWkFYjDk2hrZ+SQFeXtLuDDpwLKYe29OZ Q0Ga4Czq83q/YMY4L8XXAxlX66Bo6CSTOuQiiP8zNb1IafW7cDv2dNTjfm6C6PsGqL1b+kC3VJG HVyYycGUhGftzBsciF1jsao06Jpj4n1an55lk0qN1MOk8G7BoiFB+ITds9SFbZ7UouwAEryZeVr KMu5wcJtcy+b9g4CyVjI2hZ9RzsTRheLDL0+BwUj2dvRmJUzC9VXuhU79tt8Unm0YTvNhJud2Do phrEb2dfAzEottPWUjWqYqlXfViKUW91D8w1WPysPH1ScupJvOQDwdfrwZ47fKhOToCnzu6Ve67 7ETQisrNBtWq9muvFET4EVLrcdWo+9Sm4a4gX1GiOB/qg+Lnifb5qy12HGKjimvZ6Z/PRz X-Received: by 2002:a05:690c:9b11:b0:7cf:d9bc:808c with SMTP id 00721157ae682-7f7b7f37ec3mr10107177b3.29.1781236977086; Thu, 11 Jun 2026 21:02:57 -0700 (PDT) Received: from mail-yx1-f42.google.com (mail-yx1-f42.google.com. [74.125.224.42]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7f76e2b506csm5927417b3.10.2026.06.11.21.02.56 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 11 Jun 2026 21:02:56 -0700 (PDT) Received: by mail-yx1-f42.google.com with SMTP id 956f58d0204a3-660e9ff0587so290202d50.0 for ; Thu, 11 Jun 2026 21:02:56 -0700 (PDT) X-Forwarded-Encrypted: i=1; AFNElJ/demtuWj/iaO4pE3ELC8h2O3F0qzbXHotgkLG5QlqsthXzpyTEpvg/smbUo+wTH8lsU6K90QN8@freebsd.org X-Received: by 2002:a05:690e:1c07:b0:661:1307:3d62 with SMTP id 956f58d0204a3-66278421f91mr813623d50.52.1781236976058; Thu, 11 Jun 2026 21:02:56 -0700 (PDT) List-Id: Discussions about the use of FreeBSD-current List-Archive: https://lists.freebsd.org/archives/freebsd-current List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-current@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 References: In-Reply-To: From: Ryan Libby Date: Thu, 11 Jun 2026 21:02:45 -0700 X-Gmail-Original-Message-ID: X-Gm-Features: AVVi8Cf7BLWZnWWAP1ztkQoVGuItaZJPBE4jBXCR-kZWqe9ExmDFLs6qSUIZaHQ Message-ID: Subject: Re: panic: mtx_lock_spin: recursed on non-recursive mutex vtbuf @ .. To: Aleksandr Rybalko Cc: Adrian Chadd , "Bjoern A. Zeeb" , current@freebsd.org, imp@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US] X-Rspamd-Queue-Id: 4gc5TG0841z3H7H X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated On Thu, Jun 11, 2026 at 5:15=E2=80=AFPM Aleksandr Rybalko = wrote: > > Fixed with mtx_owned(9) test yet. > See https://github.com/freebsd/freebsd-src/commit/1f68ca5802db91bd9725bcd= bf55932e104dbe95d > > Thanks! > > Thank you for fixing the panic. I still think the locking from vt_mouse_event may be busted. Ryan > =D1=81=D0=B1, 6 =D1=87=D0=B5=D1=80=D0=B2. 2026=E2=80=AF=D1=80. =D0=BE 03:= 17 Ryan Libby =D0=BF=D0=B8=D1=88=D0=B5: >> >> On Tue, Jun 2, 2026 at 3:01=E2=80=AFPM Aleksandr Rybalko wrote: >> > >> > Hey, Adrian! >> > >> > Know why, but working on a fix yet. >> > >> > Thanks! >> > >> > =D0=B2=D1=82, 2 =D1=87=D0=B5=D1=80=D0=B2. 2026=E2=80=AF=D1=80. =D0=BE = 20:01 Adrian Chadd =D0=BF=D0=B8=D1=88=D0=B5: >> >> >> >> hey! was this eventually fixed? I just hit it, notably a few days old >> >> -head (i think), but I still hit it. >> >> >> >> THanks! >> >> >> >> >> >> -a >> >> >> >> On Fri, 22 May 2026 at 08:51, Aleksandr Rybalko wro= te: >> >> > >> >> > Hey guys! >> >> > >> >> > Yeah, it seems my. >> >> > I will look into it today. >> >> > >> >> > Thanks! >> >> > >> >> > =D0=BF=D1=82, 22 =D1=82=D1=80=D0=B0=D0=B2. 2026=E2=80=AF=D1=80. =D0= =BE 18:35 Ryan Libby =D0=BF=D0=B8=D1=88=D0=B5: >> >> >> >> >> >> On Fri, May 22, 2026 at 1:46=E2=80=AFAM Bjoern A. Zeeb >> >> >> wrote: >> >> >> > >> >> >> > Hi, >> >> >> > >> >> >> > I was using the mouse in tmux on v1 when everying stopped. >> >> >> > Sadly we didn't switch to v0 for console but it seems I managed = to get a dump only checking now; the kernel from then is already gone. >> >> >> > >> >> >> > core.txt said. >> >> >> > >> >> >> > panic: mtx_lock_spin: recursed on non-recursive mutex vtbuf @ /u= sr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/dev/vt/vt_buf.c:744 >> >> >> > >> >> >> > cpuid =3D 1 >> >> >> > time =3D 1779437567 >> >> >> > KDB: stack backtrace: >> >> >> > db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xff= fffe00d773e7a0 >> >> >> > vpanic() at vpanic+0x149/frame 0xfffffe00d773e8d0 >> >> >> > panic() at panic+0x43/frame 0xfffffe00d773e930 >> >> >> > __mtx_lock_spin_flags() at __mtx_lock_spin_flags+0x11b/frame 0xf= ffffe00d773e970 >> >> >> > vtbuf_flush_mark() at vtbuf_flush_mark+0x82/frame 0xfffffe00d773= e9b0 >> >> >> > vtbuf_unmark_on_cross() at vtbuf_unmark_on_cross+0xcc/frame 0xff= fffe00d773e9d0 >> >> >> > vtterm_fill() at vtterm_fill+0x27/frame 0xfffffe00d773ea00 >> >> >> > teken_subr_erase_line() at teken_subr_erase_line+0x90/frame 0xff= fffe00d773ea20 >> >> >> > teken_state_2() at teken_state_2+0x497/frame 0xfffffe00d773ea40 >> >> >> > teken_input_char() at teken_input_char+0x47/frame 0xfffffe00d773= ea60 >> >> >> > teken_input() at teken_input+0x9f/frame 0xfffffe00d773ea90 >> >> >> > termtty_outwakeup() at termtty_outwakeup+0xcf/frame 0xfffffe00d7= 73eb60 >> >> >> > ttydisc_write() at ttydisc_write+0x337/frame 0xfffffe00d773ecd0 >> >> >> > ttydev_write() at ttydev_write+0x13f/frame 0xfffffe00d773ed10 >> >> >> > devfs_write_f() at devfs_write_f+0xf3/frame 0xfffffe00d773ed70 >> >> >> > dofilewrite() at dofilewrite+0x81/frame 0xfffffe00d773edc0 >> >> >> > sys_writev() at sys_writev+0x69/frame 0xfffffe00d773ee00 >> >> >> > amd64_syscall() at amd64_syscall+0x168/frame 0xfffffe00d773ef30 >> >> >> > fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe= 00d773ef30 >> >> >> > --- syscall (121, FreeBSD ELF64, writev), rip =3D 0x82601d5aa, r= sp =3D 0x8207a3408, rbp =3D 0x8207a3430 --- >> >> >> > KDB: enter: panic >> >> >> > >> >> >> > >> >> >> > In case it helps, I believe this is file:line as reported by gdb= in core.txt: >> >> >> > >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/k= ern/kern_mutex.c:353 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/d= ev/vt/vt_buf.c:744 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/d= ev/vt/vt_buf.c:864 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/d= ev/vt/vt_buf.c:210 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/d= ev/vt/vt_buf.c:232 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/d= ev/vt/vt_core.c:1201 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/t= eken/teken.c:121 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/t= eken/teken_subr.h:558 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/t= eken/teken.c:255 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/t= eken/teken.c:284 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/t= eken/teken.c:317 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/k= ern/subr_terminal.c:422 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/s= ys/ttydevsw.h:114 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/k= ern/tty_ttydisc.c:658 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/k= ern/tty.c:550 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/f= s/devfs/devfs_vnops.c:1980 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/s= ys/file.h:372 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/k= ern/sys_generic.c:565 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/k= ern/sys_generic.c:492 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/k= ern/sys_generic.c:478 >> >> >> > at /usr/home/test/Sources/git/FreeBSD/freebsd-src.git/sys/a= md64/amd64/../../kern/subr_syscall.c:193 >> >> >> > >> >> >> > >> >> >> > -- >> >> >> > Bjoern A. Zeeb = r15:7 >> >> >> > >> >> >> >> >> >> I think it's probably related to or a regression from >> >> >> 8db0553ed6d8 ("vt: Clear cut-paste selection if the area intersect= s >> >> >> with the filled region") >> >> >> https://cgit.freebsd.org/src/commit/?id=3D8db0553ed6d8636d82a26896= 237099526b93be19 >> >> >> >> >> >> which added vtbuf_unmark_on_cross() which is in your panic stack. >> >> >> >> >> >> I don't know this code but it looks like the mutex is first taken = by >> >> >> teken_input / teken_funcs_pre_input / vtterm_pre_input and then ag= ain >> >> >> by teken_input with your panic stack. >> >> >> >> >> >> Ryan >> >> How is the locking supposed to work in vt_mouse_event anyway? >> >> Unsolicited suggestion: require that the vb_lock be held on entry to >> vtbuf_set_mark, remove the lock acquisition from vtbuf_flush_mark, and >> make the call path through vt_mouse_event to vtbuf_set_mark and >> vtbuf_unmark acquire the lock. >> >> Ryan