mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Bug 20198: quick_exit should not call destructors.
In C++11 18.5.12 says "Objects shall not be destroyed as a result of calling quick_exit." In C11 quick_exit is silent about thread object destruction. Therefore to make glibc C++ compliant we do not call any thread local destructors. A new regression test verifies the fix. I will note that C++11 18.5.3 makes it clear that C++ defines additional requirements for _Exit() to prevent it from executing destructors. Given that the point of _Exit() is to terminate the process immediately it makes sense the C and C++ should line up and avoid calling destructors. No failures. New regtest passes.
This commit is contained in:
@ -63,8 +63,9 @@ extern struct exit_function_list *__quick_exit_funcs attribute_hidden;
|
||||
extern struct exit_function *__new_exitfn (struct exit_function_list **listp);
|
||||
extern uint64_t __new_exitfn_called attribute_hidden;
|
||||
|
||||
extern void __run_exit_handlers (int status, struct exit_function_list **listp,
|
||||
bool run_list_atexit)
|
||||
extern void __run_exit_handlers (int status,
|
||||
struct exit_function_list **listp,
|
||||
bool run_list_atexit, bool run_dtors)
|
||||
attribute_hidden __attribute__ ((__noreturn__));
|
||||
|
||||
extern int __internal_atexit (void (*func) (void *), void *arg, void *d,
|
||||
|
Reference in New Issue
Block a user