This is the mail archive of the mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

1.3.12: Process exit code's shifted up 8 bits (cwait, wait, waitpid)

There appears to be a bug in cwait and I think in other functions (wait,
waitpid) in that the exit code of the child process is shifted up 8 bits.
Some sample code:

#include <stdio.h>
#include <process.h>

void main()
        char* args[] = { "cl", "/c", "foo.c", NULL };

        int pid = spawnvp(_P_NOWAIT, args[0], args);
        if (pid != -1)
                int     result = 0;
                cwait(&result, pid, WAIT_CHILD);
                printf("result = %d\n", result);

Output from Cygwin gcc compile (gcc -ox.exe x.c):
	result = 512
Output from MSVC compile (cl x.c):
	result = 2

The reason I say that I think it is also in wait or waitpid is that I saw
something similar when I was playing around with fork but I don't recall the

Can someone please let me know if this isn't expected behaviour.  If it is a
bug I need to work around it in such a way that when it gets fixed my code
doesn't break.  I guess I could shift the value down 8 bits only if is is
greater than 255.  Does that sound like the best approach?

Steven Reddie <>
Senior Software Engineer
Computer Associates Pty Ltd (Australia)

Unsubscribe info:
Bug reporting:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]