`tee` returns `EINVAL` for every pair of pipes
Maintainer thường phản hồi trong vòng 2 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 40/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- c, linux, macos
- Lĩnh vực
- operating-systems
Hướng nghiên cứu
Start in sys_tee in src/syscall/io.c, where the early EINVAL return and its comment explain why copying without consuming is refused on macOS. The reproducer in the issue shows the target behaviour: tee should return the byte count, leave the source pipe readable, and copy into the destination. Done means that reproducer prints tee=5 errno=0 with both reads returning 5 bytes. Expect to find a workable approach to peeking a pipe on macOS first, which is the hard part.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
sys_tee (src/syscall/io.c) returns EINVAL without looking at its arguments. Its comment gives the reason: copying without consuming needs a way to look into a pipe, and macOS offers none.
Reproducer:
#define _GNU_SOURCE
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
int main(void)
{
int in[2], out[2];
char buf[8];
pipe(in);
pipe(out);
write(in[1], "hello", 5);
errno = 0;
long n = tee(in[0], out[1], 100, SPLICE_F_NONBLOCK);
printf("tee=%ld errno=%d\n", n, errno);
if (n > 0)
printf("copied=%zd still in the source=%zd\n",
read(out[0], buf, sizeof(buf)), read(in[0], buf, sizeof(buf)));
return 0;
}
| result | |
|---|---|
elfuse b57f367 |
tee=-1 errno=22 |
| Linux 6.12 under qemu | tee=5 errno=0, then copied=5 still in the source=5 |
EINVAL is what tee(2) documents for descriptors that are not both pipes, so that is how a guest reads the refusal.
- Ngôn ngữ chính
- C
- Star
- 271
- Fork
- 28
- Merge trung bình
- 2 ngày 17 giờ
- Pull request đã merge (30 ngày)
- 17
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của sysprog21/elfuse
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 50/100
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của sysprog21/elfuse
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Research radar digest 2026-W42Đang mởresearch-radar
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
Maintainer thường phản hồi trong vòng 1 ngày
-
wait.h with wrong descriptionĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
"systemctl is-system-running --wait" may hang indefinitely for non-root usersCó thể đã có người làm @alexonea đã nhận hôm nay. Đang mởbug 🐛 systemctl
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
testing: DISK test reads the wrong directory entry offset on H89Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
FujiNetWIFI/fujinet-lib#115 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày