[Bug 927028] Re: 'apropos' maxes out CPU when run with '/bin/*' as argument
Ben Okopnik
927028 at bugs.launchpad.net
Sat Feb 18 02:43:37 UTC 2012
> Something like 'apropos /bin/bash' doesn't do anything useful anyway.
Right, but 'cd /bin; apropos *' does - and still has exactly the same
problem as I originally reported. As to 'whatis', I had tested it before
writing up this bug; it produces a totally different set of results,
including throwing a dozen 'nothing appropriate' warnings when run in a
similar manner (which also seems wrong, to me: e.g., 'apropos
nc.openbsd' has no problem telling me what it is, but 'whatis' does):
ben at feynman:/bin$ apropos * > /tmp/apr.out
ben at feynman:/bin$ whatis * > /tmp/what.out
nc.openbsd: nothing appropriate.
ntfsck: nothing appropriate.
ntfsdecrypt: nothing appropriate.
ntfsdump_logfile: nothing appropriate.
ntfsmftalloc: nothing appropriate.
ntfsmove: nothing appropriate.
ntfstruncate: nothing appropriate.
ntfswipe: nothing appropriate.
plymouth: nothing appropriate.
plymouth-upstart-bridge: nothing appropriate.
static-sh: nothing appropriate.
ulockmgr_server: nothing appropriate.
ben at feynman:/bin$ wc -l /tmp/{apr,what}.out
6214 /tmp/apr.out
161 /tmp/what.out
6375 total
One possible (brute-force) answer to all of this might be to have
'apropos' only accept a single argument. It wouldn't stop anyone from
trying the above with, say, a 'for' loop, but at least they'd be aware
that they're running a largish number of processes. Also, given that
'whatis' isn't SUID, having both it and apropos resolve paths shouldn't
affect security.
Thank you for both your advice and your time and effort in resolving
this.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to man-db in Ubuntu.
https://bugs.launchpad.net/bugs/927028
Title:
'apropos' maxes out CPU when run with '/bin/*' as argument
Status in “man-db” package in Ubuntu:
Triaged
Bug description:
When 'apropos' is executed with an argument containing a list of files
in a directory (e.g., '/bin/*'), it maxes out the CPU for a good long
while (~40 seconds for /bin/*, about 9.5 minutes for /usr/bin/[a-z]*).
--------------------------------------------------------------------------------------------------------------------------------------------
ben at feynman:~$ apropos ~/bin/* & sleep 2; top -b -p $! -d 1 -n 3
[2] 9671
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9671 ben 20 0 7080 2224 928 R 100 0.2 0:02.46 apropos
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9671 ben 20 0 7012 2160 928 R 101 0.2 0:03.45 apropos
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9671 ben 20 0 7012 2164 928 R 100 0.2 0:04.44 apropos
--------------------------------------------------------------------------------------------------------------------------------------------
ben at feynman:~$ dpkg -S /usr/bin/apropos
man-db: /usr/bin/apropos
ben at feynman:~$ lsb_release -rd
Description: Ubuntu 11.10
Release: 11.10
ben at feynman:~$ apt-cache policy man-db
man-db:
Installed: 2.6.0.2-2
Candidate: 2.6.0.2-2
Version table:
*** 2.6.0.2-2 0
500 http://us.archive.ubuntu.com/ubuntu/ oneiric/main i386 Packages
100 /var/lib/dpkg/status
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/man-db/+bug/927028/+subscriptions
More information about the foundations-bugs
mailing list