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