]> git.ipfire.org Git - thirdparty/git.git/commitdiff
simple-ipc/ipc-win32: add trace2 debugging
authorJeff Hostetler <jeffhost@microsoft.com>
Mon, 20 Sep 2021 15:36:15 +0000 (15:36 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 20 Sep 2021 15:57:58 +0000 (08:57 -0700)
Create "ipc-debug" category events to log unexpected errors
when creating Simple-IPC connections.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/simple-ipc/ipc-win32.c

index 8e889d6a506dc0de29c0006e9eeb5be34fbcd33c..a8dd46bd9223f5c63d8f96bfe746672eb4ec39b2 100644 (file)
@@ -49,6 +49,9 @@ static enum ipc_active_state get_active_state(wchar_t *pipe_path)
        if (GetLastError() == ERROR_FILE_NOT_FOUND)
                return IPC_STATE__PATH_NOT_FOUND;
 
+       trace2_data_intmax("ipc-debug", NULL, "getstate/waitpipe/gle",
+                          (intmax_t)GetLastError());
+
        return IPC_STATE__OTHER_ERROR;
 }
 
@@ -109,9 +112,15 @@ static enum ipc_active_state connect_to_server(
                        t_start_ms = (DWORD)(getnanotime() / 1000000);
 
                        if (!WaitNamedPipeW(wpath, timeout_ms)) {
-                               if (GetLastError() == ERROR_SEM_TIMEOUT)
+                               DWORD gleWait = GetLastError();
+
+                               if (gleWait == ERROR_SEM_TIMEOUT)
                                        return IPC_STATE__NOT_LISTENING;
 
+                               trace2_data_intmax("ipc-debug", NULL,
+                                                  "connect/waitpipe/gle",
+                                                  (intmax_t)gleWait);
+
                                return IPC_STATE__OTHER_ERROR;
                        }
 
@@ -133,17 +142,31 @@ static enum ipc_active_state connect_to_server(
                        break; /* try again */
 
                default:
+                       trace2_data_intmax("ipc-debug", NULL,
+                                          "connect/createfile/gle",
+                                          (intmax_t)gle);
+
                        return IPC_STATE__OTHER_ERROR;
                }
        }
 
        if (!SetNamedPipeHandleState(hPipe, &mode, NULL, NULL)) {
+               gle = GetLastError();
+               trace2_data_intmax("ipc-debug", NULL,
+                                  "connect/setpipestate/gle",
+                                  (intmax_t)gle);
+
                CloseHandle(hPipe);
                return IPC_STATE__OTHER_ERROR;
        }
 
        *pfd = _open_osfhandle((intptr_t)hPipe, O_RDWR|O_BINARY);
        if (*pfd < 0) {
+               gle = GetLastError();
+               trace2_data_intmax("ipc-debug", NULL,
+                                  "connect/openosfhandle/gle",
+                                  (intmax_t)gle);
+
                CloseHandle(hPipe);
                return IPC_STATE__OTHER_ERROR;
        }