Similar to[[ https://phabricator.kde.org/D1216 | D1216 ]] add procctl call to disable ptrace on FreeBSD.
We cannot do the procfs-lookup to check whether the process is already being run inside gdb -- however, on FreeBSD, we could use the P_TRACED flag of the process to figure this out:
sys/proc.h:#define P_TRACED 0x00800 /* Debugged process being traced. */
And the code would look something similar to
pid_t pid = getpid(); struct procstat *prstat = procstat_open_sysctl(); struct kinfo_proc *procinfo; unsigned int cnt; procinfo = procstat_getprocs(prstat, KERN_PROC_PID, pid, &cnt); long p_flags = procinfo->ki_flag; int p_traced = p_flags & P_TRACED; if (p_traced != P_TRACED) { mode = PROC_TRACE_CTL_DISABLE; procctl(P_PID, getpid(), PROC_TRACE_CTL, &mode); } procstat_freeprocs(prstat,procinfo); procstat_close(prstat);
But as wayland is [far] in the future on FreeBSD, and that check above is a bit lengthy, I think it is enough if we add it once it is needed.