The following program does not work under cygwin 1.3.2:
> #include <pth.h>
> #include <stdio.h>
>
> void *test(void *arg);
>
> int main(int argc, char* argv[]) {
> int pid;
> pth_init();
>
> pth_join(pth_spawn(PTH_ATTR_DEFAULT, test, NULL), NULL);
> }
>
> void *test(void *arg) {
> int pid;
>
> pid = fork();
> if (pid < 0) {
> printf("FORKFAILED\n");
> } else if (pid == 0) {
> printf("FORKCHILD\n");
> } else {
> printf("FORKPARENT\n");
> }
> }
Cygwin outputs the following message:
C:\tmp\tmp\install\bin\test.exe: *** 1. unable to allocate heap 0xA010000,
heap_chunk_size 268435456, pid 1568, Win32 error 487
0 [main] test 1516 sync_with_child: child 1568(0xB4) died before
initialization with status code 0x1
252 [main] test 1516 sync_with_child: *** child state waiting for
longjmp
FORKFAILED
I have sumbitted this to the cygwin list, but both I and they think it is more
something to do with pth's stack manipulation routines when spawning new processes
doing things incomptable with cygwin....
I can supply a more detailed analysis of what happens leading up to the problem under
cygwin if wanted.
______________________________________________________________________
GNU Portable Threads (Pth) http://www.gnu.org/software/pth/
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager (Majordomo) [EMAIL PROTECTED]