Sticky EOF breaks stream concatenation via dup2 [BZ #23636]
Florian Weimer
fweimer@redhat.com
Mon Sep 17 13:37:00 GMT 2018
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
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.
Thanks,
Florian
More information about the Libc-alpha
mailing list