This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Sticky EOF breaks stream concatenation via dup2 [BZ #23636]
On 20/09/2018 05:28, Florian Weimer wrote:
> * Florian Weimer:
>
>> Do we have to revert the fix fpr bug 1190 (which introduces sticky EOF
>> for stdio streams)?
>>
>> We received a bug report that cups-filters is quite broken due to this
>
> The upstream bug: <https://github.com/OpenPrinting/cups-filters/issues/58>
>
>> change, and while reviewing the libio sources, I found evidence that
>> what cups-filters does (dup2-ing another descriptor after EOF) was
>> once considered supported (in _IO_new_file_underflow):
>>
>> fp->_IO_read_end += count;
>> if (count == 0)
>> {
>> /* If a stream is read to EOF, the calling application may
>> switch active
>> handles. As a result, our offset cache would no longer be valid, so
>> unset it. */
>> fp->_offset = _IO_pos_BAD;
>> return EOF;
>> }
>>
>> Usually, when our own testing finds bugs, that's that's just a small
>> subset of what the larger user community (many of whom cannot
>> recompile their applications) will experience once they upgrade, so
>> I'm quite worried about the implications of the fix for bug 1190.
>
> Folks,
>
> do I read the emerging consensus correctly as the following?
>
> glibc should not change (e.g., revert the fix for bug 1190) to paper
> over application bugs such as the bug in cups-filters. Applications
> need to be fixed instead. End users whose applications cannot be fixed
> should keep with previous glibc versions.
I agree with you on this specific issue, even more after the FreeBSD
ports required path indicated it is indeed an application problem.