On Jun 28, 2006, at 6:28 PM, Robert Watson wrote:


On Wed, 28 Jun 2006, User Freebsd wrote:

'k, now that I'm up to 3 6-STABLE servers that are deadlocking, I'm spending time with the remote tech today to get a serial console put online ... how do I drop into DDB remotely, where the serial console is going through a Portmaster Terminal server? issuing CTL-ALT-ESC, I doubt, will work, will it?

If configured to use a serial console (console="comconsole" in loader.conf), you can enter the debugger with BREAK_TO_DEBUGGER in the kernel config by sending a serial break. With my portmasters, I telnet to a TCP port to connect to the serial console, so I send a telnet break, using ^]send break.

I *used* to set BREAK_TO_DEBUGGER also, but I discovered (the hard, painful, revenue-costing way) that if you ever power cycle a Cyclades TS1000 terminal server, it sends a break signal down each and every serial line attached to it.

So, now I configure my debuggering in the kernel like this:

# Kernel debugging
options         KDB                     #Enable the kernel debugger
options         KDB_TRACE
options         KDB_UNATTENDED
# Enable the ddb debugger backend.
options         DDB
# break on sequence CR ~ ^b
options         ALT_BREAK_TO_DEBUGGER


This lets me get the best of both worlds. It is amazing that the CR ~ ^b sequence will respond even when the box itself is totally unresponsive due to some runaway process or other shortage of memory condition.

Another thing you may wish to consider is adding option SW_WATCHDOG then running the watchdog daemon. It may help you by panicking your way out of deadlock automatically. You could also investigate getting a hardware watchdog card that works with watchdogd.

Reply via email to