Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Apr 2021 00:51:01 +0100
From:      Johannes Totz <johannes@jo-t.de>
To:        freebsd-hackers@freebsd.org
Subject:   Debugging signal 11
Message-ID:  <s5d7t6$bdl$1@ciao.gmane.io>

next in thread | raw e-mail | index | archive | help
Hi there,

My init(8) is crashing with a signal 11.

I've added a breakpoint() in kern_sig.c:


static int
issignal(struct thread *td)
{
	// [snip]

	case (intptr_t)SIG_DFL:
		/*
		 * Don't take default actions on system processes.
		 */
		if (p->p_pid <= 1) {
#ifdef DIAGNOSTIC
			/*
			 * Are you sure you want to ignore SIGSEGV
			 * in init? XXX
			 */
			printf("Process (pid %lu) got signal %d\n",
				(u_long)p->p_pid, sig);

			breakpoint();	// added by me
#endif
			break;		/* == ignore */
		}

	// [snip]
}


That breaks to DDB where I can call dump. So far so good.
But how do I get back to the stack(trace) and instruction that caused 
the segv? Either in DDB or KGDB?


Thanks,

Johannes




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?s5d7t6$bdl$1>