|
Message-ID: <47bc2113ebf931665b6b88795159de2e@ispras.ru> Date: Tue, 25 May 2021 09:30:18 +0300 From: Alexey Izbyshev <izbyshev@...ras.ru> To: Rich Felker <dalias@...c.org> Cc: musl@...ts.openwall.com Subject: Re: Potentially infinite loop in posix_spawn'ed child On 2021-05-24 23:33, Rich Felker wrote: > On Mon, May 24, 2021 at 01:09:21PM +0300, Alexey Izbyshev wrote: >> Hi, >> >> I've noticed the following loop at >> https://git.musl-libc.org/cgit/musl/tree/src/process/posix_spawn.c#n159: >> >> exec(args->path, args->argv, args->envp); >> ret = -errno; >> >> fail: >> /* Since sizeof errno < PIPE_BUF, the write is atomic. */ >> ret = -ret; >> if (ret) while (__syscall(SYS_write, p, &ret, sizeof ret) < 0); >> _exit(127); >> >> Is there any reason that write is done in a loop? If SIGPIPE is >> blocked or ignored and the parent dies before this point, the child >> will spin in it forever. > > I suppose the special case of EPIPE should be considered here as no > need to inform the parent. Are there any other errors that should be > treated specially? > I'm not aware of any other errors that would need treatment. Is this loop intended to be a detection/debugging aid in case of an unexpected error? Alexey
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.