diff --git a/README.md b/README.md index b8c315df..7502b594 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Wine. All those differences are also documented on the Included bug fixes and improvements =================================== -**Bugfixes and features included in the next upcoming release [18]:** +**Bugfixes and features included in the next upcoming release [19]:** * Add stub for gdiplus.GdipCreateEffect ([Wine Bug #32163](https://bugs.winehq.org/show_bug.cgi?id=32163)) * Add support for CopyFileEx progress callback ([Wine Bug #22692](https://bugs.winehq.org/show_bug.cgi?id=22692)) @@ -53,6 +53,7 @@ Included bug fixes and improvements * Fix race-condition when threads are killed during shutdown * Implement SetFileInformationByHandle * Increase wineconsole commandline buffer size ([Wine Bug #34814](https://bugs.winehq.org/show_bug.cgi?id=34814)) +* Process APC calls before starting process * Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103)) * Properly track handle count of wineserver objects * Some NVIDIA cards report fake refresh rates ([Wine Bug #34348](https://bugs.winehq.org/show_bug.cgi?id=34348)) diff --git a/debian/changelog b/debian/changelog index 0d0f8353..f41cee73 100644 --- a/debian/changelog +++ b/debian/changelog @@ -39,6 +39,7 @@ wine-staging (1.7.38) UNRELEASED; urgency=low * Added patch to increase wineconsole commandline buffer size. * Added patch to replace hardcoded values with sizeof(GUID) for d3dxof. * Added patch to implement cuModuleLoad wrapper function. + * Added patch to process APC calls before starting process. * Removed patch to properly call DriverUnload when unloading device drivers (accepted upstream). * Removed patch to allow Accept-Encoding for HTTP/1.0 in wininet (accepted upstream). * Removed patch to declare pDirectInputCreateEx in a MSVC compatible way (accepted upstream). diff --git a/patches/ntdll-APC_Start_Process/0001-ntdll-Process-APC-calls-before-starting-process.patch b/patches/ntdll-APC_Start_Process/0001-ntdll-Process-APC-calls-before-starting-process.patch new file mode 100644 index 00000000..e9284616 --- /dev/null +++ b/patches/ntdll-APC_Start_Process/0001-ntdll-Process-APC-calls-before-starting-process.patch @@ -0,0 +1,35 @@ +From cca0753b28aba33ad72dcb2245a9fb80720b5bb8 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 7 Mar 2015 18:09:37 +0100 +Subject: ntdll: Process APC calls before starting process. + +--- + dlls/ntdll/loader.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c +index e1444d2..bab4a2f 100644 +--- a/dlls/ntdll/loader.c ++++ b/dlls/ntdll/loader.c +@@ -2878,6 +2878,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, + ULONG_PTR unknown3, ULONG_PTR unknown4 ) + { + static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0}; ++ LARGE_INTEGER timeout; + NTSTATUS status; + WINE_MODREF *wm; + LPCWSTR load_path; +@@ -2921,6 +2922,10 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, + + virtual_release_address_space(); + virtual_clear_thread_stack(); ++ ++ timeout.QuadPart = 0; ++ NtDelayExecution( TRUE, &timeout ); ++ + wine_switch_to_stack( start_process, kernel_start, NtCurrentTeb()->Tib.StackBase ); + + error: +-- +2.3.0 + diff --git a/patches/ntdll-APC_Start_Process/definition b/patches/ntdll-APC_Start_Process/definition new file mode 100644 index 00000000..8f04f00a --- /dev/null +++ b/patches/ntdll-APC_Start_Process/definition @@ -0,0 +1 @@ +Fixes: Process APC calls before starting process diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 906ae2db..47e034ef 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -122,6 +122,7 @@ patch_enable_all () enable_msvfw32_Image_Size="$1" enable_netprofm_IConnectionPoint="$1" enable_ntdll_APC_Performance="$1" + enable_ntdll_APC_Start_Process="$1" enable_ntdll_DOS_Attributes="$1" enable_ntdll_DVD_Read_Size="$1" enable_ntdll_DllRedirects="$1" @@ -409,6 +410,9 @@ patch_enable () ntdll-APC_Performance) enable_ntdll_APC_Performance="$2" ;; + ntdll-APC_Start_Process) + enable_ntdll_APC_Start_Process="$2" + ;; ntdll-DOS_Attributes) enable_ntdll_DOS_Attributes="$2" ;; @@ -2667,6 +2671,18 @@ if test "$enable_ntdll_APC_Performance" -eq 1; then ) >> "$patchlist" fi +# Patchset ntdll-APC_Start_Process +# | +# | Modified files: +# | * dlls/ntdll/loader.c +# | +if test "$enable_ntdll_APC_Start_Process" -eq 1; then + patch_apply ntdll-APC_Start_Process/0001-ntdll-Process-APC-calls-before-starting-process.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Process APC calls before starting process.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-DOS_Attributes # | # | This patchset fixes the following Wine bugs: