Index: sys/amd64/amd64/trap.c =================================================================== --- sys/amd64/amd64/trap.c +++ sys/amd64/amd64/trap.c @@ -194,7 +194,7 @@ #ifdef KDB if (kdb_active) { - kdb_reenter(); + kdb_reenter(true); goto out; } #endif Index: sys/arm/arm/db_interface.c =================================================================== --- sys/arm/arm/db_interface.c +++ sys/arm/arm/db_interface.c @@ -324,7 +324,7 @@ db_branch_taken_fetch_reg, db_branch_taken_read_int); if (ret != 0) - kdb_reenter(); + kdb_reenter(true); return (new_pc); } Index: sys/arm/arm/trap-v6.c =================================================================== --- sys/arm/arm/trap-v6.c +++ sys/arm/arm/trap-v6.c @@ -344,7 +344,7 @@ return; #ifdef KDB if (kdb_active) { - kdb_reenter(); + kdb_reenter(true); goto out; } #endif Index: sys/arm64/arm64/trap.c =================================================================== --- sys/arm64/arm64/trap.c +++ sys/arm64/arm64/trap.c @@ -162,7 +162,7 @@ #ifdef KDB if (kdb_active) { - kdb_reenter(); + kdb_reenter(true); return; } #endif Index: sys/ddb/db_access.c =================================================================== --- sys/ddb/db_access.c +++ sys/ddb/db_access.c @@ -63,7 +63,7 @@ if (db_read_bytes(addr, size, data) != 0) { db_printf("*** error reading from address %llx ***\n", (long long)addr); - kdb_reenter(); + db_error(NULL); } value = 0; @@ -102,6 +102,6 @@ if (db_write_bytes(addr, size, data) != 0) { db_printf("*** error writing to address %llx ***\n", (long long)addr); - kdb_reenter(); + db_error(NULL); } } Index: sys/ddb/db_command.c =================================================================== --- sys/ddb/db_command.c +++ sys/ddb/db_command.c @@ -517,7 +517,7 @@ if (s) db_printf("%s", s); db_flush_lex(); - kdb_reenter(); + kdb_reenter(false); } static void Index: sys/gdb/gdb_packet.c =================================================================== --- sys/gdb/gdb_packet.c +++ sys/gdb/gdb_packet.c @@ -70,7 +70,7 @@ printf("The ddb backend could not be selected.\n"); else { printf("using longjmp, hope it works!\n"); - kdb_reenter(); + kdb_reenter(false); } } return (c); Index: sys/i386/i386/trap.c =================================================================== --- sys/i386/i386/trap.c +++ sys/i386/i386/trap.c @@ -211,7 +211,7 @@ #ifdef KDB if (kdb_active) { - kdb_reenter(); + kdb_reenter(true); goto out; } #endif Index: sys/kern/kern_synch.c =================================================================== --- sys/kern/kern_synch.c +++ sys/kern/kern_synch.c @@ -384,8 +384,7 @@ kdb_switch(void) { thread_unlock(curthread); - kdb_backtrace(); - kdb_reenter(); + kdb_reenter(true); panic("%s: did not reenter debugger", __func__); } Index: sys/kern/subr_kdb.c =================================================================== --- sys/kern/subr_kdb.c +++ sys/kern/subr_kdb.c @@ -495,14 +495,15 @@ } void -kdb_reenter(void) +kdb_reenter(bool print_trace) { if (!kdb_active || kdb_jmpbufp == NULL) return; - - printf("KDB: reentering\n"); - kdb_backtrace(); + if (print_trace) { + printf("KDB: reentering\n"); + kdb_backtrace(); + } longjmp(kdb_jmpbufp, 1); /* NOTREACHED */ } Index: sys/riscv/riscv/trap.c =================================================================== --- sys/riscv/riscv/trap.c +++ sys/riscv/riscv/trap.c @@ -172,7 +172,7 @@ #ifdef KDB if (kdb_active) { - kdb_reenter(); + kdb_reenter(true); return; } #endif Index: sys/sparc64/sparc64/trap.c =================================================================== --- sys/sparc64/sparc64/trap.c +++ sys/sparc64/sparc64/trap.c @@ -334,7 +334,7 @@ ("trap: kernel trap isn't")); if (kdb_active) { - kdb_reenter(); + kdb_reenter(true); return; } Index: sys/sys/kdb.h =================================================================== --- sys/sys/kdb.h +++ sys/sys/kdb.h @@ -77,7 +77,7 @@ void * kdb_jmpbuf(jmp_buf); void kdb_panic(const char *); void kdb_reboot(void); -void kdb_reenter(void); +void kdb_reenter(bool print_trace); struct pcb *kdb_thr_ctx(struct thread *); struct thread *kdb_thr_first(void); struct thread *kdb_thr_from_pid(pid_t);