Disce aut Discede
    
  
      Add post
      
        
        
        
      
    
  Use this script to find dead processes due to a futex call.
Another way would be using: ps -eo pid,wchan:32,command | grep "[f]utex"
And yet another way would be by using lslocks
#!/bin/bash
test ! $UID -eq 0 && echo -e "WARNING: Not running as root, only processes for this user are being scanned\n" >&2
;
pids=$(ps -u $UID -opid --no-headers)
sub_pid=$(($$+1))
for pid in $pids; do
        # subshell already exited before script done
        # so cat /proc/  will get error
        # cat: /proc/xxxxx/syscall: No such file or directory
        if [ "$sub_pid" != "$pid" ]; then
                cat /proc/$pid/syscall |
                awk "{if (\$1 == 202 && \$3 == \"0x0\") {
                        print $pid
                }}";
        fi
        # $1 is the syscall, we compare to 202 which is the futex call
        # See: /usr/include/asm/unistd.h
        # $2 is the 1st param, $3 is the 2nd param, etc
        # We compare the second param to 0x0 which is FUTEX_WAIT
        # See: /usr/include/linux/futex.h
done