Module: wine Branch: master Commit: 4a1629c4117fda9eca63b6f56ea45771dc9734ac URL: http://source.winehq.org/git/wine.git/?a=commit;h=4a1629c4117fda9eca63b6f56e...
Author: Sebastian Lackner sebastian@fds-team.de Date: Fri Jul 17 06:46:47 2015 +0200
ntdll: Avoid possible deadlock by using _exit() in NtTerminateProcess.
When threads are killed with SIGQUIT some locks can be in an undefined state, and it not safe to call exit handlers.
---
dlls/ntdll/process.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c index c69de5e..ca9462a 100644 --- a/dlls/ntdll/process.c +++ b/dlls/ntdll/process.c @@ -21,11 +21,16 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#include "config.h" + #include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif
#include "ntstatus.h" #define WIN32_NO_STATUS @@ -60,7 +65,7 @@ NTSTATUS WINAPI NtTerminateProcess( HANDLE handle, LONG exit_code ) self = !ret && reply->self; } SERVER_END_REQ; - if (self && handle) exit( exit_code ); + if (self && handle) _exit( exit_code ); return ret; }