calling exit more than once invokes undefined behavior. in some cases it's desirable to detect undefined behavior and diagnose it via a predictable crash, but the code here was silently covering up an uncommon case (exit from more than one thread) and turning a much more common case (recursive calls to exit) into a permanent hang. |
||
|---|---|---|
| .. | ||
| _Exit.c | ||
| abort.c | ||
| assert.c | ||
| at_quick_exit.c | ||
| atexit.c | ||
| exit.c | ||
| quick_exit.c | ||