Hi, The ps flags are split between thread and process. It would be useful if ddb shows both. I or them together in the ps overview and list them explicitly for the specific thread.
ddb> show all procs PID PPID PGRP UID S FLAGS WAIT COMMAND 18514 1 18514 0 3 0x40180 select sendmail ddb> show proc 0xd317a460 PROC (sendmail) pid=18514 stat=sleep flags process=40100<SUGID,SUGIDEXEC> proc=80<SINTR> I also synced the ddb bit names with the define names. ok? bluhm Index: kern/kern_proc.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/kern/kern_proc.c,v retrieving revision 1.51 diff -u -p -u -p -r1.51 kern_proc.c --- kern/kern_proc.c 8 Aug 2013 23:25:06 -0000 1.51 +++ kern/kern_proc.c 11 Aug 2013 03:29:35 -0000 @@ -395,8 +395,9 @@ proc_printit(struct proc *p, const char else pst = pstat[(int)p->p_stat - 1]; - (*pr)("PROC (%s) pid=%d stat=%s flags=%b\n", - p->p_comm, p->p_pid, pst, p->p_flag, P_BITS); + (*pr)("PROC (%s) pid=%d stat=%s\n", p->p_comm, p->p_pid, pst); + (*pr)(" flags process=%b proc=%b\n", + p->p_p->ps_flags, P_BITS, p->p_flag, P_BITS); (*pr)(" pri=%u, usrpri=%u, nice=%d\n", p->p_priority, p->p_usrpri, p->p_p->ps_nice); (*pr)(" forw=%p, list=%p,%p\n", @@ -474,7 +475,8 @@ db_show_all_procs(db_expr_t addr, int ha "%-12.12s %-16s\n", ppr ? ppr->ps_pid : -1, pr->ps_pgrp ? pr->ps_pgrp->pg_id : -1, - pr->ps_cred->p_ruid, p->p_stat, p->p_flag, + pr->ps_cred->p_ruid, p->p_stat, + p->p_flag | p->p_p->ps_flags, (p->p_wchan && p->p_wmesg) ? p->p_wmesg : "", p->p_comm); break; Index: sys/proc.h =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sys/sys/proc.h,v retrieving revision 1.168 diff -u -p -u -p -r1.168 proc.h --- sys/proc.h 6 Jun 2013 13:09:37 -0000 1.168 +++ sys/proc.h 11 Aug 2013 02:51:13 -0000 @@ -412,12 +412,14 @@ struct proc { #endif #define P_BITS \ - ("\20\02CONTROLT\03INMEM\04SIGPAUSE\05PPWAIT\06PROFIL\07SELECT" \ - "\010SINTR\011SUGID\012SYSTEM\013TIMEOUT\014TRACED\015WAITED\016WEXIT" \ - "\017EXEC\020PWEUPC\021ISPWAIT\022COREDUMPING\023SUGIDEXEC\024SUSPSINGLE" \ + ("\20\01INKTR\02CONTROLT\03INMEM\04SIGSUSPEND" \ + "\05PPWAIT\06PROFIL\07SELECT\010SINTR" \ + "\011SUGID\012SYSTEM\013TIMEOUT\014TRACED" \ + "\015WAITED\016WEXIT\017EXEC\020OWEUPC" \ + "\021ISPWAIT\022COREDUMP\023SUGIDEXEC\024SUSPSINGLE" \ "\025NOZOMBIE\026INEXEC\027SYSTRACE\030CONTINUED" \ - "\031SINGLEEXIT\032SINGLEUNWIND" \ - "\033THREAD\034SUSPSIG\035SOFTDEP\036STOPPED\037CPUPEG") + "\031SINGLEEXIT\032SINGLEUNWIND\033THREAD\034SUSPSIG" \ + "\035SOFTDEP\036STOPPED\037CPUPEG\040EXITING") /* Macro to compute the exit signal to be delivered. */ #define P_EXITSIG(p) \