[PATCH] server: Fix setting context flags in get_thread_context.
Jacek Caban
jacek at codeweavers.com
Mon Apr 27 11:16:01 CDT 2020
On 27.04.2020 17:38, Alexandre Julliard wrote:
> Jacek Caban <jacek at codeweavers.com> writes:
>
>> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49011
>> Signed-off-by: Jacek Caban <jacek at codeweavers.com>
>> ---
>> dlls/kernel32/tests/thread.c | 15 +++++++++++++++
>> server/thread.c | 2 +-
>> 2 files changed, 16 insertions(+), 1 deletion(-)
> This fixes the server crash, but the tests are still failing here:
The attached patch should fix it. It does the right thing, but doing the
same for setting system registers is more tricky. I had an
implementation that tracked more closely valid registers in context
object, which allowed moving more parts to select request. This would
solve the problem. I ended up removing that part late in clean up
process, because I wrongly considered that an uninteresting
optimization. I will revisit it.
Thanks,
Jacek
-------------- next part --------------
From 5d8ac73475f25b0cc84c004ead3a87d2ed36588f Mon Sep 17 00:00:00 2001
From: Jacek Caban <jacek at codeweavers.com>
Date: Mon, 27 Apr 2020 18:08:59 +0200
Subject: [PATCH] server: Don't try to synchronize system registers on not
initialized threads in get_thread_context request.
To: wine-devel <wine-devel at winehq.org>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
---
server/thread.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/thread.c b/server/thread.c
index 7c1c1108eb..d0dfa47712 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -1840,7 +1840,7 @@ DECL_HANDLER(get_thread_context)
if (thread->context)
{
/* make sure that system regs are valid in thread context */
- if (req->flags & system_flags & ~thread->context->regs.flags)
+ if (thread->unix_pid != -1 && (req->flags & system_flags & ~thread->context->regs.flags))
get_thread_context( thread, &thread->context->regs, req->flags & system_flags );
if (!get_error()) thread_context = (struct context *)grab_object( thread->context );
}
--
2.26.1
More information about the wine-devel
mailing list