Lsof can be blocked by some kernel functions that it uses -
       lstat(2), readlink(2), and stat(2).  These functions are stalled
       in the kernel, for example, when the hosts where mounted NFS file
       systems reside become inaccessible.
       Lsof attempts to break these blocks with timers and child
       processes, but the techniques are not wholly reliable.  When lsof
       does manage to break a block, it will report the break with an
       error message.  The messages may be suppressed with the -t and -w
       options.
       The default timeout value may be displayed with the -h or -?
       option, and it may be changed with the -S [t] option.  The
       minimum for t is two seconds, but you should avoid small values,
       since slow system responsiveness can cause short timeouts to
       expire unexpectedly and perhaps stop lsof before it can produce
       any output.
       When lsof has to break a block during its access of mounted file
       system information, it normally continues, although with less
       information available to display about open files.
       Lsof can also be directed to avoid the protection of timers and
       child processes when using the kernel functions that might block
       by specifying the -O option.  While this will allow lsof to start
       up with less overhead, it exposes lsof completely to the kernel
       situations that might block it.  Use this option cautiously.