SetThreadName_SEH handler should continue execution only from the first
error handler phase, not from second unwinding.
---
 mingw-w64-libraries/winpthreads/src/thread.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/mingw-w64-libraries/winpthreads/src/thread.c 
b/mingw-w64-libraries/winpthreads/src/thread.c
index 3251c2cbb9c5..476370422fbf 100644
--- a/mingw-w64-libraries/winpthreads/src/thread.c
+++ b/mingw-w64-libraries/winpthreads/src/thread.c
@@ -91,7 +91,8 @@ SetThreadName_SEH (EXCEPTION_RECORD *ExceptionRecord, PVOID 
EstablisherFrame, CO
    * SEH handlers like this one return value from EXCEPTION_DISPOSITION enum 
which has CamelCase constants.
    * UPPER_CASE EXCEPTION_CONTINUE_SEARCH and CamelCase 
ExceptionContinueSearch are different constants.
    */
-  if (!(ExceptionRecord->ExceptionFlags & EXCEPTION_NONCONTINUABLE) &&
+  if (!(ExceptionRecord->ExceptionFlags & EXCEPTION_UNWINDING) &&
+      !(ExceptionRecord->ExceptionFlags & EXCEPTION_NONCONTINUABLE) &&
       ExceptionRecord->ExceptionCode == EXCEPTION_SET_THREAD_NAME)
     return ExceptionContinueExecution;
 
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to