#! /usr/bin/env stap global trace function trace(entry_p, extra) { if (tid() in trace) printf("%s%s%s %s\n", thread_indent (entry_p), (entry_p>0?"->":"<-"), ppfunc (), extra) } probe process("/usr/sbin/sshd").function("do_pam_setcred").call { if (pid() != target()) next if ($init != 1) next printf("Tracing %ld (%s)\n", pid(), execname()) trace[tid()] = 1 } probe process("/usr/sbin/sshd").function("do_pam_setcred").return { delete trace[tid()] } probe process("/usr/lib64/libpam.so.0").function("*").call { trace(1, $$parms) } probe process("/usr/lib64/security/pam_env.so").function("*").call { trace(1, $$parms) } probe process("/usr/lib64/security/pam_localuser.so").function("*").call { trace(1, $$parms) } probe process("/usr/lib64/security/pam_access.so").function("*").call { trace(1, $$parms) } probe process("/usr/lib64/security/pam_succeed_if.so").function("*").call { trace(1, $$parms) } probe process("/usr/lib64/security/pam_unix.so").function("*").call { trace(1, $$parms) } probe process("/usr/lib64/security/pam_radius_auth.so").function("*").call { trace(1, $$parms) } probe process("/usr/lib64/security/pam_sss.so").function("*").call { trace(1, $$parms) } probe process("/usr/lib64/libpam.so.0").function("*").return { trace(-1, $$return) } probe process("/usr/lib64/security/pam_env.so").function("*").return { trace(-1, $$return) } probe process("/usr/lib64/security/pam_localuser.so").function("*").return { trace(-1, $$return) } probe process("/usr/lib64/security/pam_access.so").function("*").return { trace(-1, $$return) } probe process("/usr/lib64/security/pam_succeed_if.so").function("*").return { trace(-1, $$return) } probe process("/usr/lib64/security/pam_unix.so").function("*").return { trace(-1, $$return) } probe process("/usr/lib64/security/pam_radius_auth.so").function("*").return { trace(-1, $$return) } probe process("/usr/lib64/security/pam_sss.so").function("*").return { trace(-1, $$return) }