default buffer size is too small
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
fatrace |
Fix Released
|
Undecided
|
Unassigned | ||
fatrace (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
It appears the default 4096 byte buffer size is too small on a semi-busy system. The first or subsequent read() calls will fail with EOVERFLOW:
# fatrace
read: Value too large for defined data type
syscall_300(0, 0, 0x7f31170a4138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = 0x3
syscall_301(0x3, 0x11, 0x4800003b, 0xffffff9c, 0x401a00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = 0
brk(0) = 0xd53000
brk(0xd76000) = 0xd76000
rt_sigaction(
read(3, "\30\0\0\0\3\0\30\0 \0\0\0\
open("/
[...]
close(5) = 0
read(3, 0xd54000, 4096) = -1 EOVERFLOW (Value too large for defined data type)
dup(2) = 4
fcntl(4, F_GETFL) = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(4, {st_mode=
mmap(NULL, 4096, PROT_READ|
lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "read: Value too large for define"..., 44read: Value too large for defined data type
) = 44
close(4) = 0
Increasing it to 256kb fixed the issue for me.
Fixed in trunk r56.