# Use of the word 'Fatal' in computing.

**URL:** <https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215>\
**Category:** Factual Questions\
**Created:** [December 30, 2008, 3:07pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215 "2008-12-30T15:07:02Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lobsang](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/lobsang/32/4067_2.png) [@Lobsang](https://boards.straightdope.com/u/Lobsang)\
**Post date:** [December 30, 2008, 3:07pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/1 "2008-12-30T15:07:02Z")

</div>

According to the dictionary, the number 1 definition of ‘fatal’ is…

> [@www.dictionary.com](#):
>
> 1. causing or capable of causing death; mortal; deadly: a fatal accident; a fatal dose of poison.

There are other definitons, but the overriding one is that a fatal event is one where death has occured.

When did this start being used in computing? and by whom?

It amuses me to think when I see a ‘fatal error has occured’ message to think that something has just died! :eek:😃

---

<div class="post-metadata">

**Author:** ![wolfman](https://avatars.discourse-cdn.com/v4/letter/w/a8b319/32.png) [@wolfman](https://boards.straightdope.com/u/wolfman)\
**Post date:** [December 30, 2008, 3:11pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/2 "2008-12-30T15:11:42Z")

</div>

It’s basically used in the sence of unrecoverable error, so in that sence the Program execution has “died”

Some errors can be ‘handled’ or worked around. Or the program execution can recover, and continue on in some fashion, if not the desired one.

---

<div class="post-metadata">

**Author:** ![Superfluous\_Parentheses](https://avatars.discourse-cdn.com/v4/letter/s/8edcca/32.png) [@Superfluous\_Parentheses](https://boards.straightdope.com/u/Superfluous_Parentheses)\
**Post date:** [December 30, 2008, 4:28pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/3 "2008-12-30T16:28:21Z")

</div>

Not sure exactly when this terminology came into use, but Unix systems use the term “kill” to indicate signaling processes (including but not limited to forcibly shutting down the other process) “zombie” in reference to a specific process state, “daemon” similarly, and “children” and “parent” as descriptions of relations between processes, leading to such lovely questions as [kill parent and child](http://www.unix.com/unix-dummies-questions-answers/9506-kill-parent-child.html)

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [December 30, 2008, 4:39pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/4 "2008-12-30T16:39:02Z")

</div>

> [@Superfluous\_Parentheses](#):
>
> “zombie” in reference to a specific process state

A zombie is a child process whose parent has died. A parent should wait for its child to die (or kill it outright) so it can collect its exit status.

> [@](#):
>
> “daemon” similarly

Daemons are useful. They’re processes that do something automatically in response to external conditions (a file being copied to a sacred directory is a common one) and are commonly used to handle system tasks like printing.

> [@](#):
>
> and “children” and “parent” as descriptions of relations between processes

Any process can become a parent by spawning children. Then the cautions about zombies apply.

> [@](#):
>
> leading to such lovely questions as [kill parent and child](http://www.unix.com/unix-dummies-questions-answers/9506-kill-parent-child.html)

Indeed.

Similarly, ‘illegal’ means that the program has done something to violate the protection régime implemented by the operating system. Illegal errors are commonly fatal.

---

<div class="post-metadata">

**Author:** ![unclelem](https://avatars.discourse-cdn.com/v4/letter/u/ac91a4/32.png) [@unclelem](https://boards.straightdope.com/u/unclelem)\
**Post date:** [December 30, 2008, 4:52pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/5 "2008-12-30T16:52:55Z")

</div>

> [@Lobsang](#):
>
> It amuses me to think when I see a ‘fatal error has occured’ message to think that something has just died! :eek:😃

I suspect this arose by association with the word “terminal” in the sense that the error could not be dealt with and the program would have to be terminated. It’s easy to see how this could turn into a variety of slang terms that have more to do with death and dying than with ending a program.

---

<div class="post-metadata">

**Author:** ![chrisk](https://avatars.discourse-cdn.com/v4/letter/c/6de8d8/32.png) [@chrisk](https://boards.straightdope.com/u/chrisk)\
**Post date:** [December 30, 2008, 5:00pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/6 "2008-12-30T17:00:42Z")

</div>

> [@Derleth](#):
>
> A zombie is a child process whose parent has died. A parent should wait for its child to die (or kill it outright) so it can collect its exit status.

To me, that’s not an appropriate metaphor. A child process whose parent has died should be an orphan process.

A zombie might be a process that isn’t responding to a kill command (you can kill it but it won’t die. :D)

---

<div class="post-metadata">

**Author:** ![Superfluous\_Parentheses](https://avatars.discourse-cdn.com/v4/letter/s/8edcca/32.png) [@Superfluous\_Parentheses](https://boards.straightdope.com/u/Superfluous_Parentheses)\
**Post date:** [December 30, 2008, 5:11pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/7 "2008-12-30T17:11:51Z")

</div>

> [@chrisk](#):
>
> To me, that’s not an appropriate metaphor. A child process whose parent has died should be an orphan process.

Actually, a zombie is a process that has died but nobody’s bothered to clean up after it (yet). Still not completely appropriate, though.

---

<div class="post-metadata">

**Author:** ![ZenBeam](https://avatars.discourse-cdn.com/v4/letter/z/3ab097/32.png) [@ZenBeam](https://boards.straightdope.com/u/ZenBeam)\
**Post date:** [December 30, 2008, 6:01pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/8 "2008-12-30T18:01:59Z")

</div>

I was doing software engineering for about a year, and there was an ongoing debate in our group about error/warning messages, and whether there should be three (warning, error, fatal error) or just two (warning and error). Some in the group couldn’t understand how error and fatal error could be different. It seemed obvious to me, but I wasn’t really much of a software engineer, so I never said anything.

---

<div class="post-metadata">

**Author:** ![JKilez](https://avatars.discourse-cdn.com/v4/letter/j/e5b9ba/32.png) [@JKilez](https://boards.straightdope.com/u/JKilez)\
**Post date:** [December 30, 2008, 9:46pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/9 "2008-12-30T21:46:04Z")

</div>

> [@Superfluous\_Parentheses](#):
>
> Actually, a zombie is a process that has died but nobody’s bothered to clean up after it (yet). Still not completely appropriate, though.

Well, it is dead but still looks like it is living; that seems appropriate to me. Also, a process who has lost its parent _is_ an orphan. When it loses its parent, it becomes the ward of god, er… make that PID 1.

---

<div class="post-metadata">

**Author:** ![sailor](https://avatars.discourse-cdn.com/v4/letter/s/a587f6/32.png) [@sailor](https://boards.straightdope.com/u/sailor)\
**Post date:** [December 30, 2008, 9:55pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/10 "2008-12-30T21:55:02Z")

</div>

he, he… about ten years ago I witnessed a guy who was a lawyer, an idiot and totally ignorant of computers come face to face with the message “the system has performed an illegal operation…” and the guy went bonkers and wanted to argue with the computer: "What do you _mean_ illegal? " He could not imagine another meaning for the word “illegal”.

I think “kill” has a long history before computing. On boats I have always said and heard “kill the engine”. I am sure that predates computers and probably fountain pens.

---

<div class="post-metadata">

**Author:** ![Stathol](https://avatars.discourse-cdn.com/v4/letter/s/71e660/32.png) [@Stathol](https://boards.straightdope.com/u/Stathol)\
**Post date:** [December 30, 2008, 10:40pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/11 "2008-12-30T22:40:56Z")

</div>

> [@JKilez](#):
>
> Well, it is dead but still looks like it is living; that seems appropriate to me. Also, a process who has lost its parent _is_ an orphan. When it loses its parent, it becomes the ward of god, er… make that PID 1.

Windows actually tracks parent and child processes too, but Windows doesn’t care if a process is orphaned. In fact, I’m not sure that the parent process PID pointer (Peter picked a peck of…) is actually used for anything in Windows except for the task manager. The “End Process Tree” option is supposed to kill a process and all of its descendants.

It kind of gives an interesting look into Windows, though:

“System” begat smss.exe,  
smss.exe begat csrss.exe,  
csrss.exe begat winlogon.exe,  
winlogon.exe begat services.exe and lsass.exe

The children of services.exe:

svchost.exe, whose children were browser.dll, cryptsvc.dll, srvsvc.dll, wkssvc.dll, …  
svchost.exe, whose children were w32time.dll, lmhsvc.dll, alrsvc.dll, …  
svchost.exe, whose children were …  
svchost.exe, whose children were …  
…  
spoolsv.exe, whose womb was barren,  
…

The children of lsass.exe:

lsass.exe begat userinit.exe,  
userinit.exe begat explorer.exe

Now userinit.exe was a righteous process who walked with the kernel; then he was no more, because the kernel took him away.

(The shell instance of explorer.exe always shows up as an orphaned process because it is spawned by userinit.exe, which always terminates before the user interface becomes available).

😃

---

<div class="post-metadata">

**Author:** ![Tim\_T-Bonham.net](https://avatars.discourse-cdn.com/v4/letter/t/46a35a/32.png) [@Tim\_T-Bonham.net](https://boards.straightdope.com/u/Tim_T-Bonham.net)\
**Post date:** [December 31, 2008, 7:09am UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/12 "2008-12-31T07:09:51Z")

</div>

> [@Superfluous\_Parentheses](#):
>
> Not sure exactly when this terminology came into use

The term was used in error messages in the first version of OS/360, BOS/360 (both the 4K and 8K versions), announced with the IBM System 360 in 1964. (Though I don’t think any were actually shipped until early 1965.)

So it was in use at least 45 years ago.

---

<div class="post-metadata">

**Author:** ![Cerowyn](https://avatars.discourse-cdn.com/v4/letter/c/82dd89/32.png) [@Cerowyn](https://boards.straightdope.com/u/Cerowyn)\
**Post date:** [December 31, 2008, 7:21am UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/13 "2008-12-31T07:21:52Z")

</div>

I think Derleth is confused, as others pointed out: a zombie is a process (or thread) that has stopped responding and has to be “forcefully” stopped. Superfluous Parentheses’ definition is correct as far as it goes, but I’m having trouble imagining one of the modern OSes not cleaning up a process that had exited cleanly and wasn’t blocked on some resource.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [December 31, 2008, 8:54am UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/14 "2008-12-31T08:54:14Z")

</div>

> [@Cerowyn](#):
>
> I think Derleth is confused, as others pointed out: a zombie is a process (or thread) that has stopped responding and has to be “forcefully” stopped.

I am confused, in a generalized philosophical sense, but I’ve never heard ‘zombie’ used with that meaning before. I’d call such a process ‘catatonic’ or ‘hung’, not a zombie.

> [@](#):
>
> Superfluous Parentheses’ definition is correct as far as it goes, but I’m having trouble imagining one of the modern OSes not cleaning up a process that had exited cleanly and wasn’t blocked on some resource.

[Here is a cite supporting my position.](http://www.linuxsa.org.au/tips/zombies.html) [This concurs.](http://www.unixguide.net/unix/programming/1.6.1.shtml) So does everyone else.

[This gives more detail.](http://www-cdf.fnal.gov/offline/UNIX_Concepts/concepts.zombies.txt)  
[Yes, even Wikipedia agrees with me.](http://en.wikipedia.org/wiki/Zombie_process)

---

<div class="post-metadata">

**Author:** ![Pasta](https://avatars.discourse-cdn.com/v4/letter/p/ecccb3/32.png) [@Pasta](https://boards.straightdope.com/u/Pasta)\
**Post date:** [December 31, 2008, 10:31am UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/15 "2008-12-31T10:31:30Z")

</div>

> [@Derleth](#):
>
> A zombie is a child process whose parent has died.

This is the statement folks are taking issue with, and your cites indicate that it is incorrect. An orphan (not a zombie) is a process whose parent has died. A zombie is a process whose parent (usually) continues to live but hasn’t asked for the exit status of the child. The child process has exited, but it remains in the list of processes.

The following is also not really right:

> [@Cerowyn](#):
>
> A zombie is a process (or thread) that has stopped responding and has to be “forcefully” stopped.

The apparent non-responsiveness is an aspect of zombie-ness, but it is _not_ the definition. You cannot stop or suspend or kill a zombie because there is nothing actually executing. The “process” is just an entry in a table. Thus, it _appears_ like a non-responsive process.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [December 31, 2008, 10:29pm UTC](https://boards.straightdope.com/t/use-of-the-word-fatal-in-computing/479215/16 "2008-12-31T22:29:45Z")

</div>

> [@Pasta](#):
>
> This is the statement folks are taking issue with, and your cites indicate that it is incorrect. An orphan (not a zombie) is a process whose parent has died. A zombie is a process whose parent (usually) continues to live but hasn’t asked for the exit status of the child. The child process has exited, but it remains in the list of processes.

OK, perhaps I was more confused than I thought.
