Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 25 May 2021 09:30:18 +0300
From: Alexey Izbyshev <>
To: Rich Felker <>
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 
>>     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 


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.