Created attachment 1900380[details]
simple C program to ignore SIGPIPE, configure stdout buffering, and fwrite a string repeatedly
Description of problem: With line buffering configured on stdout,
and SIGPIPE ignored, fwrite calls to stdout on a broken pipe never report
an error.
Version-Release number of selected component (if applicable):
glibc-2.34-39.el9.x86_64
How reproducible:
always
Steps to Reproduce:
1. Compile and run the attached program fwrite.c
2. fwrite -l hello 5000 | head -n1
3.
Actual results:
The program succeeds in calling fwrite 5000 times to print hello,
even though the writes are actually failing with EPIPE.
Expected results:
The fwrite call should return an error. At some point, ferror starts
returning 1, but fwrite continues to succeed.
Additional info:
I've submitted this upstream to the upstream bug tracker since this behaviour needs to fixed upstream.
When we get a fix upstream then we can consider backporting this into CentOS Stream and RHEL.
I'm going to mark this a CLOSED/USPTREAM and track the bug upstream, we can reopen this for backport when the usptream work is complete.
Created attachment 1900380 [details] simple C program to ignore SIGPIPE, configure stdout buffering, and fwrite a string repeatedly Description of problem: With line buffering configured on stdout, and SIGPIPE ignored, fwrite calls to stdout on a broken pipe never report an error. Version-Release number of selected component (if applicable): glibc-2.34-39.el9.x86_64 How reproducible: always Steps to Reproduce: 1. Compile and run the attached program fwrite.c 2. fwrite -l hello 5000 | head -n1 3. Actual results: The program succeeds in calling fwrite 5000 times to print hello, even though the writes are actually failing with EPIPE. Expected results: The fwrite call should return an error. At some point, ferror starts returning 1, but fwrite continues to succeed. Additional info: