[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