J
J
jonasas2015-04-11 18:47:03
linux
jonasas, 2015-04-11 18:47:03

How to fix less?

Good day. On my server (Debian 6) at some point less broke.
Any attempt to read anything (file or stdin) simply closes it.
As I understand it, something is wrong with ioctl. It may not be able to find my terminal's stdout.
Here is the strace output:

strace less file.txt 
execve("/usr/bin/less", ["less", "file.txt"], [/* 31 vars */]) = 0
brk(0)                                  = 0x1f61000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f91fa6f2000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=50899, ...}) = 0
mmap(NULL, 50899, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f91fa6e5000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libncurses.so.5", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20*\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=286776, ...}) = 0
mmap(NULL, 2383488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f91fa291000
mprotect(0x7f91fa2d3000, 2093056, PROT_NONE) = 0
mmap(0x7f91fa4d2000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x41000) = 0x7f91fa4d2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\355\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1465768, ...}) = 0
mmap(NULL, 3573832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f91f9f28000
mprotect(0x7f91fa088000, 2093056, PROT_NONE) = 0
mmap(0x7f91fa287000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15f000) = 0x7f91fa287000
mmap(0x7f91fa28c000, 18504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f91fa28c000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.2", O_RDONLY)       = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\r\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14696, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f91fa6e4000
mmap(NULL, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f91f9d24000
mprotect(0x7f91f9d26000, 2097152, PROT_NONE) = 0
mmap(0x7f91f9f26000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f91f9f26000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f91fa6e3000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f91fa6e2000
arch_prctl(ARCH_SET_FS, 0x7f91fa6e3700) = 0
mprotect(0x7f91f9f26000, 4096, PROT_READ) = 0
mprotect(0x7f91fa287000, 16384, PROT_READ) = 0
mprotect(0x7f91fa6f4000, 4096, PROT_READ) = 0
munmap(0x7f91fa6e5000, 50899)           = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
brk(0)                                  = 0x1f61000
brk(0x1f82000)                          = 0x1f82000
stat("/root/.terminfo", 0x7fff82a97c20) = -1 ENOENT (No such file or directory)
stat("/etc/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access("/etc/terminfo/x/xterm", R_OK)   = -1 ENOENT (No such file or directory)
stat("/lib/terminfo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access("/lib/terminfo/x/xterm", R_OK)   = 0
open("/lib/terminfo/x/xterm", O_RDONLY) = 3
read(3, "\32\1\34\0&\0\17\0\235\1Z\5xterm|X11 terminal e"..., 4097) = 3213
close(3)                                = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCGWINSZ, {ws_row=38, ws_col=168, ws_xpixel=0, ws_ypixel=0}) = 0
ioctl(2, TIOCGWINSZ, {ws_row=38, ws_col=168, ws_xpixel=0, ws_ypixel=0}) = 0
open("/usr/bin/.sysless", O_RDONLY)     = -1 ENOENT (No such file or directory)
open("/etc/sysless", O_RDONLY)          = -1 ENOENT (No such file or directory)
open("/root/.less", O_RDONLY)           = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=108805904, ...}) = 0
mmap(NULL, 108805904, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f91f3560000
close(3)                                = 0
open("/root/.lesshst", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0600, st_size=407, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f91fa6f1000
read(3, ".less-history-file:\n.search\n\"scr"..., 4096) = 407
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x7f91fa6f1000, 4096)            = 0
open("/dev/tty", O_RDONLY)              = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff82a99560) = -1 ENOTTY (Inappropriate ioctl for device)
fsync(3)                                = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff82a99520) = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(3, SNDCTL_TMR_STOP or TCSETSW, {B2000000 opost -isig -icanon -echo ...}) = -1 ENOTTY (Inappropriate ioctl for device)
rt_sigaction(SIGINT, {0x414690, [INT], SA_RESTORER|SA_RESTART, 0x7f91f9f59f50}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTSTP, {0x414610, [TSTP], SA_RESTORER|SA_RESTART, 0x7f91f9f59f50}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGWINCH, {0x414650, [WINCH], SA_RESTORER|SA_RESTART, 0x7f91f9f59f50}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_IGN, [QUIT], SA_RESTORER|SA_RESTART, 0x7f91f9f59f50}, {SIG_DFL, [], 0}, 8) = 0
stat("file.txt", {st_mode=S_IFREG|0644, st_size=18, ...}) = 0
stat("file.txt", {st_mode=S_IFREG|0644, st_size=18, ...}) = 0
open("file.txt", O_RDONLY)              = 4
lseek(4, 1, SEEK_SET)                   = 1
lseek(4, 0, SEEK_SET)                   = 0
read(4, "line1\nline2\nline3\n", 256)   = 18
lseek(4, 1, SEEK_SET)                   = 1
fstat(4, {st_mode=S_IFREG|0644, st_size=18, ...}) = 0
lseek(4, 0, SEEK_SET)                   = 0
stat("file.txt", {st_mode=S_IFREG|0644, st_size=18, ...}) = 0
write(1, "\33[?1049h\33[?1h\33=\r", 16) = 19
fsync(3)                                = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff82a993a0) = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(3, SNDCTL_TMR_STOP or TCSETSW, {B2000000 -opost -isig -icanon -echo ...}) = -1 ENOTTY (Inappropriate ioctl for device)
exit_group(1)                           = ?

All other reading/editing utilities work fine (more, vim, nano, cat)
I can't figure out where to dig, please help!

Answer the question

In order to leave comments, you need to log in

1 answer(s)
J
jcmvbkbc, 2015-04-11
@jonasas

open("/dev/tty", O_RDONLY) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fff82a99560) = -1 ENOTTY (Inappropriate ioctl for device)

Your /dev/tty seems to be broken.
What stat /dev/tty says

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question