Brendan Shanks : ntdll: Use +threadname channel for thread rename exceptions.
Alexandre Julliard
julliard at winehq.org
Thu Jun 30 16:34:20 CDT 2022
Module: wine
Branch: master
Commit: 8a61b7c2ebfe1f083f82065973067fd2341fdbf0
URL: https://source.winehq.org/git/wine.git/?a=commit;h=8a61b7c2ebfe1f083f82065973067fd2341fdbf0
Author: Brendan Shanks <bshanks at codeweavers.com>
Date: Mon Dec 6 22:13:19 2021 -0800
ntdll: Use +threadname channel for thread rename exceptions.
Signed-off-by: Brendan Shanks <bshanks at codeweavers.com>
---
dlls/ntdll/signal_arm.c | 7 ++++++-
dlls/ntdll/signal_arm64.c | 7 ++++++-
dlls/ntdll/signal_i386.c | 7 ++++++-
dlls/ntdll/signal_x86_64.c | 8 ++++++--
4 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/signal_arm.c b/dlls/ntdll/signal_arm.c
index c4cf557edaf..d0229d934ce 100644
--- a/dlls/ntdll/signal_arm.c
+++ b/dlls/ntdll/signal_arm.c
@@ -36,6 +36,7 @@
#include "winnt.h"
WINE_DEFAULT_DEBUG_CHANNEL(seh);
+WINE_DECLARE_DEBUG_CHANNEL(threadname);
typedef struct _SCOPE_TABLE
{
@@ -476,7 +477,11 @@ NTSTATUS WINAPI KiUserExceptionDispatcher( EXCEPTION_RECORD *rec, CONTEXT *conte
}
else if (rec->ExceptionCode == EXCEPTION_WINE_NAME_THREAD && rec->ExceptionInformation[0] == 0x1000)
{
- WARN( "Thread %04x renamed to %s\n", (DWORD)rec->ExceptionInformation[2], debugstr_a((char *)rec->ExceptionInformation[1]) );
+ if ((DWORD)rec->ExceptionInformation[2] == -1)
+ WARN_(threadname)( "Thread renamed to %s\n", debugstr_a((char *)rec->ExceptionInformation[1]) );
+ else
+ WARN_(threadname)( "Thread ID %04x renamed to %s\n", (DWORD)rec->ExceptionInformation[2],
+ debugstr_a((char *)rec->ExceptionInformation[1]) );
}
else if (rec->ExceptionCode == DBG_PRINTEXCEPTION_C)
{
diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c
index fba0da48a16..959c3ea50dc 100644
--- a/dlls/ntdll/signal_arm64.c
+++ b/dlls/ntdll/signal_arm64.c
@@ -38,6 +38,7 @@
#include "winnt.h"
WINE_DEFAULT_DEBUG_CHANNEL(seh);
+WINE_DECLARE_DEBUG_CHANNEL(threadname);
typedef struct _SCOPE_TABLE
{
@@ -508,7 +509,11 @@ NTSTATUS WINAPI KiUserExceptionDispatcher( EXCEPTION_RECORD *rec, CONTEXT *conte
}
else if (rec->ExceptionCode == EXCEPTION_WINE_NAME_THREAD && rec->ExceptionInformation[0] == 0x1000)
{
- WARN( "Thread %04x renamed to %s\n", (DWORD)rec->ExceptionInformation[2], debugstr_a((char *)rec->ExceptionInformation[1]) );
+ if ((DWORD)rec->ExceptionInformation[2] == -1)
+ WARN_(threadname)( "Thread renamed to %s\n", debugstr_a((char *)rec->ExceptionInformation[1]) );
+ else
+ WARN_(threadname)( "Thread ID %04x renamed to %s\n", (DWORD)rec->ExceptionInformation[2],
+ debugstr_a((char *)rec->ExceptionInformation[1]) );
}
else if (rec->ExceptionCode == DBG_PRINTEXCEPTION_C)
{
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 14971032ce6..f4c935ecc94 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -35,6 +35,7 @@
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(seh);
+WINE_DECLARE_DEBUG_CHANNEL(threadname);
struct x86_thread_data
{
@@ -194,7 +195,11 @@ NTSTATUS WINAPI dispatch_exception( EXCEPTION_RECORD *rec, CONTEXT *context )
}
else if (rec->ExceptionCode == EXCEPTION_WINE_NAME_THREAD && rec->ExceptionInformation[0] == 0x1000)
{
- WARN( "Thread %04x renamed to %s\n", (DWORD)rec->ExceptionInformation[2], debugstr_a((char *)rec->ExceptionInformation[1]) );
+ if ((DWORD)rec->ExceptionInformation[2] == -1)
+ WARN_(threadname)( "Thread renamed to %s\n", debugstr_a((char *)rec->ExceptionInformation[1]) );
+ else
+ WARN_(threadname)( "Thread ID %04x renamed to %s\n", (DWORD)rec->ExceptionInformation[2],
+ debugstr_a((char *)rec->ExceptionInformation[1]) );
}
else if (rec->ExceptionCode == DBG_PRINTEXCEPTION_C)
{
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index fef163ac629..9957d0c3dfa 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -36,6 +36,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(unwind);
WINE_DECLARE_DEBUG_CHANNEL(seh);
+WINE_DECLARE_DEBUG_CHANNEL(threadname);
typedef struct _SCOPE_TABLE
{
@@ -525,8 +526,11 @@ NTSTATUS WINAPI dispatch_exception( EXCEPTION_RECORD *rec, CONTEXT *context )
}
else if (rec->ExceptionCode == EXCEPTION_WINE_NAME_THREAD && rec->ExceptionInformation[0] == 0x1000)
{
- WARN_(seh)( "Thread %04x renamed to %s\n", (DWORD)rec->ExceptionInformation[2],
- debugstr_a((char *)rec->ExceptionInformation[1]) );
+ if ((DWORD)rec->ExceptionInformation[2] == -1)
+ WARN_(threadname)( "Thread renamed to %s\n", debugstr_a((char *)rec->ExceptionInformation[1]) );
+ else
+ WARN_(threadname)( "Thread ID %04x renamed to %s\n", (DWORD)rec->ExceptionInformation[2],
+ debugstr_a((char *)rec->ExceptionInformation[1]) );
}
else if (rec->ExceptionCode == DBG_PRINTEXCEPTION_C)
{
More information about the wine-cvs
mailing list