[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #59585] Make with output-sync prints 'fcntl(): Bad file descriptor'
From: |
anonymous |
Subject: |
[bug #59585] Make with output-sync prints 'fcntl(): Bad file descriptor' on MacOS when output is piped |
Date: |
Tue, 1 Dec 2020 06:10:52 -0500 (EST) |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 |
URL:
<https://savannah.gnu.org/bugs/?59585>
Summary: Make with output-sync prints 'fcntl(): Bad file
descriptor' on MacOS when output is piped
Project: make
Submitted by: None
Submitted on: Tue 01 Dec 2020 11:10:50 AM UTC
Severity: 3 - Normal
Item Group: Bug
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
Component Version: 4.3
Operating System: POSIX-Based
Fixed Release: None
Triage Status: None
_______________________________________________________
Details:
OS: macOS 10.13.4 (17E202), Darwin 17.5.0
Make: 4.3
Was checking this problem both on Linux and MacOS, only MacOS is having it
right now.
Steps to reproduce:
1. Create any rule for make.
2. Launch following command: make -j -O <target> | cat
Running make without output-sync does not reproduce the problem.
Here is my output:
~/example$ ls -lAhF
total 512
-rw-r--r-- 1 nikita.akatiev orcgroup 62B Dec 1 13:56 main.c
-rwxr-xr-x 1 nikita.akatiev orcgroup 250K Dec 1 13:55 make*
~/example$ cat main.c
#include <stdio.h>
int main() {
puts("Hello");
return 0;
}
~/example$ ./make --version
GNU Make 4.3
Built for x86_64-apple-darwin17.5.0
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
~/example$ ./make -j -O main | cat
fcntl(): Bad file descriptor
cc main.c -o main
This is a minimal example; launched on a project with multiple sources (e.g.
when building make itself), it seems like every time the output buffers the
error is shown:
gmake[1]: Leaving directory '.../make-4.3/lib'
make all-recursive
fcntl(): Bad file descriptor
gmake[3]: Entering directory '.../make-4.3/lib'
/usr/local/opt/llvm/bin/clang -DHAVE_CONFIG_H -I. -I../src
-I/usr/local/include -g -O2 -MT stripslash.o -MD -MP -MF .deps/stripslash.Tpo
-c -o stripslash.o stripslash.c
mv -f .deps/stripslash.Tpo .deps/stripslash.Po
gmake[3]: Leaving directory '.../make-4.3/lib'
fcntl(): Bad file descriptor
gmake[3]: Entering directory '.../make-4.3/lib'
/usr/local/opt/llvm/bin/clang -DHAVE_CONFIG_H -I. -I../src
-I/usr/local/include -g -O2 -MT strerror-override.o -MD -MP -MF
.deps/strerror-override.Tpo -c -o strerror-override.o strerror-override.c
mv -f .deps/strerror-override.Tpo .deps/strerror-override.Po
gmake[3]: Leaving directory '.../make-4.3/lib'
fcntl(): Bad file descriptor
gmake[3]: Entering directory '.../make-4.3/lib'
/usr/local/opt/llvm/bin/clang -DHAVE_CONFIG_H -I. -I../src
-I/usr/local/include -g -O2 -MT xconcat-filename.o -MD -MP -MF
.deps/xconcat-filename.Tpo -c -o xconcat-filename.o xconcat-filename.c
mv -f .deps/xconcat-filename.Tpo .deps/xconcat-filename.Po
gmake[3]: Leaving directory '.../make-4.3/lib'
fcntl(): Bad file descriptor
gmake[3]: Entering directory '.../make-4.3/lib'
A real use case of piping the output is, for example, passing the build log to
tee command for both printing logs and saving them into a file, while using
grouped and synchronized logging produced by output-sync.
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?59585>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
- [bug #59585] Make with output-sync prints 'fcntl(): Bad file descriptor' on MacOS when output is piped,
anonymous <=