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]

Reply via email to