[PATCH v2] ntdll: Remove wait timeout in get_thread_context().
Paul Gofman
pgofman at codeweavers.com
Mon Apr 12 14:14:03 CDT 2021
Fixes hangs during loading or after campaign start in
Mount & Blade II: Bannerlord.
Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
Supersedes 203674.
The hang happens when NtGetContextThread fails due to time out
(after successful thread suspend). The timeout happens as the
thread is busy in read() for regular file called from NtReadFile
and does not process SIGUSR1 until read is complete. The read()
may take a real long time when the disk is under heavy load.
dlls/ntdll/unix/thread.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
index 1a882a99855..543a214e056 100644
--- a/dlls/ntdll/unix/thread.c
+++ b/dlls/ntdll/unix/thread.c
@@ -617,13 +617,8 @@ NTSTATUS get_thread_context( HANDLE handle, context_t *context, unsigned int fla
if (ret == STATUS_PENDING)
{
- LARGE_INTEGER timeout;
- timeout.QuadPart = -1000000;
- if (NtWaitForSingleObject( handle, FALSE, &timeout ))
- {
- NtClose( handle );
- return STATUS_ACCESS_DENIED;
- }
+ NtWaitForSingleObject( handle, FALSE, NULL );
+
SERVER_START_REQ( get_thread_context )
{
req->handle = wine_server_obj_handle( handle );
--
2.30.2
More information about the wine-devel
mailing list