From 8cbc70df46e741f3be231bd12f83a557d1ab474e Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Sun, 13 Dec 2020 09:05:30 +1100 Subject: [PATCH] Disable ntdll-NtAlertThreadByThreadId patchset This patchset is causing applications to freeze on startup (intermittently). Disabled until the root cause can be fixed. --- ...ediag-message-to-show-warning-that-t.patch | 14 +-- patches/Staging/definition | 2 +- patches/ntdll-Dealloc_Thread_Stack/definition | 3 +- .../ntdll-NtAlertThreadByThreadId/definition | 1 + patches/patchinstall.sh | 107 ++++-------------- 5 files changed, 34 insertions(+), 93 deletions(-) diff --git a/patches/Staging/0001-kernel32-Add-winediag-message-to-show-warning-that-t.patch b/patches/Staging/0001-kernel32-Add-winediag-message-to-show-warning-that-t.patch index edc6abb7..d120deb7 100644 --- a/patches/Staging/0001-kernel32-Add-winediag-message-to-show-warning-that-t.patch +++ b/patches/Staging/0001-kernel32-Add-winediag-message-to-show-warning-that-t.patch @@ -1,4 +1,4 @@ -From d02623b1c4d0fa97ea990d160529ecd98da08a85 Mon Sep 17 00:00:00 2001 +From 0cf6433af95363c5fbba2af482b2ba50b863dfb7 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 2 Oct 2014 19:44:31 +0200 Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging @@ -9,7 +9,7 @@ Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging 1 file changed, 15 insertions(+) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 440a77d4063..3e3acdc5eac 100644 +index 20bc3f977d1..c2187a19397 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -44,6 +44,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay); @@ -20,7 +20,7 @@ index 440a77d4063..3e3acdc5eac 100644 #ifdef _WIN64 #define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232) -@@ -3509,6 +3510,7 @@ static void process_breakpoint(void) +@@ -3456,6 +3457,7 @@ static void process_breakpoint(void) __ENDTRY } @@ -28,7 +28,7 @@ index 440a77d4063..3e3acdc5eac 100644 /****************************************************************** * LdrInitializeThunk (NTDLL.@) -@@ -3518,6 +3520,9 @@ static void process_breakpoint(void) +@@ -3465,6 +3467,9 @@ static void process_breakpoint(void) */ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR unknown3, ULONG_PTR unknown4 ) { @@ -38,7 +38,7 @@ index 440a77d4063..3e3acdc5eac 100644 static int attach_done; int i; NTSTATUS status; -@@ -3536,6 +3541,16 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR +@@ -3483,6 +3488,16 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, ULONG_PTR unknown2, ULONG_PTR entry = (void **)&context->u.s.X0; #endif @@ -54,7 +54,7 @@ index 440a77d4063..3e3acdc5eac 100644 + if (process_detaching) NtTerminateThread( GetCurrentThread(), 0 ); - teb_list_wrlock(); + RtlEnterCriticalSection( &loader_section ); -- -2.29.2 +2.28.0 diff --git a/patches/Staging/definition b/patches/Staging/definition index 0e0ff02e..6b293cbc 100644 --- a/patches/Staging/definition +++ b/patches/Staging/definition @@ -1 +1 @@ -Depends: ntdll-NtAlertThreadByThreadId +#Depends: ntdll-NtAlertThreadByThreadId diff --git a/patches/ntdll-Dealloc_Thread_Stack/definition b/patches/ntdll-Dealloc_Thread_Stack/definition index faabfc59..4f09ec92 100644 --- a/patches/ntdll-Dealloc_Thread_Stack/definition +++ b/patches/ntdll-Dealloc_Thread_Stack/definition @@ -1,2 +1,3 @@ Fixes: Do not allow to deallocate thread stack for current thread -Depends: ntdll-NtAlertThreadByThreadId +#Depends: ntdll-NtAlertThreadByThreadId + diff --git a/patches/ntdll-NtAlertThreadByThreadId/definition b/patches/ntdll-NtAlertThreadByThreadId/definition index 92b7cb18..961f389a 100644 --- a/patches/ntdll-NtAlertThreadByThreadId/definition +++ b/patches/ntdll-NtAlertThreadByThreadId/definition @@ -1,2 +1,3 @@ Fixes: [50292] Process-local synchronization objects use private interfaces into the Unix library Depends: server-Object_Types +Disabled: True diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 5c1d060d..9261adf0 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -169,7 +169,6 @@ patch_enable_all () enable_ntdll_Junction_Points="$1" enable_ntdll_Manifest_Range="$1" enable_ntdll_NtAccessCheck="$1" - enable_ntdll_NtAlertThreadByThreadId="$1" enable_ntdll_NtDevicePath="$1" enable_ntdll_NtQueryEaFile="$1" enable_ntdll_NtQuerySection="$1" @@ -590,9 +589,6 @@ patch_enable () ntdll-NtAccessCheck) enable_ntdll_NtAccessCheck="$2" ;; - ntdll-NtAlertThreadByThreadId) - enable_ntdll_NtAlertThreadByThreadId="$2" - ;; ntdll-NtDevicePath) enable_ntdll_NtDevicePath="$2" ;; @@ -1565,13 +1561,6 @@ if test "$enable_ntdll_NtDevicePath" -eq 1; then enable_ntdll_Pipe_SpecialCharacters=1 fi -if test "$enable_ntdll_Dealloc_Thread_Stack" -eq 1; then - if test "$enable_ntdll_NtAlertThreadByThreadId" -gt 1; then - abort "Patchset ntdll-NtAlertThreadByThreadId disabled, but ntdll-Dealloc_Thread_Stack depends on that." - fi - enable_ntdll_NtAlertThreadByThreadId=1 -fi - if test "$enable_ntdll_Builtin_Prot" -eq 1; then if test "$enable_ntdll_WRITECOPY" -gt 1; then abort "Patchset ntdll-WRITECOPY disabled, but ntdll-Builtin_Prot depends on that." @@ -1672,20 +1661,6 @@ if test "$enable_nvapi_Stub_DLL" -eq 1; then enable_nvcuda_CUDA_Support=1 fi -if test "$enable_Staging" -eq 1; then - if test "$enable_ntdll_NtAlertThreadByThreadId" -gt 1; then - abort "Patchset ntdll-NtAlertThreadByThreadId disabled, but Staging depends on that." - fi - enable_ntdll_NtAlertThreadByThreadId=1 -fi - -if test "$enable_ntdll_NtAlertThreadByThreadId" -eq 1; then - if test "$enable_server_Object_Types" -gt 1; then - abort "Patchset server-Object_Types disabled, but ntdll-NtAlertThreadByThreadId depends on that." - fi - enable_server_Object_Types=1 -fi - # Patchset Compiler_Warnings # | @@ -1724,64 +1699,8 @@ if test "$enable_Pipelight" -eq 1; then patch_apply Pipelight/0004-winex11.drv-Indicate-direct-rendering-through-OpenGL.patch fi -# Patchset server-Object_Types -# | -# | This patchset fixes the following Wine bugs: -# | * [#44629] Process Hacker can't enumerate handles -# | * [#45374] Yet Another Process Monitor (.NET 2.0 app) reports System.AccessViolationException -# | -# | Modified files: -# | * dlls/ntdll/tests/info.c, dlls/ntdll/tests/om.c, dlls/ntdll/unix/file.c, dlls/ntdll/unix/system.c, include/winternl.h, -# | server/completion.c, server/directory.c, server/event.c, server/file.c, server/handle.c, server/mailslot.c, -# | server/main.c, server/mapping.c, server/mutex.c, server/named_pipe.c, server/object.c, server/object.h, -# | server/process.c, server/protocol.def, server/registry.c, server/semaphore.c, server/symlink.c, server/thread.c, -# | server/timer.c, server/token.c, server/winstation.c -# | -if test "$enable_server_Object_Types" -eq 1; then - patch_apply server-Object_Types/0001-ntdll-Implement-SystemExtendedHandleInformation-in-N.patch - patch_apply server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch - patch_apply server-Object_Types/0003-server-Register-types-during-startup.patch - patch_apply server-Object_Types/0004-server-Rename-ObjectType-to-Type.patch - patch_apply server-Object_Types/0008-ntdll-Set-TypeIndex-for-ObjectTypeInformation-in-NtQ.patch - patch_apply server-Object_Types/0009-ntdll-Set-object-type-for-System-Extended-HandleInfo.patch - patch_apply server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch -fi - -# Patchset ntdll-NtAlertThreadByThreadId -# | -# | This patchset has the following (direct or indirect) dependencies: -# | * server-Object_Types -# | -# | This patchset fixes the following Wine bugs: -# | * [#50292] Process-local synchronization objects use private interfaces into the Unix library -# | -# | Modified files: -# | * dlls/ntdll/Makefile.in, dlls/ntdll/critsection.c, dlls/ntdll/loader.c, dlls/ntdll/ntdll.spec, dlls/ntdll/ntdll_misc.h, -# | dlls/ntdll/sync.c, dlls/ntdll/tests/Makefile.in, dlls/ntdll/tests/om.c, dlls/ntdll/tests/sync.c, -# | dlls/ntdll/unix/loader.c, dlls/ntdll/unix/sync.c, dlls/ntdll/unix/thread.c, dlls/ntdll/unix/unix_private.h, -# | dlls/ntdll/unix/virtual.c, dlls/ntdll/unixlib.h, include/winbase.h, include/winternl.h -# | -if test "$enable_ntdll_NtAlertThreadByThreadId" -eq 1; then - patch_apply ntdll-NtAlertThreadByThreadId/0001-ntdll-tests-Move-some-tests-to-a-new-sync.c-file.patch - patch_apply ntdll-NtAlertThreadByThreadId/0002-ntdll-tests-Add-some-tests-for-Rtl-resources.patch - patch_apply ntdll-NtAlertThreadByThreadId/0003-ntdll-Use-a-separate-mutex-to-lock-the-TEB-list.patch - patch_apply ntdll-NtAlertThreadByThreadId/0004-ntdll-Implement-NtAlertThreadByThreadId-and-NtWaitFo.patch - patch_apply ntdll-NtAlertThreadByThreadId/0005-ntdll-tests-Add-basic-tests-for-thread-id-alert-func.patch - patch_apply ntdll-NtAlertThreadByThreadId/0006-ntdll-Implement-thread-id-alerts-on-top-of-futexes-i.patch - patch_apply ntdll-NtAlertThreadByThreadId/0007-ntdll-Implement-thread-id-alerts-on-top-of-Mach-sema.patch - patch_apply ntdll-NtAlertThreadByThreadId/0008-ntdll-Use-a-separate-lock-to-access-the-PE-TEB-list.patch - patch_apply ntdll-NtAlertThreadByThreadId/0009-ntdll-Reimplement-Win32-futexes-on-top-of-thread-ID-.patch - patch_apply ntdll-NtAlertThreadByThreadId/0010-ntdll-Merge-critsection.c-into-sync.c.patch - patch_apply ntdll-NtAlertThreadByThreadId/0011-ntdll-Reimplement-the-critical-section-fast-path-on-.patch - patch_apply ntdll-NtAlertThreadByThreadId/0012-ntdll-Get-rid-of-the-direct-futex-path-for-condition.patch - patch_apply ntdll-NtAlertThreadByThreadId/0013-ntdll-Reimplement-SRW-locks-on-top-of-Win32-futexes.patch -fi - # Patchset Staging # | -# | This patchset has the following (direct or indirect) dependencies: -# | * server-Object_Types, ntdll-NtAlertThreadByThreadId -# | # | Modified files: # | * dlls/ntdll/loader.c # | @@ -3075,9 +2994,6 @@ fi # Patchset ntdll-Dealloc_Thread_Stack # | -# | This patchset has the following (direct or indirect) dependencies: -# | * server-Object_Types, ntdll-NtAlertThreadByThreadId -# | # | Modified files: # | * dlls/ntdll/unix/unix_private.h, dlls/ntdll/unix/virtual.c # | @@ -3628,6 +3544,29 @@ if test "$enable_server_Key_State" -eq 1; then patch_apply server-Key_State/0002-server-Implement-locking-and-synchronization-of-keys.patch fi +# Patchset server-Object_Types +# | +# | This patchset fixes the following Wine bugs: +# | * [#44629] Process Hacker can't enumerate handles +# | * [#45374] Yet Another Process Monitor (.NET 2.0 app) reports System.AccessViolationException +# | +# | Modified files: +# | * dlls/ntdll/tests/info.c, dlls/ntdll/tests/om.c, dlls/ntdll/unix/file.c, dlls/ntdll/unix/system.c, include/winternl.h, +# | server/completion.c, server/directory.c, server/event.c, server/file.c, server/handle.c, server/mailslot.c, +# | server/main.c, server/mapping.c, server/mutex.c, server/named_pipe.c, server/object.c, server/object.h, +# | server/process.c, server/protocol.def, server/registry.c, server/semaphore.c, server/symlink.c, server/thread.c, +# | server/timer.c, server/token.c, server/winstation.c +# | +if test "$enable_server_Object_Types" -eq 1; then + patch_apply server-Object_Types/0001-ntdll-Implement-SystemExtendedHandleInformation-in-N.patch + patch_apply server-Object_Types/0002-ntdll-Implement-ObjectTypesInformation-in-NtQueryObj.patch + patch_apply server-Object_Types/0003-server-Register-types-during-startup.patch + patch_apply server-Object_Types/0004-server-Rename-ObjectType-to-Type.patch + patch_apply server-Object_Types/0008-ntdll-Set-TypeIndex-for-ObjectTypeInformation-in-NtQ.patch + patch_apply server-Object_Types/0009-ntdll-Set-object-type-for-System-Extended-HandleInfo.patch + patch_apply server-Object_Types/0010-ntdll-Mimic-object-type-behavior-for-different-windo.patch +fi + # Patchset server-Registry_Notifications # | # | Modified files: