Package: src:linux Version: 3.16.7-ckt11-1+deb8u3 Severity: grave Justification: causes non-serious data loss
Dear Maintainer, In certain circumstances, the write(2) syscall returns success, but the data written is not seen on the other end of the fd. For example: * What led up to the situation? 1. Run 'cat' in xterm 2. Type a single line with 4098 characters (including the newline), e.g., by running `yes | head -2049 | xargs | xclip -i` and pasting the output. 3. Type ^D (EOF) * What was the outcome of this action? 4. The write(2) syscall in xterm indicates all 4098 bytes and the subsequent EOF were written, but the read(2) syscall receives only 4096 bytes before the EOF. Neither xterm nor cat reports an error. straces are enclosed; compare lines 37-39 in the xterm xtrace to lines 3-5 in the cat strace. * What outcome did you expect instead? I expected the read(2) call on line 5 to read the two bytes "y\n", or failing that the write(2) call on line 38 to return an error. Cheers, Daniel P.S. I initially filed this as #796226 against coreutils. strace of xterm: 1 % strace -e write -p ... 2 write(5, "c", 1) = 1 3 write(5, "a", 1) = 1 4 write(5, "t", 1) = 1 5 write(5, "\r", 1) = 1 6 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 7 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 8 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 9 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 10 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 11 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 12 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 13 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 14 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 15 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 16 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 17 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 18 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 19 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 20 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 21 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 22 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 23 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 24 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 25 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 26 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 27 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 28 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 29 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 30 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 31 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 32 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 33 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 34 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 35 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 36 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 37 write(5, "y y y y y y y y y y y y y y y y "..., 128) = 128 38 write(5, "y\r", 2) = 2 39 write(5, "\4", 1) = 1 strace of cat: 1 % strace -e trace=desc -p ... 2 Process 4519 attached 3 read(0, "y y y y y y y y y y y y y y y y "..., 131072) = 4096 4 write(1, "y y y y y y y y y y y y y y y y "..., 4096) = 4096 5 read(0, "", 131072) = 0 6 close(0) = 0 7 close(1) = 0 8 close(2) = 0 9 +++ exited with 0 +++ -- Package-specific info: ** Version: Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) -- System Information: Debian Release: 8.1 APT prefers stable APT policy: (990, 'stable'), (500, 'testing-updates'), (500, 'stable-updates'), (250, 'testing'), (200, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system)