#
310585 |
|
26-Dec-2016 |
kib |
MFC r309886: When a zombie gets reparented due to the parent exit, send SIGCHLD to the reaper.
|
#
307065 |
|
11-Oct-2016 |
jilles |
wait: Do not copyout uninitialized status/rusage/wrusage.
If wait4() or wait6() return 0 because of WNOHANG, the status, rusage and wrusage information should not be returned.
PR: 212048 Reported by: Casey Lucas
|
#
304190 |
|
15-Aug-2016 |
kib |
MFC r303423: Force SIGSTOP to be the first signal reported after the attach.
|
#
304188 |
|
15-Aug-2016 |
jhb |
MFC 302900,302902,302921,303461,304009: Add a mask of optional ptrace() events.
302900: Add a test for user signal delivery.
This test verifies we get the correct ptrace event details when a signal is posted to a traced process from userland.
302902: Add a mask of optional ptrace() events.
ptrace() now stores a mask of optional events in p_ptevents. Currently this mask is a single integer, but it can be expanded into an array of integers in the future.
Two new ptrace requests can be used to manipulate the event mask: PT_GET_EVENT_MASK fetches the current event mask and PT_SET_EVENT_MASK sets the current event mask.
The current set of events include: - PTRACE_EXEC: trace calls to execve(). - PTRACE_SCE: trace system call entries. - PTRACE_SCX: trace syscam call exits. - PTRACE_FORK: trace forks and auto-attach to new child processes. - PTRACE_LWP: trace LWP events.
The S_PT_SCX and S_PT_SCE events in the procfs p_stops flags have been replaced by PTRACE_SCE and PTRACE_SCX. PTRACE_FORK replaces P_FOLLOW_FORK and PTRACE_LWP replaces P2_LWP_EVENTS.
The PT_FOLLOW_FORK and PT_LWP_EVENTS ptrace requests remain for compatibility but now simply toggle corresponding flags in the event mask.
While here, document that PT_SYSCALL, PT_TO_SCE, and PT_TO_SCX both modify the event mask and continue the traced process.
302921: Rename PTRACE_SYSCALL to LINUX_PTRACE_SYSCALL.
303461: Note that not all optional ptrace events use SIGTRAP.
New child processes attached due to PTRACE_FORK use SIGSTOP instead of SIGTRAP. All other ptrace events use SIGTRAP.
304009: Remove description of P_FOLLOWFORK as this flag was removed.
|
#
302237 |
|
27-Jun-2016 |
bdrewery |
MFC r292384:
Fix style issues around existing SDT probes.
** Changes to sys/netinet/in_kdtrace.c and sys/netinet/in_kdtrace.h skipped.
|
#
302229 |
|
27-Jun-2016 |
bdrewery |
MFC r280130:
cred: add proc_set_cred helper
|
#
293473 |
|
09-Jan-2016 |
dchagin |
To facillitate an upcoming Linuxulator merging partially MFC r275121 (by kib). Only merge the syntax changes from r275121, PROC_*LOCK() macros still lock the same proc spinlock.
The process spin lock currently has the following distinct uses:
- Threads lifetime cycle, in particular, counting of the threads in the process, and interlocking with process mutex and thread lock. The main reason of this is that turnstile locks are after thread locks, so you e.g. cannot unlock blockable mutex (think process mutex) while owning thread lock.
- Virtual and profiling itimers, since the timers activation is done from the clock interrupt context. Replace the p_slock by p_itimmtx and PROC_ITIMLOCK().
- Profiling code (profil(2)), for similar reason. Replace the p_slock by p_profmtx and PROC_PROFLOCK().
- Resource usage accounting. Need for the spinlock there is subtle, my understanding is that spinlock blocks context switching for the current thread, which prevents td_runtime and similar fields from changing (updates are done at the mi_switch()). Replace the p_slock by p_statmtx and PROC_STATLOCK().
Discussed with: kib
|
#
289798 |
|
23-Oct-2015 |
avg |
MFC r288336: save some bytes by using more concise SDT_PROBE<n>
|
#
289431 |
|
16-Oct-2015 |
kib |
MFC r289026: Enforce the maxproc limitation before allocating struct proc.
In collaboration with: pho
|
#
287604 |
|
09-Sep-2015 |
jhb |
MFC 283281,283282,283562,283647,283836,284000,286158: Various fixes to orphan handling which also fix issues with following forks.
283281: Always set p_oppid when attaching to an existing process via procfs tracing. This matches the behavior of ptrace(PT_ATTACH). Also, the procfs detach request assumes p_oppid is always set.
283282: Only reparent a traced process to its old parent if the tracing process is not the old parent. Otherwise, proc_reap() will leave the zombie in place resulting in the process' status being returned twice to its parent.
Add test cases for PT_TRACE_ME and PT_ATTACH which are fixed by this change.
283562: Do not allow a process to reap an orphan (a child currently being traced by another process such as a debugger). The parent process does need to check for matching orphan pids to avoid returning ECHILD if an orphan has exited, but it should not return the exited status for the child until after the debugger has detached from the orphan process either explicitly or implicitly via wait().
Add two tests for for this case: one where the debugger is the direct child (thus the parent has a non-empty children list) and one where the debugger is not a direct child (so the only "child" of the parent is the orphan).
283647: Tweak the description of when waitpid() doesn't return any status for a non-blocking wait to avoid the word "empty".
283836: Consistently only use one end of the pipe in the parent and debugger processes and do not rely on EOF due to a close() in the debugger.
284000: Add a CHILD_REQUIRE macro similar to ATF_REQUIRE for use in child processes of the main test process.
286158: Clear P_TRACED before reparenting a detached process back to its original parent. Otherwise the debugee will be set as an orphan of the debugger.
Add tests for tracing forks via PT_FOLLOW_FORK.
|
#
284665 |
|
21-Jun-2015 |
trasz |
MFC r282213:
Add kern.racct.enable tunable and RACCT_DISABLED config option. The point of this is to be able to add RACCT (with RACCT_DISABLED) to GENERIC, to avoid having to rebuild the kernel to use rctl(8).
MFC r282901:
Build GENERIC with RACCT/RCTL support by default. Note that it still needs to be enabled by adding "kern.racct.enable=1" to /boot/loader.conf.
Note those two are MFC-ed together, because the latter one changes the name of RACCT_DISABLED option to RACCT_DEFAULT_TO_DISABLED. Should have committed the renaming separately...
Relnotes: yes Sponsored by: The FreeBSD Foundation
|
#
284343 |
|
13-Jun-2015 |
jhb |
MFC 283546: Add KTR tracing for some MI ptrace events.
|
#
284199 |
|
10-Jun-2015 |
kib |
MFC r283600: Perform SU cleanup in the AST handler. Do not sleep waiting for SU cleanup while owning vnode lock.
On MFC, for KBI stability, td_su member was moved to the end of the struct thread.
|
#
284021 |
|
05-Jun-2015 |
kib |
MFC r283735: Remove several write-only variables.
|
#
280309 |
|
20-Mar-2015 |
kib |
MFC r279390: Change umtx_lock to be the sleepable mutex.
|
#
280258 |
|
19-Mar-2015 |
rwatson |
Merge r263233 from HEAD to stable/10:
Update kernel inclusions of capability.h to use capsicum.h instead; some further refinement is required as some device drivers intended to be portable over FreeBSD versions rely on __FreeBSD_version to decide whether to include capability.h.
Sponsored by: Google, Inc.
|
#
276686 |
|
05-Jan-2015 |
kib |
Merge reaper facility.
MFC r270443 (by mjg): Properly reparent traced processes when the tracer dies.
MFC r273452 (by mjg): Plug unnecessary PRS_NEW check in kern_procctl.
MFC 275800: Add a facility for non-init process to declare itself the reaper of the orphaned descendants.
MFC r275821: Add missed break.
MFC r275846 (by mckusick): Add some additional clarification and fix a few gammer nits.
MFC r275847 (by bdrewery): Bump Dd for r275846.
|
#
276272 |
|
26-Dec-2014 |
kib |
MFC r275745: Add facility to stop all userspace processes.
MFC r275753: Fix gcc build.
MFC r275820: Add missed break.
|
#
275793 |
|
15-Dec-2014 |
kib |
MFC r275615: When process is exiting, check for suspension regardless of multithreaded status of the process.
|
#
271423 |
|
11-Sep-2014 |
kib |
MFC r270993 (by mjg): Fix up proc_realparent to always return correct process.
Approved by: re (delphij)
|
#
270264 |
|
21-Aug-2014 |
kib |
MFC r269656: Implement and use proc_realparent(9).
MFC r270024 (by markj): Correct the order of arguments passed to LIST_INSERT_AFTER().
For merge, the p_treeflag member of struct proc was moved to the end of the structure, to keep KBI intact.
|
#
270090 |
|
17-Aug-2014 |
mjg |
MFC r268514:
Eliminate plim and vtmp local vars in exit1.
No functional changes.
|
#
270089 |
|
17-Aug-2014 |
mjg |
MFC r259407:
proc exit: don't take PROC_LOCK while freeing rlimits
Code wishing to check rlimits of some process should check whether it is exiting first, which current consumers do.
|
#
260817 |
|
17-Jan-2014 |
avg |
MFC r258622: dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE
|
#
260164 |
|
01-Jan-2014 |
jilles |
MFC r258281: Fix siginfo_t.si_status for wait6/waitid/SIGCHLD.
Per POSIX, si_status should contain the value passed to exit() for si_code==CLD_EXITED and the signal number for other si_code. This was incorrect for CLD_EXITED and CLD_DUMPED.
This is still not fully POSIX-compliant (Austin group issue #594 says that the full value passed to exit() shall be returned via si_status, not just the low 8 bits) but is sufficient for a si_status-related test in libnih (upstart, Debian/kFreeBSD).
PR: kern/184002
|
#
287604 |
|
09-Sep-2015 |
jhb |
MFC 283281,283282,283562,283647,283836,284000,286158: Various fixes to orphan handling which also fix issues with following forks.
283281: Always set p_oppid when attaching to an existing process via procfs tracing. This matches the behavior of ptrace(PT_ATTACH). Also, the procfs detach request assumes p_oppid is always set.
283282: Only reparent a traced process to its old parent if the tracing process is not the old parent. Otherwise, proc_reap() will leave the zombie in place resulting in the process' status being returned twice to its parent.
Add test cases for PT_TRACE_ME and PT_ATTACH which are fixed by this change.
283562: Do not allow a process to reap an orphan (a child currently being traced by another process such as a debugger). The parent process does need to check for matching orphan pids to avoid returning ECHILD if an orphan has exited, but it should not return the exited status for the child until after the debugger has detached from the orphan process either explicitly or implicitly via wait().
Add two tests for for this case: one where the debugger is the direct child (thus the parent has a non-empty children list) and one where the debugger is not a direct child (so the only "child" of the parent is the orphan).
283647: Tweak the description of when waitpid() doesn't return any status for a non-blocking wait to avoid the word "empty".
283836: Consistently only use one end of the pipe in the parent and debugger processes and do not rely on EOF due to a close() in the debugger.
284000: Add a CHILD_REQUIRE macro similar to ATF_REQUIRE for use in child processes of the main test process.
286158: Clear P_TRACED before reparenting a detached process back to its original parent. Otherwise the debugee will be set as an orphan of the debugger.
Add tests for tracing forks via PT_FOLLOW_FORK.
|
#
284665 |
|
21-Jun-2015 |
trasz |
MFC r282213:
Add kern.racct.enable tunable and RACCT_DISABLED config option. The point of this is to be able to add RACCT (with RACCT_DISABLED) to GENERIC, to avoid having to rebuild the kernel to use rctl(8).
MFC r282901:
Build GENERIC with RACCT/RCTL support by default. Note that it still needs to be enabled by adding "kern.racct.enable=1" to /boot/loader.conf.
Note those two are MFC-ed together, because the latter one changes the name of RACCT_DISABLED option to RACCT_DEFAULT_TO_DISABLED. Should have committed the renaming separately...
Relnotes: yes Sponsored by: The FreeBSD Foundation
|
#
284343 |
|
13-Jun-2015 |
jhb |
MFC 283546: Add KTR tracing for some MI ptrace events.
|
#
284199 |
|
10-Jun-2015 |
kib |
MFC r283600: Perform SU cleanup in the AST handler. Do not sleep waiting for SU cleanup while owning vnode lock.
On MFC, for KBI stability, td_su member was moved to the end of the struct thread.
|
#
284021 |
|
05-Jun-2015 |
kib |
MFC r283735: Remove several write-only variables.
|
#
280309 |
|
20-Mar-2015 |
kib |
MFC r279390: Change umtx_lock to be the sleepable mutex.
|
#
280258 |
|
19-Mar-2015 |
rwatson |
Merge r263233 from HEAD to stable/10:
Update kernel inclusions of capability.h to use capsicum.h instead; some further refinement is required as some device drivers intended to be portable over FreeBSD versions rely on __FreeBSD_version to decide whether to include capability.h.
Sponsored by: Google, Inc.
|
#
276686 |
|
05-Jan-2015 |
kib |
Merge reaper facility.
MFC r270443 (by mjg): Properly reparent traced processes when the tracer dies.
MFC r273452 (by mjg): Plug unnecessary PRS_NEW check in kern_procctl.
MFC 275800: Add a facility for non-init process to declare itself the reaper of the orphaned descendants.
MFC r275821: Add missed break.
MFC r275846 (by mckusick): Add some additional clarification and fix a few gammer nits.
MFC r275847 (by bdrewery): Bump Dd for r275846.
|
#
276272 |
|
26-Dec-2014 |
kib |
MFC r275745: Add facility to stop all userspace processes.
MFC r275753: Fix gcc build.
MFC r275820: Add missed break.
|
#
275793 |
|
15-Dec-2014 |
kib |
MFC r275615: When process is exiting, check for suspension regardless of multithreaded status of the process.
|
#
271423 |
|
11-Sep-2014 |
kib |
MFC r270993 (by mjg): Fix up proc_realparent to always return correct process.
Approved by: re (delphij)
|
#
270264 |
|
21-Aug-2014 |
kib |
MFC r269656: Implement and use proc_realparent(9).
MFC r270024 (by markj): Correct the order of arguments passed to LIST_INSERT_AFTER().
For merge, the p_treeflag member of struct proc was moved to the end of the structure, to keep KBI intact.
|
#
270090 |
|
17-Aug-2014 |
mjg |
MFC r268514:
Eliminate plim and vtmp local vars in exit1.
No functional changes.
|
#
270089 |
|
17-Aug-2014 |
mjg |
MFC r259407:
proc exit: don't take PROC_LOCK while freeing rlimits
Code wishing to check rlimits of some process should check whether it is exiting first, which current consumers do.
|
#
260817 |
|
17-Jan-2014 |
avg |
MFC r258622: dtrace sdt: remove the ugly sname parameter of SDT_PROBE_DEFINE
|
#
260164 |
|
01-Jan-2014 |
jilles |
MFC r258281: Fix siginfo_t.si_status for wait6/waitid/SIGCHLD.
Per POSIX, si_status should contain the value passed to exit() for si_code==CLD_EXITED and the signal number for other si_code. This was incorrect for CLD_EXITED and CLD_DUMPED.
This is still not fully POSIX-compliant (Austin group issue #594 says that the full value passed to exit() shall be returned via si_status, not just the low 8 bits) but is sufficient for a si_status-related test in libnih (upstart, Debian/kFreeBSD).
PR: kern/184002
|