]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.cc] lib9: add more error reporting to windows runcmd
authorAlex Brainman <alex.brainman@gmail.com>
Fri, 30 Jan 2015 04:48:58 +0000 (15:48 +1100)
committerAlex Brainman <alex.brainman@gmail.com>
Tue, 3 Feb 2015 22:46:27 +0000 (22:46 +0000)
%r format prints nothing useful on windows (see issue 9722).
Hopefully this will provide more clues about what happened.

Change-Id: Ic553bbdcde0c3cbfffa3a28f2168d6e75694e2ac
Reviewed-on: https://go-review.googlesource.com/3568
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/lib9/run_windows.c

index 87875b42dbdefd26a977cbc60636a65f3b4f521a..e3e1c25710d1beb624add3f7c85a6bab74a899ac 100644 (file)
@@ -19,7 +19,7 @@ runcmd(char **argv)
        WinRune *r;
        STARTUPINFOW si;
        PROCESS_INFORMATION pi;
-       DWORD code;
+       DWORD code, lasterr;
 
        fmtstrinit(&fmt);
        for(i=0; argv[i]; i++) {
@@ -63,18 +63,24 @@ runcmd(char **argv)
        si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
 
        if(!CreateProcessW(nil, r, nil, nil, TRUE, 0, nil, nil, &si, &pi)) {
+               werrstr("CreateProcess failed: errno=%d", (int)GetLastError());
                free(r);
                return -1;
        }
 
        free(r);
-       if(WaitForMultipleObjects(1, &pi.hProcess, FALSE, INFINITE) != 0)
+       if(WaitForMultipleObjects(1, &pi.hProcess, FALSE, INFINITE) != 0) {
+               werrstr("WaitForMultipleObjects failed: errno=%d", (int)GetLastError());
                return -1;
+       }
        i = GetExitCodeProcess(pi.hProcess, &code);
+       lasterr = GetLastError();
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
-       if(!i)
+       if(!i) {
+               werrstr("GetExitCodeProcess failed: errno=%d", (int)lasterr);
                return -1;
+       }
        if(code != 0) {
                werrstr("unsuccessful exit status: %d", (int)code);
                return -1;