Linux kernel oops

{{Short description|Serious, non-fatal error in the Linux kernel}}

File:Linux_2.4_oops_sparc.png]]

File:Linux-2.6-oops-parisc.jpg with a dead ASCII cow]]

In computing, an oops is a serious but non-fatal error in the Linux kernel. An oops may precede a kernel panic, but it may also allow continued operation with compromised reliability. The term does not stand for anything, other than that it is a simple mistake.

Functioning

When the kernel detects a problem, it kills any offending processes and prints an oops message, which Linux kernel engineers can use in debugging the condition that created the oops and fixing the underlying programming error. After a system has experienced an oops, some internal resources may no longer be operational. Thus, even if the system appears to work correctly, undesirable side effects may have resulted from the active task being killed. A kernel oops often leads to a kernel panic when the system attempts to use resources that have been lost. Some kernels are configured to panic when many oopses ({{formatnum:10000}} by default) have occurred.{{cite web|url=https://lore.kernel.org/all/20221107201317.324457-1-jannh@google.com/|title=[PATCH] exit: Put an upper limit on how often we can oops|last=Horn|first=Jann|date=7 November 2022|website=lore.kernel.org|access-date=31 January 2023}}{{cite web|url=https://docs.kernel.org/admin-guide/sysctl/kernel.html#oops-limit|title=Documentation for /proc/sys/kernel/|website=docs.kernel.org|access-date=31 January 2023}} This oops limit is due to the potential, for example, for attackers to repeatedly trigger an oops and an associated resource leak, which eventually overflows an integer and allows further exploitation.{{ cite web | url = https://lwn.net/Articles/914878/ | title = Averting excessive oopses | work = LWN.net | last = Corbet | first = Jonathan | date = 18 November 2022 }}{{ cite web | url = https://googleprojectzero.blogspot.com/2023/01/exploiting-null-dereferences-in-linux.html | publisher = Google Project Zero | title = Exploiting null-dereferences in the Linux kernel | date = 19 January 2023 | last = Jenkins | first = Seth }}

The official Linux kernel documentation regarding oops messages resides in the file {{Mono|Documentation/admin-guide/bug-hunting.rst}}{{cite web |url=https://www.kernel.org/doc/Documentation/admin-guide/bug-hunting.rst |title=bug-hunting |website=kernel.org}} of the kernel sources. Some logger configurations may affect the ability to collect oops messages.{{cite web |url=http://madwifi-project.org/wiki/DevDocs/KernelOops |title=DevDocs/KernelOops |website=madwifi-project.org |access-date=2010-08-21 |archive-date=2020-08-03 |archive-url=https://web.archive.org/web/20200803071136/http://madwifi-project.org/wiki/DevDocs/KernelOops |url-status=dead }} The kerneloops software can collect and submit kernel oopses to a repository such as the www.kerneloops.org website,{{cite web |url=https://linux.die.net/man/8/kerneloops|title=kerneloops(8) - Linux man page|access-date=31 January 2023}} which provides statistics and public access to reported oopses.

A simplified crash screen was introduced in Linux 6.10, similar to the Blue Screen of Death on Windows.{{Cite web|url=https://www.phoronix.com/news/Linux-6.10-DRM-Panic-Handler|title=Linux 6.10 Preps A Kernel Panic Screen - Sort Of A "Blue Screen of Death" - Phoronix|last=Larabel|first=Michael|date=19 April 2024|website=Phoronix}}

See also

  • kdump (Linux){{snd}} Linux kernel's crash dump mechanism, which internally uses kexec
  • System.map{{snd}} contains mappings between symbol names and their addresses in memory, used to interpret oopses

References

{{Reflist}}

Further reading

  • [https://lwn.net/images/pdf/LDD3/ch04.pdf Linux Device Drivers, 3rd edition, Chapter 4.]
  • {{cite mailing list

|title = Re: what's an OOPS

|author = John Bradford

|date = 2003-03-08

|mailing-list = LKML

|url = http://www.ussg.iu.edu/hypermail/linux/kernel/0303.1/0009.html

|access-date = 2006-05-22

|url-status = dead

|archive-url = https://web.archive.org/web/20070310214850/http://www.ussg.iu.edu/hypermail/linux/kernel/0303.1/0009.html

|archive-date = 2007-03-10

}}

  • {{cite mailing list

|title = Re: what's an OOPS

|author = Szakacsits Szabolcs

|date = 2003-03-08

|mailing-list = LKML

|url = http://www.ussg.iu.edu/hypermail/linux/kernel/0303.1/0027.html

|access-date = 2006-05-22

|url-status = dead

|archive-url = https://web.archive.org/web/20070313235208/http://www.ussg.iu.edu/hypermail/linux/kernel/0303.1/0027.html

|archive-date = 2007-03-13

}}

  • {{cite mailing list

| title = OOPS report analysis

| author = Al Viro

| date = 2008-01-14

| mailing-list = LKML

| url = http://article.gmane.org/gmane.linux.kernel/624292

| access-date = 2008-01-14

| archive-url = https://web.archive.org/web/20080421030623/http://article.gmane.org/gmane.linux.kernel/624292

| archive-date = 2008-04-21

| url-status = dead

}}

  • [http://madwifi-project.org/wiki/DevDocs/KernelOops Kernel Oops Howto (the madwifi project)] {{Webarchive|url=https://web.archive.org/web/20200803071136/http://madwifi-project.org/wiki/DevDocs/KernelOops |date=2020-08-03 }} Useful information on configuration files and tools to help display oops messages. Also many other links.

{{Linux kernel}}

{{Linux}}

{{Error messages}}

Category:Computer errors

Category:Linux kernel

Category:Screens of death