https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=a157df316546ac77207b2a3c5eb08fa140643866

commit a157df316546ac77207b2a3c5eb08fa140643866
Author: Corinna Vinschen <cori...@vinschen.de>
Date:   Wed Aug 31 12:15:29 2016 +0200

    strace: Don't print exception info for SetThreadName exception
    
    The new functionality to set the thread name for debugging purposes
    creates exception debugging events.  These are printed out when running
    strace.  Since these exceptions have nothing to do with real exceptions
    but are, like breakpoint execptions, expected and non-fatal, don't print
    exception info for them.
    
    Signed-off-by: Corinna Vinschen <cori...@vinschen.de>

Diff:
---
 winsup/utils/strace.cc | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/winsup/utils/strace.cc b/winsup/utils/strace.cc
index b193cfe..5d4a23d 100644
--- a/winsup/utils/strace.cc
+++ b/winsup/utils/strace.cc
@@ -751,15 +751,19 @@ proc_child (unsigned mask, FILE *ofile, pid_t pid)
          break;
 
        case EXCEPTION_DEBUG_EVENT:
-         if (ev.u.Exception.ExceptionRecord.ExceptionCode
-             != (DWORD) STATUS_BREAKPOINT)
+         switch (ev.u.Exception.ExceptionRecord.ExceptionCode)
            {
+           case STATUS_BREAKPOINT:
+           case 0x406d1388:            /* SetThreadName exception. */
+             break;
+           default:
              status = DBG_EXCEPTION_NOT_HANDLED;
              if (ev.u.Exception.dwFirstChance)
                fprintf (ofile, "--- Process %lu, exception %08lx at %p\n",
                         ev.dwProcessId,
                         ev.u.Exception.ExceptionRecord.ExceptionCode,
                         ev.u.Exception.ExceptionRecord.ExceptionAddress);
+             break;
            }
          break;
        }

Reply via email to