What's the difference between a kernel oops and a kernel panic?

24,516

Solution 1

An "oops" is a Linux kernel problem bad enough that it may affect system reliability.

Some "oops"es are bad enough that the kernel decides to stop running immediately, lest there be data loss or other damage. These are called kernel panics.

The latter term is primordial, going back to the very earliest versions of Linux's Unix forebears, which also print a "panic" message on the console when they happen. The original AT&T Unix kernel function that handles such conditions is called panic(). You can trace it back through the public source code releases of AT&T Unix to its very first releases:

  • The OpenSolaris version of panic() was released by Sun in 2005. It is fairly elaborate, and its header comments explain a lot about what happens in a panic situation.

  • The Unix V4 implementation of panic() was released in 1973. It basically just prints the core state of the kernel to the console and stops the processor.

  • That function is substantially unchanged in Unix V3 according to Amit Singh, who famously dissected an older version of Mac OS X and explained it. That first link takes you to a lovely article explaining macOS's approach to the implementation of panic(), which starts off with a relevant historical discussion.

  • The "unix-jun72" project to resurrect Unix V1 from scanned source code printouts shows a very early PDP-11 assembly version of this function, written sometime before June 1972, before Unix was fully rewritten in C. By this point, its implementation is whittled down to a 6-instruction routine that does little more than restart the PDP-11.

Solution 2

An oops is a specific error the kernel encounters. An Oops contains the following information:

  • Brief description
  • Oops #
  • Which CPU it happened on, and the code the CPU was executing
  • Register contents

Oops is a way to debug kernel code, and there are utilities for helping with that. A kernel panic means the system cannot recover and must be restarted. However, with an Oops, the system can usually continue. You can configure klogd and syslogd to log oops messages to files, rather than to std out.

Share:
24,516

Related videos on Youtube

user2914606
Author by

user2914606

Updated on September 18, 2022

Comments

  • user2914606
    user2914606 almost 2 years

    I know what a kernel panic is, but I've also seen the term "kernel oops". I'd always thought they were the same, but maybe not. So:

    What is a kernel oops, and how is it different from a kernel panic?