From nobody Tue Apr 29 18:30:46 2025 X-Original-To: dev-commits-src-branches@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 4Zn85N5XRdz5vMt5; Tue, 29 Apr 2025 18:30:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Zn85L5Yqbz4Hhj; Tue, 29 Apr 2025 18:30:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1745951446; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QdsCqc+fj4exZmnSxw0HrReea8IbGAE+6+s/eqbnHps=; b=G2z46Idy+lpNoAtwm+J7N+/7RxS+RtUAh+DbjwWFZDrc1HVuBje5biJutPu7vjCkRk9Yzo mV95345S0GAKEDLDmdQEmyM2Hx/it7RlonvkiKJ/10CMH2kSNFUl4NCMAsHlQj2ep2KXpb a3wlEYkLkUujNB5Ykf1qe2drrStsVZxOzYHAPdxRvYlFywvuuDj966UAooZRqzg3KPldPH rKnVBAxiip18QFk+3FhdZAxStv5w1kul7SPIM3ojTEOKZ73b2eAKUROVFXLmRbHOpj3F66 EXuBCMbRAYQ9WyXaqh8w+wZN/Dzvj3ERpRTwjn2G2yh4tzvGtKhRRF35WDtO7g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1745951446; a=rsa-sha256; cv=none; b=wW1xxgNSZK0MdsQ5u0S+bv9Nb/7pJ49TI2qdx9tVSrPJXzNz006mZuli7/o/0t8xTy4hW+ Mn9Ox4dSnhonsDjMm6kRrUF1MTqXM4RomWEv9LZ1JzaobGj5D+uyaduqfI9bdEU0vi21P0 kGRpvNjcDFWvt/ko2qyOP8OcPnc6jHqPxF5/pld8YZwyet3JNH8dYI5NCmsA7TS638rf3r Cgg/PXACrs93aqVqdUAJmiFJSGHZaEMp6ydAkVP8UcU3CgjIvBnebnUeOjFR4I0kj9cILP CUn0F/E2+JhZz8vUvHrJ4aEgYJC5djk4/E/0uoabfSf4oe+jXHntlKAsWr1I0g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1745951446; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QdsCqc+fj4exZmnSxw0HrReea8IbGAE+6+s/eqbnHps=; b=s6gD6sFdwUBOkzNJ3BrseiOJCFhRnECOeRYexfEmA/ZIzfXG6ZnaXgvWNCy36lwBZ/6gx4 pwgmUW4IPAsOgY6nY1HRkKfwh6wHFl+roQfJxmpr0LTNQSyJgb7XuDv+osSeu6doW7KkLz UkhE1Nnhs+2y0i331Q2qBWtHpqInMWYNESueoUS4A2KPcgrc2S1+SxxMwc4nqQ7wXKUA6R VKrldEUdDMEf5pi57zIKk76+lWPXIZG2ylCuu4VZNlKvNT+xxPumQz85YUkucmZgo5vdYn 4bq4sMDUpszT7nQ0DNOaCzktzrt+NPRjW+CoFQtfEnxscGSeE3u6W5ZgqDpj3w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Zn85L4g72zXn2; Tue, 29 Apr 2025 18:30:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53TIUk8q022838; Tue, 29 Apr 2025 18:30:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53TIUk79022835; Tue, 29 Apr 2025 18:30:46 GMT (envelope-from git) Date: Tue, 29 Apr 2025 18:30:46 GMT Message-Id: <202504291830.53TIUk79022835@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 6fb471682aa9 - stable/14 - rwmlock/rwlock/sx: Print the pointer of destroyed locks in panic messages List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 6fb471682aa9198fb187f2718dd291f09d96cf2b Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6fb471682aa9198fb187f2718dd291f09d96cf2b commit 6fb471682aa9198fb187f2718dd291f09d96cf2b Author: John Baldwin AuthorDate: 2025-03-13 16:54:40 +0000 Commit: John Baldwin CommitDate: 2025-04-29 14:44:08 +0000 rwmlock/rwlock/sx: Print the pointer of destroyed locks in panic messages Suggested by: markj Reviewed by: kib, markj Sponsored by: AFRL, DARPA Differential Revision: https://reviews.freebsd.org/D49332 (cherry picked from commit 00d78c500783fc91512b3c0d231029ac75a131d9) --- sys/kern/kern_rmlock.c | 8 ++++---- sys/kern/kern_rwlock.c | 18 ++++++++++-------- sys/kern/kern_sx.c | 17 +++++++++-------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/sys/kern/kern_rmlock.c b/sys/kern/kern_rmlock.c index bdee79e2cf1a..0867e9e14fee 100644 --- a/sys/kern/kern_rmlock.c +++ b/sys/kern/kern_rmlock.c @@ -601,7 +601,7 @@ _rm_wlock_debug(struct rmlock *rm, const char *file, int line) ("rm_wlock() by idle thread %p on rmlock %p @ %s:%d", curthread, rm, file, line)); KASSERT(!rm_destroyed(rm), - ("rm_wlock() of destroyed rmlock @ %s:%d", file, line)); + ("rm_wlock() of destroyed rmlock %p @ %s:%d", rm, file, line)); _rm_assert(rm, RA_UNLOCKED, file, line); WITNESS_CHECKORDER(&rm->lock_object, LOP_NEWORDER | LOP_EXCLUSIVE, @@ -622,7 +622,7 @@ _rm_wunlock_debug(struct rmlock *rm, const char *file, int line) return; KASSERT(!rm_destroyed(rm), - ("rm_wunlock() of destroyed rmlock @ %s:%d", file, line)); + ("rm_wunlock() of destroyed rmlock %p @ %s:%d", rm, file, line)); _rm_assert(rm, RA_WLOCKED, file, line); WITNESS_UNLOCK(&rm->lock_object, LOP_EXCLUSIVE, file, line); LOCK_LOG_LOCK("RMWUNLOCK", &rm->lock_object, 0, 0, file, line); @@ -652,7 +652,7 @@ _rm_rlock_debug(struct rmlock *rm, struct rm_priotracker *tracker, ("rm_rlock() by idle thread %p on rmlock %p @ %s:%d", curthread, rm, file, line)); KASSERT(!rm_destroyed(rm), - ("rm_rlock() of destroyed rmlock @ %s:%d", file, line)); + ("rm_rlock() of destroyed rmlock %p @ %s:%d", rm, file, line)); if (!trylock) { KASSERT(!rm_wowned(rm), ("rm_rlock: wlock already held for %s @ %s:%d", @@ -686,7 +686,7 @@ _rm_runlock_debug(struct rmlock *rm, struct rm_priotracker *tracker, return; KASSERT(!rm_destroyed(rm), - ("rm_runlock() of destroyed rmlock @ %s:%d", file, line)); + ("rm_runlock() of destroyed rmlock %p @ %s:%d", rm, file, line)); _rm_assert(rm, RA_RLOCKED, file, line); WITNESS_UNLOCK(&rm->lock_object, 0, file, line); LOCK_LOG_LOCK("RMRUNLOCK", &rm->lock_object, 0, 0, file, line); diff --git a/sys/kern/kern_rwlock.c b/sys/kern/kern_rwlock.c index d6fab5ba35bb..dc2b9892cecd 100644 --- a/sys/kern/kern_rwlock.c +++ b/sys/kern/kern_rwlock.c @@ -281,7 +281,7 @@ _rw_wlock_cookie(volatile uintptr_t *c, const char *file, int line) ("rw_wlock() by idle thread %p on rwlock %p @ %s:%d", curthread, rw, file, line)); KASSERT(rw->rw_lock != RW_DESTROYED, - ("rw_wlock() of destroyed rwlock @ %s:%d", file, line)); + ("rw_wlock() of destroyed rwlock %p @ %s:%d", rw, file, line)); WITNESS_CHECKORDER(&rw->lock_object, LOP_NEWORDER | LOP_EXCLUSIVE, file, line, NULL); tid = (uintptr_t)curthread; @@ -314,7 +314,7 @@ __rw_try_wlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) ("rw_try_wlock() by idle thread %p on rwlock %p @ %s:%d", curthread, rw, file, line)); KASSERT(rw->rw_lock != RW_DESTROYED, - ("rw_try_wlock() of destroyed rwlock @ %s:%d", file, line)); + ("rw_try_wlock() of destroyed rwlock %p @ %s:%d", rw, file, line)); rval = 1; recursed = false; @@ -362,7 +362,7 @@ _rw_wunlock_cookie(volatile uintptr_t *c, const char *file, int line) rw = rwlock2rw(c); KASSERT(rw->rw_lock != RW_DESTROYED, - ("rw_wunlock() of destroyed rwlock @ %s:%d", file, line)); + ("rw_wunlock() of destroyed rwlock %p @ %s:%d", rw, file, line)); __rw_assert(c, RA_WLOCKED, file, line); WITNESS_UNLOCK(&rw->lock_object, LOP_EXCLUSIVE, file, line); LOCK_LOG_LOCK("WUNLOCK", &rw->lock_object, 0, rw->rw_recurse, file, @@ -668,7 +668,7 @@ __rw_rlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) ("rw_rlock() by idle thread %p on rwlock %p @ %s:%d", td, rw, file, line)); KASSERT(rw->rw_lock != RW_DESTROYED, - ("rw_rlock() of destroyed rwlock @ %s:%d", file, line)); + ("rw_rlock() of destroyed rwlock %p @ %s:%d", rw, file, line)); KASSERT(rw_wowner(rw) != td, ("rw_rlock: wlock already held for %p @ %s:%d", rw, file, line)); @@ -711,7 +711,8 @@ __rw_try_rlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) x = rw->rw_lock; for (;;) { KASSERT(rw->rw_lock != RW_DESTROYED, - ("rw_try_rlock() of destroyed rwlock @ %s:%d", file, line)); + ("rw_try_rlock() of destroyed rwlock %p @ %s:%d", rw, file, + line)); if (!(x & RW_LOCK_READ)) break; if (atomic_fcmpset_acq_ptr(&rw->rw_lock, &x, x + RW_ONE_READER)) { @@ -842,7 +843,7 @@ _rw_runlock_cookie_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) uintptr_t v; KASSERT(rw->rw_lock != RW_DESTROYED, - ("rw_runlock() of destroyed rwlock @ %s:%d", file, line)); + ("rw_runlock() of destroyed rwlock %p @ %s:%d", rw, file, line)); __rw_assert(&rw->rw_lock, RA_RLOCKED, file, line); WITNESS_UNLOCK(&rw->lock_object, 0, file, line); LOCK_LOG_LOCK("RUNLOCK", &rw->lock_object, 0, 0, file, line); @@ -1284,7 +1285,8 @@ __rw_try_upgrade_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) return (1); KASSERT(rw->rw_lock != RW_DESTROYED, - ("rw_try_upgrade() of destroyed rwlock @ %s:%d", file, line)); + ("rw_try_upgrade() of destroyed rwlock %p @ %s:%d", rw, file, + line)); __rw_assert(&rw->rw_lock, RA_RLOCKED, file, line); /* @@ -1367,7 +1369,7 @@ __rw_downgrade_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) return; KASSERT(rw->rw_lock != RW_DESTROYED, - ("rw_downgrade() of destroyed rwlock @ %s:%d", file, line)); + ("rw_downgrade() of destroyed rwlock %p @ %s:%d", rw, file, line)); __rw_assert(&rw->rw_lock, RA_WLOCKED | RA_NOTRECURSED, file, line); #ifndef INVARIANTS if (rw_recursed(rw)) diff --git a/sys/kern/kern_sx.c b/sys/kern/kern_sx.c index ecac40217738..0422e6804459 100644 --- a/sys/kern/kern_sx.c +++ b/sys/kern/kern_sx.c @@ -285,7 +285,8 @@ sx_try_slock_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) x = sx->sx_lock; for (;;) { KASSERT(x != SX_LOCK_DESTROYED, - ("sx_try_slock() of destroyed sx @ %s:%d", file, line)); + ("sx_try_slock() of destroyed sx %p @ %s:%d", sx, file, + line)); if (!(x & SX_LOCK_SHARED)) break; if (atomic_fcmpset_acq_ptr(&sx->sx_lock, &x, x + SX_ONE_SHARER)) { @@ -321,7 +322,7 @@ _sx_xlock(struct sx *sx, int opts, const char *file, int line) ("sx_xlock() by idle thread %p on sx %p @ %s:%d", curthread, sx, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, - ("sx_xlock() of destroyed sx @ %s:%d", file, line)); + ("sx_xlock() of destroyed sx %p @ %s:%d", sx, file, line)); WITNESS_CHECKORDER(&sx->lock_object, LOP_NEWORDER | LOP_EXCLUSIVE, file, line, NULL); tid = (uintptr_t)curthread; @@ -358,7 +359,7 @@ sx_try_xlock_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) ("sx_try_xlock() by idle thread %p on sx %p @ %s:%d", curthread, sx, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, - ("sx_try_xlock() of destroyed sx @ %s:%d", file, line)); + ("sx_try_xlock() of destroyed sx %p @ %s:%d", sx, file, line)); rval = 1; recursed = false; @@ -402,7 +403,7 @@ _sx_xunlock(struct sx *sx, const char *file, int line) { KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, - ("sx_xunlock() of destroyed sx @ %s:%d", file, line)); + ("sx_xunlock() of destroyed sx %p @ %s:%d", sx, file, line)); _sx_assert(sx, SA_XLOCKED, file, line); WITNESS_UNLOCK(&sx->lock_object, LOP_EXCLUSIVE, file, line); LOCK_LOG_LOCK("XUNLOCK", &sx->lock_object, 0, sx->sx_recurse, file, @@ -431,7 +432,7 @@ sx_try_upgrade_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) return (1); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, - ("sx_try_upgrade() of destroyed sx @ %s:%d", file, line)); + ("sx_try_upgrade() of destroyed sx %p @ %s:%d", sx, file, line)); _sx_assert(sx, SA_SLOCKED, file, line); /* @@ -481,7 +482,7 @@ sx_downgrade_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) return; KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, - ("sx_downgrade() of destroyed sx @ %s:%d", file, line)); + ("sx_downgrade() of destroyed sx %p @ %s:%d", sx, file, line)); _sx_assert(sx, SA_XLOCKED | SA_NOTRECURSED, file, line); #ifndef INVARIANTS if (sx_recursed(sx)) @@ -1260,7 +1261,7 @@ _sx_slock_int(struct sx *sx, int opts LOCK_FILE_LINE_ARG_DEF) ("sx_slock() by idle thread %p on sx %p @ %s:%d", curthread, sx, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, - ("sx_slock() of destroyed sx @ %s:%d", file, line)); + ("sx_slock() of destroyed sx %p @ %s:%d", sx, file, line)); WITNESS_CHECKORDER(&sx->lock_object, LOP_NEWORDER, file, line, NULL); error = 0; @@ -1366,7 +1367,7 @@ _sx_sunlock_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) uintptr_t x; KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, - ("sx_sunlock() of destroyed sx @ %s:%d", file, line)); + ("sx_sunlock() of destroyed sx %p @ %s:%d", sx, file, line)); _sx_assert(sx, SA_SLOCKED, file, line); WITNESS_UNLOCK(&sx->lock_object, 0, file, line); LOCK_LOG_LOCK("SUNLOCK", &sx->lock_object, 0, 0, file, line);