Signed-off-by: Derek Lesho dereklesho52@Gmail.com --- dlls/ntoskrnl.exe/ntoskrnl.c | 18 ++++++++++++++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- dlls/ntoskrnl.exe/tests/driver.c | 18 ++++++++++++++++++ include/ddk/ntifs.h | 1 + 4 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 3789abda35..0ab150ea65 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -3233,6 +3233,24 @@ NTSTATUS WINAPI PsLookupProcessByProcessId(HANDLE processid, PEPROCESS *process) }
+/***************************************************** + * PsLookupThreadByThreadId (NTOSKRNL.EXE.@) + */ +NTSTATUS WINAPI PsLookupThreadByThreadId(HANDLE threadid, PETHREAD *thread) +{ + NTSTATUS status; + HANDLE hThread = OpenThread( THREAD_ALL_ACCESS, FALSE, HandleToUlong(threadid) ); + + if (!hThread) + return STATUS_INVALID_PARAMETER; + + status = ObReferenceObjectByHandle( hThread, THREAD_ALL_ACCESS, PsThreadType, KernelMode, (void**)thread, NULL ); + + NtClose( hThread ); + return status; +} + + /***************************************************** * IoSetThreadHardErrorMode (NTOSKRNL.EXE.@) */ diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index 141c8aa639..f965ff55ec 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -914,7 +914,7 @@ @ stub PsJobType @ stdcall PsLookupProcessByProcessId(ptr ptr) @ stub PsLookupProcessThreadByCid -@ stub PsLookupThreadByThreadId +@ stdcall PsLookupThreadByThreadId(ptr ptr) @ extern PsProcessType @ stub PsReferenceImpersonationToken @ stub PsReferencePrimaryToken diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c index c3839da3bf..4b846869fc 100644 --- a/dlls/ntoskrnl.exe/tests/driver.c +++ b/dlls/ntoskrnl.exe/tests/driver.c @@ -29,6 +29,7 @@ #include "winternl.h" #include "winioctl.h" #include "ddk/ntddk.h" +#include "ddk/ntifs.h" #include "ddk/wdm.h"
#include "driver.h" @@ -1167,6 +1168,22 @@ static void test_resource(void) ok(status == STATUS_SUCCESS, "got status %#x\n", status); }
+static void test_lookup_thread(void) +{ + NTSTATUS status; + PETHREAD thread = NULL; + + status = PsLookupThreadByThreadId(PsGetCurrentThreadId(), &thread); + ok(!status, "PsLookupThreadByThreadId failed: %#x\n", status); + ok((PKTHREAD)thread == KeGetCurrentThread(), "thread != KeGetCurrentThread\n"); + + if (thread) + ObDereferenceObject(thread); + + status = PsLookupThreadByThreadId(NULL, &thread); + ok(status == STATUS_INVALID_PARAMETER, "PsLookupThreadByThreadId returned %#x\n", status); +} + static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info) { ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength; @@ -1210,6 +1227,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st test_lookaside_list(); test_ob_reference(test_input->path); test_resource(); + test_lookup_thread();
/* print process report */ if (winetest_debug) diff --git a/include/ddk/ntifs.h b/include/ddk/ntifs.h index abe357fbc9..9b57ae7ad7 100644 --- a/include/ddk/ntifs.h +++ b/include/ddk/ntifs.h @@ -131,6 +131,7 @@ typedef struct _FS_FILTER_CALLBACKS
BOOLEAN WINAPI FsRtlIsNameInExpression(PUNICODE_STRING, PUNICODE_STRING, BOOLEAN, PWCH); NTSTATUS WINAPI ObQueryNameString(PVOID,POBJECT_NAME_INFORMATION,ULONG,PULONG); +NTSTATUS WINAPI PsLookupThreadByThreadId(HANDLE,PETHREAD*); void WINAPI PsRevertToSelf(void);
#endif
Signed-off-by: Derek Lesho dereklesho52@Gmail.com --- dlls/ntoskrnl.exe/ntoskrnl.c | 16 ++++++++++++++-- dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- dlls/ntoskrnl.exe/ntoskrnl_private.h | 1 + include/ddk/ntddk.h | 1 + 4 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 0ab150ea65..6bcd19c78f 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -2484,6 +2484,8 @@ static void *create_thread_object( HANDLE handle ) if (!NtQueryInformationThread( handle, ThreadBasicInformation, &info, sizeof(info), NULL )) thread->id = info.ClientId;
+ thread->critical_region_count = 0; + return thread; }
@@ -3382,7 +3384,8 @@ NTSTATUS WINAPI IoCsqInitialize(PIO_CSQ csq, PIO_CSQ_INSERT_IRP insert_irp, PIO_ */ void WINAPI KeEnterCriticalRegion(void) { - FIXME(": stub\n"); + TRACE(": semi-stub\n"); + KeGetCurrentThread()->critical_region_count++; }
/*********************************************************************** @@ -3390,7 +3393,8 @@ void WINAPI KeEnterCriticalRegion(void) */ void WINAPI KeLeaveCriticalRegion(void) { - FIXME(": stub\n"); + TRACE(": semi-stub\n"); + KeGetCurrentThread()->critical_region_count--; }
/*********************************************************************** @@ -4322,3 +4326,11 @@ ULONG WINAPI ExSetTimerResolution(ULONG time, BOOLEAN set_resolution) FIXME("stub: %u %d\n", time, set_resolution); return KeQueryTimeIncrement(); } + +/********************************************************************* + * KeAreApcsDisabled (NTOSKRNL.@) + */ +BOOLEAN WINAPI KeAreApcsDisabled(void) +{ + return !!KeGetCurrentThread()->critical_region_count; +} diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index f965ff55ec..e485a04da1 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -521,7 +521,7 @@ @ stdcall KeAcquireSpinLockAtDpcLevel(ptr) @ stdcall -arch=arm,arm64,x86_64 KeAcquireSpinLockRaiseToDpc(ptr) @ stub KeAddSystemServiceTable -@ stub KeAreApcsDisabled +@ stdcall KeAreApcsDisabled() @ stub KeAttachProcess @ stub KeBugCheck @ stub KeBugCheckEx diff --git a/dlls/ntoskrnl.exe/ntoskrnl_private.h b/dlls/ntoskrnl.exe/ntoskrnl_private.h index f5a76284cb..19c287c151 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl_private.h +++ b/dlls/ntoskrnl.exe/ntoskrnl_private.h @@ -32,6 +32,7 @@ struct _KTHREAD { DISPATCHER_HEADER header; CLIENT_ID id; + unsigned int critical_region_count; };
void *alloc_kernel_object( POBJECT_TYPE type, HANDLE handle, SIZE_T size, LONG ref ) DECLSPEC_HIDDEN; diff --git a/include/ddk/ntddk.h b/include/ddk/ntddk.h index 719ba67c6a..f09f879032 100644 --- a/include/ddk/ntddk.h +++ b/include/ddk/ntddk.h @@ -213,6 +213,7 @@ NTSTATUS WINAPI IoQueryDeviceDescription(PINTERFACE_TYPE,PULONG,PCONFIGURATION_ PCONFIGURATION_TYPE,PULONG,PIO_QUERY_DEVICE_ROUTINE,PVOID); void WINAPI IoRegisterDriverReinitialization(PDRIVER_OBJECT,PDRIVER_REINITIALIZE,PVOID); NTSTATUS WINAPI IoRegisterShutdownNotification(PDEVICE_OBJECT); +BOOLEAN WINAPI KeAreApcsDisabled(void); NTSTATUS WINAPI KeExpandKernelStackAndCallout(PEXPAND_STACK_CALLOUT,void*,SIZE_T); void WINAPI KeSetTargetProcessorDpc(PRKDPC,CCHAR); BOOLEAN WINAPI MmIsAddressValid(void *);
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=51069
Your paranoid android.
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
It seems that the testbot's generation of patch.diff failed, as it somehow managed to incorporate parts of my reply email into the file, corrupting it.
On Wed, Apr 17, 2019 at 4:11 PM Marvin testbot@winehq.org wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=51069
Your paranoid android.
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
On Wed, 17 Apr 2019, Derek Lesho wrote:
It seems that the testbot's generation of patch.diff failed, as it somehow managed to incorporate parts of my reply email into the file, corrupting it.
I think you got incredibly unlucky. My understanding is that: 1. The TestBot received your reply to part 1 before it received part 2. 2. It failed to recognize that the HTML attachment was actually HTML. 3. The plain text for that attachment looked like a patch. 4. Thus the TestBot replaced part 1 with the updated patch.
I think 2 and 4 are bugs but none of this would have been an issue without the unfortunate email reordering in 1.
I created a bug to track the issue: https://bugs.winehq.org/show_bug.cgi?id=47042
Signed-off-by: Derek Lesho dereklesho52@Gmail.com --- server/process.c | 10 +++++++++- server/process.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/server/process.c b/server/process.c index 473d3b1a27..f9e7955ce1 100644 --- a/server/process.c +++ b/server/process.c @@ -66,6 +66,7 @@ static unsigned int process_map_access( struct object *obj, unsigned int access static void process_poll_event( struct fd *fd, int event ); static void process_destroy( struct object *obj ); static void terminate_process( struct process *process, struct thread *skip, int exit_code ); +static struct list *process_get_kernel_obj_list( struct object *obj );
static const struct object_ops process_ops = { @@ -85,7 +86,7 @@ static const struct object_ops process_ops = no_link_name, /* link_name */ NULL, /* unlink_name */ no_open_file, /* open_file */ - no_kernel_obj_list, /* get_kernel_obj_list */ + process_get_kernel_obj_list, /* get_kernel_obj_list */ no_close_handle, /* close_handle */ process_destroy /* destroy */ }; @@ -526,6 +527,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all, process->trace_data = 0; process->rawinput_mouse = NULL; process->rawinput_kbd = NULL; + list_init( &process->kernel_object ); list_init( &process->thread_list ); list_init( &process->locks ); list_init( &process->asyncs ); @@ -661,6 +663,12 @@ static unsigned int process_map_access( struct object *obj, unsigned int access return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); }
+static struct list *process_get_kernel_obj_list( struct object *obj ) +{ + struct process *process = (struct process *)obj; + return &process->kernel_object; +} + static void process_poll_event( struct fd *fd, int event ) { struct process *process = get_fd_user( fd ); diff --git a/server/process.h b/server/process.h index 4566a04b48..d9d29f0242 100644 --- a/server/process.h +++ b/server/process.h @@ -96,6 +96,7 @@ struct process struct list rawinput_devices;/* list of registered rawinput devices */ const struct rawinput_device *rawinput_mouse; /* rawinput mouse device, if any */ const struct rawinput_device *rawinput_kbd; /* rawinput keyboard device, if any */ + struct list kernel_object; /* list of kernel object pointers */ };
struct process_snapshot
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=51070
Your paranoid android.
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
Signed-off-by: Derek Lesho dereklesho52@Gmail.com --- dlls/ntoskrnl.exe/ntoskrnl.c | 14 +++++++++++++- dlls/ntoskrnl.exe/ntoskrnl_private.h | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 6bcd19c78f..aa18ceb277 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -2451,11 +2451,23 @@ NTSTATUS WINAPI FsRtlRegisterUncProvider(PHANDLE MupHandle, PUNICODE_STRING Redi }
+static void *create_process_object( HANDLE handle ) +{ + PEPROCESS process; + + if (!(process = alloc_kernel_object( PsProcessType, handle, sizeof(*process), 0 ))) return NULL; + + process->header.Type = 3; + process->header.WaitListHead.Blink = INVALID_HANDLE_VALUE; /* mark as kernel object */ + return process; +} + static const WCHAR process_type_name[] = {'P','r','o','c','e','s','s',0};
static struct _OBJECT_TYPE process_type = { - process_type_name + process_type_name, + create_process_object };
POBJECT_TYPE PsProcessType = &process_type; diff --git a/dlls/ntoskrnl.exe/ntoskrnl_private.h b/dlls/ntoskrnl.exe/ntoskrnl_private.h index 19c287c151..4f5ae14cfb 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl_private.h +++ b/dlls/ntoskrnl.exe/ntoskrnl_private.h @@ -28,6 +28,10 @@ struct _OBJECT_TYPE void (*release)(void*); /* called when the last reference is released */ };
+struct _EPROCESS { + DISPATCHER_HEADER header; +}; + struct _KTHREAD { DISPATCHER_HEADER header;
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=51071
Your paranoid android.
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
Signed-off-by: Derek Lesho dereklesho52@Gmail.com --- dlls/ntoskrnl.exe/ntoskrnl.c | 13 ++++++++++--- include/ddk/ntifs.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index aa18ceb277..ade3e0cf27 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -3241,9 +3241,16 @@ NTSTATUS WINAPI PsSetLoadImageNotifyRoutine(PLOAD_IMAGE_NOTIFY_ROUTINE routine) */ NTSTATUS WINAPI PsLookupProcessByProcessId(HANDLE processid, PEPROCESS *process) { - static int once; - if (!once++) FIXME("(%p %p) stub\n", processid, process); - return STATUS_NOT_IMPLEMENTED; + NTSTATUS status; + HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, HandleToUlong(processid) ); + + if (!hProcess) + return STATUS_INVALID_PARAMETER; + + status = ObReferenceObjectByHandle( hProcess, PROCESS_ALL_ACCESS, PsProcessType, KernelMode, (void**)process, NULL ); + + NtClose( hProcess ); + return status; }
diff --git a/include/ddk/ntifs.h b/include/ddk/ntifs.h index 9b57ae7ad7..ec4d1d5aa7 100644 --- a/include/ddk/ntifs.h +++ b/include/ddk/ntifs.h @@ -131,6 +131,7 @@ typedef struct _FS_FILTER_CALLBACKS
BOOLEAN WINAPI FsRtlIsNameInExpression(PUNICODE_STRING, PUNICODE_STRING, BOOLEAN, PWCH); NTSTATUS WINAPI ObQueryNameString(PVOID,POBJECT_NAME_INFORMATION,ULONG,PULONG); +NTSTATUS WINAPI PsLookupProcessByProcessId(HANDLE,PEPROCESS*); NTSTATUS WINAPI PsLookupThreadByThreadId(HANDLE,PETHREAD*); void WINAPI PsRevertToSelf(void);
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=51072
Your paranoid android.
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
I have taken Jacek's advice and have split up my previous patchset into three smaller ones, this being the first.
On Wed, Apr 17, 2019 at 3:41 PM Derek Lesho dereklesho52@gmail.com wrote:
Signed-off-by: Derek Lesho dereklesho52@Gmail.com
dlls/ntoskrnl.exe/ntoskrnl.c | 18 ++++++++++++++++++ dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +- dlls/ntoskrnl.exe/tests/driver.c | 18 ++++++++++++++++++ include/ddk/ntifs.h | 1 + 4 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 3789abda35..0ab150ea65 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -3233,6 +3233,24 @@ NTSTATUS WINAPI PsLookupProcessByProcessId(HANDLE processid, PEPROCESS *process) }
+/*****************************************************
PsLookupThreadByThreadId (NTOSKRNL.EXE.@)
- */
+NTSTATUS WINAPI PsLookupThreadByThreadId(HANDLE threadid, PETHREAD *thread) +{
- NTSTATUS status;
- HANDLE hThread = OpenThread( THREAD_ALL_ACCESS, FALSE,
HandleToUlong(threadid) );
- if (!hThread)
return STATUS_INVALID_PARAMETER;
- status = ObReferenceObjectByHandle( hThread, THREAD_ALL_ACCESS,
PsThreadType, KernelMode, (void**)thread, NULL );
- NtClose( hThread );
- return status;
+}
/*****************************************************
IoSetThreadHardErrorMode (NTOSKRNL.EXE.@)
*/ diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec index 141c8aa639..f965ff55ec 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec +++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec @@ -914,7 +914,7 @@ @ stub PsJobType @ stdcall PsLookupProcessByProcessId(ptr ptr) @ stub PsLookupProcessThreadByCid -@ stub PsLookupThreadByThreadId +@ stdcall PsLookupThreadByThreadId(ptr ptr) @ extern PsProcessType @ stub PsReferenceImpersonationToken @ stub PsReferencePrimaryToken diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c index c3839da3bf..4b846869fc 100644 --- a/dlls/ntoskrnl.exe/tests/driver.c +++ b/dlls/ntoskrnl.exe/tests/driver.c @@ -29,6 +29,7 @@ #include "winternl.h" #include "winioctl.h" #include "ddk/ntddk.h" +#include "ddk/ntifs.h" #include "ddk/wdm.h"
#include "driver.h" @@ -1167,6 +1168,22 @@ static void test_resource(void) ok(status == STATUS_SUCCESS, "got status %#x\n", status); }
+static void test_lookup_thread(void) +{
- NTSTATUS status;
- PETHREAD thread = NULL;
- status = PsLookupThreadByThreadId(PsGetCurrentThreadId(), &thread);
- ok(!status, "PsLookupThreadByThreadId failed: %#x\n", status);
- ok((PKTHREAD)thread == KeGetCurrentThread(), "thread !=
KeGetCurrentThread\n");
- if (thread)
ObDereferenceObject(thread);
- status = PsLookupThreadByThreadId(NULL, &thread);
- ok(status == STATUS_INVALID_PARAMETER, "PsLookupThreadByThreadId
returned %#x\n", status); +}
static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info) { ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength; @@ -1210,6 +1227,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st test_lookaside_list(); test_ob_reference(test_input->path); test_resource();
test_lookup_thread();
/* print process report */ if (winetest_debug)
diff --git a/include/ddk/ntifs.h b/include/ddk/ntifs.h index abe357fbc9..9b57ae7ad7 100644 --- a/include/ddk/ntifs.h +++ b/include/ddk/ntifs.h @@ -131,6 +131,7 @@ typedef struct _FS_FILTER_CALLBACKS
BOOLEAN WINAPI FsRtlIsNameInExpression(PUNICODE_STRING, PUNICODE_STRING, BOOLEAN, PWCH); NTSTATUS WINAPI ObQueryNameString(PVOID,POBJECT_NAME_INFORMATION,ULONG,PULONG); +NTSTATUS WINAPI PsLookupThreadByThreadId(HANDLE,PETHREAD*); void WINAPI PsRevertToSelf(void);
#endif
2.20.1
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=51068
Your paranoid android.
=== build (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
=== debian9 (build log) ===
error: corrupt patch at line 141 Task: Patch failed to apply
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=51065
Your paranoid android.
=== w7u (32 bit report) ===
ntoskrnl.exe: driver.c:665: Test failed: got 0 driver.c:1184: Test failed: PsLookupThreadByThreadId returned 0xc000000b
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced failure message for driver
=== w8 (32 bit report) ===
ntoskrnl.exe: driver.c:1184: Test failed: PsLookupThreadByThreadId returned 0xc000000b
Report errors: ntoskrnl.exe:ntoskrnl contains a misplaced failure message for driver