This is the mail archive of the cygwin@cygwin.com 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
details.

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
--
Steven Reddie <Steven.Reddie@ca.com>
Senior Software Engineer
Computer Associates Pty Ltd (Australia)


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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