svn commit: r359581 - head/sys/kern

Conrad Meyer cem at FreeBSD.org
Thu Apr 2 20:48:00 UTC 2020


Author: cem
Date: Thu Apr  2 20:47:51 2020
New Revision: 359581
URL: https://svnweb.freebsd.org/changeset/base/359581

Log:
  ddb(4): show lockchain: Don't dereference LK_KERNPROC
  
  Also, print a little more information for otherwise unhandled inhibited states.
  
  Finally, improve the grammar of some prints.  Some of the print statements
  missing verb.
  
  Sponsored by:	Dell EMC Isilon

Modified:
  head/sys/kern/subr_turnstile.c

Modified: head/sys/kern/subr_turnstile.c
==============================================================================
--- head/sys/kern/subr_turnstile.c	Thu Apr  2 20:06:37 2020	(r359580)
+++ head/sys/kern/subr_turnstile.c	Thu Apr  2 20:47:51 2020	(r359581)
@@ -1180,17 +1180,21 @@ print_lockchain(struct thread *td, const char *prefix)
 	 * blocked on a lock that has an owner.
 	 */
 	while (!db_pager_quit) {
-		db_printf("%sthread %d (pid %d, %s) ", prefix, td->td_tid,
+		if (td == (void *)LK_KERNPROC) {
+			db_printf("%sdisowned (LK_KERNPROC)\n", prefix);
+			return;
+		}
+		db_printf("%sthread %d (pid %d, %s) is ", prefix, td->td_tid,
 		    td->td_proc->p_pid, td->td_name);
 		switch (td->td_state) {
 		case TDS_INACTIVE:
-			db_printf("is inactive\n");
+			db_printf("inactive\n");
 			return;
 		case TDS_CAN_RUN:
-			db_printf("can run\n");
+			db_printf("runnable\n");
 			return;
 		case TDS_RUNQ:
-			db_printf("is on a run queue\n");
+			db_printf("on a run queue\n");
 			return;
 		case TDS_RUNNING:
 			db_printf("running on CPU %d\n", td->td_oncpu);
@@ -1218,7 +1222,7 @@ print_lockchain(struct thread *td, const char *prefix)
 				td = owner;
 				break;
 			}
-			db_printf("inhibited\n");
+			db_printf("inhibited: %s\n", KTDSTATE(td));
 			return;
 		default:
 			db_printf("??? (%#x)\n", td->td_state);


More information about the svn-src-head mailing list