https://bugs.exim.org/show_bug.cgi?id=1835
--- Comment #5 from Simon Arlott <bugzilla.exim.si...@arlott.org> --- The comment is from the original import in 2004 and doesn't explain how to produce the issue described so it's impossible to verify. Both GnuTLS and OpenSSL will have changed significantly since then. EBADF is a valid error code for fflush() because the fd located in the FILE struct may have been closed, or it may be opened read only. It is not valid to call any functions on FILE* that has been fclose()'d. "In either case any further access (including another call to fclose()) to the stream results in undefined behavior." fclose() is the only way to release the FILE struct memory allocated by fopen(). Further accesses will be using freed memory. There is no way for glibc to know the difference between "FILE* that you want to keep using with fflush()" and "FILE* that you're finished with" and there's no ffree(). Support for the behaviour you're suggesting would cause a memory leak. You're not seeing a crash because you need to experience the free'd memory being overwritten in a suitable way to cause fflush() to crash. I have no way to reproduce this on demand but exim regularly crashes in fflush() for me. 2016-09-21T17:08:25.730+01:00 <info> kernel: exim4[8640]: segfault at 8 ip 00007f1ba0a04776 sp 00007ffe17e91780 error 4 in libc-2.23.so[7f1ba0997000+1c0000] -- You are receiving this mail because: You are on the CC list for the bug. -- ## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim details at http://www.exim.org/ ##