diff --git a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch index d8fdfba7..21dccaa3 100644 --- a/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch +++ b/patches/ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch @@ -1,4 +1,4 @@ -From d87b3ff060a52b851aec1f66ff4b04fceebfc8ab Mon Sep 17 00:00:00 2001 +From 4935d5a693f839352e94094c2bbfeb361baff009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 4 Oct 2014 02:53:22 +0200 Subject: [PATCH] ntdll: Setup a temporary signal handler during process @@ -15,10 +15,10 @@ Subject: [PATCH] ntdll: Setup a temporary signal handler during process 7 files changed, 74 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index 4d95c29ab24..4406c1eb634 100644 +index 3cde6b726a2..f4a20d052c8 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c -@@ -2532,6 +2532,8 @@ void __wine_main( int argc, char *argv[], char *envp[] ) +@@ -2398,6 +2398,8 @@ void __wine_main( int argc, char *argv[], char *envp[] ) #endif virtual_init(); @@ -28,10 +28,10 @@ index 4d95c29ab24..4406c1eb634 100644 #ifdef __APPLE__ diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c -index fe51629838c..a39f158530a 100644 +index 28cb2222809..b3b55a11e4f 100644 --- a/dlls/ntdll/unix/signal_arm.c +++ b/dlls/ntdll/unix/signal_arm.c -@@ -1584,6 +1584,12 @@ void signal_init_process(void) +@@ -1566,6 +1566,12 @@ void signal_init_process(void) exit(1); } @@ -45,10 +45,10 @@ index fe51629838c..a39f158530a 100644 /*********************************************************************** * call_init_thunk diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c -index 794aa7b2925..bf8e69f1661 100644 +index f553aac1993..192baf23251 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c -@@ -1381,6 +1381,12 @@ void signal_init_process(void) +@@ -1576,6 +1576,12 @@ void signal_init_process(void) exit(1); } @@ -62,7 +62,7 @@ index 794aa7b2925..bf8e69f1661 100644 /*********************************************************************** * call_init_thunk diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c -index cc8605c2a4f..bfd0c3eb7ef 100644 +index 11bdd9c1ea6..f688795ab91 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -1839,6 +1839,30 @@ static BOOL handle_syscall_trap( ucontext_t *sigcontext ) @@ -96,7 +96,7 @@ index cc8605c2a4f..bfd0c3eb7ef 100644 /********************************************************************** * segv_handler * -@@ -2410,6 +2434,34 @@ void signal_init_process(void) +@@ -2408,6 +2432,34 @@ void signal_init_process(void) exit(1); } @@ -132,10 +132,10 @@ index cc8605c2a4f..bfd0c3eb7ef 100644 /*********************************************************************** * call_init_thunk diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c -index cc070dda5ae..3b0f671afe2 100644 +index 8302976706c..a1d118b61da 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c -@@ -2462,6 +2462,12 @@ void signal_init_process(void) +@@ -2640,6 +2640,12 @@ void signal_init_process(void) exit(1); } @@ -149,10 +149,10 @@ index cc070dda5ae..3b0f671afe2 100644 /*********************************************************************** * call_init_thunk diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index fa7b97117ff..12a484d079a 100644 +index 16bf5cc2c78..c03d8675244 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -241,6 +241,7 @@ extern void signal_init_threading(void) DECLSPEC_HIDDEN; +@@ -268,6 +268,7 @@ extern void signal_init_threading(void) DECLSPEC_HIDDEN; extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_process(void) DECLSPEC_HIDDEN; @@ -161,18 +161,18 @@ index fa7b97117ff..12a484d079a 100644 BOOL suspend, TEB *teb ) DECLSPEC_HIDDEN; extern void DECLSPEC_NORETURN signal_exit_thread( int status, void (*func)(int), TEB *teb ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c -index 45089ae5845..0a9c4f2feb0 100644 +index a06f675af7c..a7705e78fb4 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c -@@ -3279,7 +3279,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) +@@ -3703,7 +3703,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) + } + #endif - mutex_lock( &virtual_mutex ); /* no need for signal masking inside signal handler */ - vprot = get_page_vprot( page ); - if (!is_inside_signal_stack( stack ) && (vprot & VPROT_GUARD)) + if (stack && !is_inside_signal_stack( stack ) && (vprot & VPROT_GUARD)) { struct thread_stack_info stack_info; if (!is_inside_thread_stack( page, &stack_info )) -- -2.38.1 +2.40.1 diff --git a/staging/upstream-commit b/staging/upstream-commit index 69bbe69c..0054ab24 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -81859c9af70aa5ed6da3060488d1815a3607c291 +9285aa5bb1338d8e2c1ac6b95974182b3f4881a9