[vlc-devel] [PATCH 09/12] network: io: Remove VLA usages

Rémi Denis-Courmont remi at remlab.net
Wed Dec 9 16:20:05 CET 2020

Le mercredi 9 décembre 2020, 17:05:37 EET Steve Lhomme a écrit :
> On 2020-12-09 11:19, Rémi Denis-Courmont wrote:
> > Yeah those call sites! They'll busy loop, or cause their respective
> > callers to, if you throw an ENOMEM error.
> They will no matter what if there's an "error". It doesn't matter the
> error.

Yes it does.

> The documentation doesn't mention what kind of error they can
> expect.

What does have to do with anything? If the documentation disagrees with the 
code, you could argue that one or the other is right. But if there is no 
documentation, then the code ought to be the refence.

> net_Accept is free to return an error on whatever it wants.
>   * @return -1 on error (may be transient error due to network issues),
>   * a new socket descriptor on success.
> The only case where net_Accept() really returned an error is this:
>              if (net_errno != EINTR)
>              {
>                  msg_Err(obj, "poll error: %s", vlc_strerror_c(net_errno));
>                  return -1;
>              }

And that's what I just said? EBADF/EINVAL can occur if the caller is buggy, 
and it makes sense to log an error to help debug it?

> > I call that a bug. You can't have errors in event handling - other than
> > events masquerading as errors (EINTR...) and call site bugs (EBADF,
> > EINVAL...).
> The fact they are looping eternally on errors is the actual issue. Not
> that net_Accept may or may have not returned certain types of error only.

No. We've been through this many times. Event handling cannot fail. If it 
does, depending on the case, it's either a live loop, a dead lock, both at the 
same time (a.k.a. an infinite busy loop).

Still -1.

Rémi Denis-Courmont

More information about the vlc-devel mailing list