Re: /proc fs bug?

From: Nicholas Leippe (nickl@mycomputer.com)
Date: Mon Mar 27 2000 - 17:07:15 EST


> Date: Mon, 27 Mar 2000 11:37:55 -0700
> From: Nicholas Leippe <nickl@mycomputer.com>
> To: linux-kernel@vger.rutgers.edu
> Subject: /proc fs bug?
>
> I've noticed some odd (and annoying) behavior within the last week.
> I first noticed it with 2.3.49, then again with 2.3.99pre3.
> When I first boot it runs fine, but then after a while (not sure
> how long) ps, qps, procinfo, kill [processname] all hang.
> I can still ls dirs in /proc, but if I attempt to ls certain process
> entries in /proc it will hang. I'm not sure where the bug lies
> but thought I'd share it. (by hang I mean that ls hangs and ties up
> the shell - I have to kill the xterm with alt-f4 or go to another
> vc to work.)
>
> Nick
>
> (please cc since I'm not on the list yet)
>

I've just played with it some more over ssh (it's my home box) and I've
narrowed it to my ll alias which is:
ll='ls -alF --color=tty'

both the -a and -F switches work fine, but with -l or --color=tty it
hangs.

I checked again and procinfo does seem to work just fine. However,
both ps and top hang the terminal. I tried qps - put it in the
background - and it hung (display never came up) but I couldn't
even kill it - 'kill -9' had zero effect - nor could bash 'kill %1' it.
(strange).
Also, it's not all /proc/n dirs that have trouble. When I did the
straces below with ls and cat, they both worked fine on init and most
others just fine.

Here's an strace of 'ls -l /proc/451':

==================================================================================================

execve("/bin/ls", ["ls", "-l", "/proc/451"], [/* 54 vars */]) = 0
brk(0) = 0x80549b0
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=24761, ...}) = 0
mmap(0, 24761, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40013000
close(4) = 0
open("/lib/libc.so.6", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0755, st_size=4118299, ...}) = 0
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\250\202"..., 4096) = 4096
mmap(0, 993500, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x4001a000
mprotect(0x40105000, 30940, PROT_NONE) = 0
mmap(0x40105000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0xea000) = 0x40105000
mmap(0x40109000, 14556, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40109000
close(4) = 0
mprotect(0x4001a000, 962560, PROT_READ|PROT_WRITE) = 0
mprotect(0x4001a000, 962560, PROT_READ|PROT_EXEC) = 0
munmap(0x40013000, 24761) = 0
personality(0 /* PER_??? */) = 0
getpid() = 1454
brk(0) = 0x80549b0
brk(0x8054b50) = 0x8054b50
brk(0x8055000) = 0x8055000
open("/usr/share/locale/locale.alias", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2174, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40013000
read(4, "# Locale name alias data base.\n#"..., 4096) = 2174
brk(0x8056000) = 0x8056000
read(4, "", 4096) = 0
close(4) = 0
munmap(0x40013000, 4096) = 0
open("/usr/share/i18n/locale.alias", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES", O_RDONLY) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
close(4) = 0
open("/usr/share/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=44, ...}) = 0
mmap(0, 44, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40013000
close(4) = 0
open("/usr/share/locale/en_US/LC_MONETARY", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=93, ...}) = 0
mmap(0, 93, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40014000
close(4) = 0
open("/usr/share/locale/en_US/LC_COLLATE", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=29970, ...}) = 0
mmap(0, 29970, PROT_READ, MAP_PRIVATE, 4, 0) = 0x4010d000
close(4) = 0
open("/usr/share/locale/en_US/LC_TIME", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=508, ...}) = 0
mmap(0, 508, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40015000
close(4) = 0
open("/usr/share/locale/en_US/LC_NUMERIC", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=27, ...}) = 0
mmap(0, 27, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40016000
close(4) = 0
open("/usr/share/locale/en_US/LC_CTYPE", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=10428, ...}) = 0
mmap(0, 10428, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40017000
close(4) = 0
time(NULL) = 954194265
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, TIOCGWINSZ, {ws_row=116, ws_col=135, ws_xpixel=135, ws_ypixel=0}) = 0
brk(0x8059000) = 0x8059000
lstat("/proc/451", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/dev/null", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = -1 ENOTDIR (Not a directory)
open("/proc/451", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 4
fstat(4, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
brk(0x805b000) = 0x805b000
getdents(4, /* 14 entries */, 3391) = 232
lstat("/proc/451/fd", {st_mode=S_IFDIR|0500, st_size=0, ...}) = 0
lstat("/proc/451/environ", {st_mode=S_IFREG|0400, st_size=0, ...}) = 0
lstat("/proc/451/status", {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
lstat("/proc/451/cmdline", {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
lstat("/proc/451/stat", {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
lstat("/proc/451/statm", {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
lstat("/proc/451/cpu", {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
lstat("/proc/451/maps", {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
lstat("/proc/451/mem", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
lstat("/proc/451/cwd", {st_mode=S_IFLNK|0777, st_size=0, ...}) = 0
readlink("/proc/451/cwd",

======================================================================================

if I try to cat /proc/451/cmdline it also hangs, here's an strace of that:

execve("/bin/cat", ["cat", "/proc/451/cmdline"], [/* 54 vars */]) = 0
brk(0) = 0x804b144
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=24761, ...}) = 0
mmap(0, 24761, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40013000
close(4) = 0
open("/lib/libc.so.6", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0755, st_size=4118299, ...}) = 0
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\250\202"..., 4096) = 4096
mmap(0, 993500, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x4001a000
mprotect(0x40105000, 30940, PROT_NONE) = 0
mmap(0x40105000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0xea000) = 0x40105000
mmap(0x40109000, 14556, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40109000
close(4) = 0
mprotect(0x4001a000, 962560, PROT_READ|PROT_WRITE) = 0
mprotect(0x4001a000, 962560, PROT_READ|PROT_EXEC) = 0
munmap(0x40013000, 24761) = 0
personality(0 /* PER_??? */) = 0
getpid() = 1495
brk(0) = 0x804b144
brk(0x804b2e4) = 0x804b2e4
brk(0x804c000) = 0x804c000
open("/usr/share/locale/locale.alias", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2174, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40013000
read(4, "# Locale name alias data base.\n#"..., 4096) = 2174
read(4, "", 4096) = 0
close(4) = 0
munmap(0x40013000, 4096) = 0
open("/usr/share/i18n/locale.alias", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES", O_RDONLY) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
close(4) = 0
open("/usr/share/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=44, ...}) = 0
mmap(0, 44, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40013000
close(4) = 0
open("/usr/share/locale/en_US/LC_MONETARY", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=93, ...}) = 0
mmap(0, 93, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40014000
close(4) = 0
open("/usr/share/locale/en_US/LC_COLLATE", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=29970, ...}) = 0
mmap(0, 29970, PROT_READ, MAP_PRIVATE, 4, 0) = 0x4010d000
close(4) = 0
brk(0x804d000) = 0x804d000
open("/usr/share/locale/en_US/LC_TIME", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=508, ...}) = 0
mmap(0, 508, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40015000
close(4) = 0
open("/usr/share/locale/en_US/LC_NUMERIC", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=27, ...}) = 0
mmap(0, 27, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40016000
close(4) = 0
open("/usr/share/locale/en_US/LC_CTYPE", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=10428, ...}) = 0
mmap(0, 10428, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40017000
close(4) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 11), ...}) = 0
open("/proc/451/cmdline", O_RDONLY|O_LARGEFILE) = 4
fstat(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
brk(0x804f000) = 0x804f000
read(4,

==========================================================================================

Hope this helps...

Nick

(and please remember to cc me since I'm not on the list yet)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Mar 31 2000 - 21:00:20 EST