lsof does this internally to avoid deadlocking. If it has to perform an operation that may deadlock, it performs in it an auxiliary process. If the operation deadlocks, it can kill the auxiliary process. It is documented in the manual:
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, ...
lsof $FILENAMEis faster. – grawity Jun 25 '12 at 20:45