proc_waiter: error on read of child wait pipe 0x0, Win32 error 6
Takashi Yano
takashi.yano@nifty.ne.jp
Fri Jan 14 00:22:27 GMT 2022
On Thu, 13 Jan 2022 16:11:04 -0800
Mark Geisert wrote:
> Takashi Yano wrote:
> > On Wed, 12 Jan 2022 07:41:41 +0100
> > Marco Atzeri wrote:
> >> On 12.01.2022 07:27, Jay K wrote:
> >>> Ok, here is a small demonstration of the problem.
> >>>
> >>> #include <stdlib.h>
> >>> #include <stdio.h>
> >>> #include <windows.h>
> >>>
> >>> unsigned __stdcall thread(void* p)
> >>> {
> >>> unsigned i;
> >>> for (i = 0; i < 100; ++i)
> >>> system("./a.exe");
> >>> return 0;
> >>> }
> >>>
> >>> int main()
> >>> {
> >>> unsigned i;
> >>> HANDLE threads[100] = {0};
> >>> FILE* f = fopen("a.c", "w");
> >>> fprintf(f, "int main() { return 0; }\n");
> >>> fclose(f);
> >>
> >>
> >> so you are mixing Cygwin and Windows calls ?
> >> That is looking for trouble.
> >>
> >> Or it is a tentative to produce a test case ?
> >
> > I found that the same happens even with pthread rather than
> > win32 thread functions.
> >
> > #include <stdlib.h>
> > #include <pthread.h>
> >
> > void *thread(void *p)
> > {
> > system("true");
> > return NULL;
> > }
> >
> > int main()
> > {
> > int i;
> > pthread_t threads[2];
> >
> > for (i = 0; i < 2; i++)
> > pthread_create(&threads[i], NULL, thread, NULL);
> >
> > for (i = 0; i < 2; i++)
> > pthread_join(threads[i], NULL);
> >
> > return 0;
> > }
> >
> > Executing above code results in hang with message:
> > 0 [waitproc] a 786 proc_waiter: error on read of child wait pipe 0x0, Win32 error 6
> >
>
> POSIX does not require system() to be thread-safe. On Cygwin, it isn't. When I
> ran into this a while back, I implemented an application wrapper around system()
> to serialize calls. It's tricky because you want to serialize just the mechanism
> of system(), not the programs that the multiple system()s call.
Ah, indeed.
https://pubs.opengroup.org/onlinepubs/9699919799/functions/system.html
says:
"The system() function need not be thread-safe."
while Linux's system() is MT-safe.
Thanks.
--
Takashi Yano <takashi.yano@nifty.ne.jp>
More information about the Cygwin
mailing list