#
365864 |
|
17-Sep-2020 |
brooks |
MFC r365284:
Always report ENOSYS in init
While rare, encountering an unimplemented system call early in init is catastrophic and difficult to debug. Even after a SIGSYS handler is registered, such configurations are problematic. As such, always report such events for pid 1 (following kern.lognosys if non-zero).
Reviewed by: kevans, imp Obtained from: CheriBSD (plus suggestions from kevans) Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D26288
|
#
355386 |
|
04-Dec-2019 |
kib |
MFC r355146: Ease the life of PT_TO_SCE/PT_TO_SCX users when debuggee sleeps in sigsuspend(2)/sig{timed,}wait(2).
|
#
353789 |
|
21-Oct-2019 |
kevans |
MFC r352711-r352712: Address posix_spawn(3) signal issues
r352711: rfork(2): add RFSPAWN flag
When RFSPAWN is passed, rfork exhibits vfork(2) semantics but also resets signal handlers in the child during creation to avoid a point of corruption of parent state from the child.
This flag will be used by posix_spawn(3) to handle potential signal issues.
Reviewed by: jilles, kib Differential Revision: https://reviews.freebsd.org/D19058
r352712: posix_spawn(3): handle potential signal issues with vfork
Described in [1], signal handlers running in a vfork child have opportunities to corrupt the parent's state. Address this by adding a new rfork(2) flag, RFSPAWN, that has vfork(2) semantics but also resets signal handlers in the child during creation.
x86 uses rfork_thread(3) instead of a direct rfork(2) because rfork with RFMEM/RFSPAWN cannot work when the return address is stored on the stack -- further information about this problem is described under RFMEM in the rfork(2) man page.
Addressing this has been identified as a prerequisite to using posix_spawn in subprocess on FreeBSD [2].
[1] https://ewontfix.com/7/ [2] https://bugs.python.org/issue35823
|
#
350357 |
|
26-Jul-2019 |
kib |
MFC r348360: Do not go into sleep in sleepq_catch_signals() when SIGSTOP from PT_ATTACH was consumed.
PR: 231445
|
#
349689 |
|
03-Jul-2019 |
kib |
MFC r349320, r349324: coredump: avoid writing to core files not owned by the effective user.
PR: 68905 admbugs: 358
|
#
343084 |
|
16-Jan-2019 |
kp |
MFC r342591,342599:
Make kernel print jail ID when logging a process exit
Kernel now includes jail ID when logging a process exit. jid is 0 for unjailed processes.
Submitted by: Marie Helene Kvello-Aune <freebsd@mhka.no> Relnotes: yes Sponsored by: Modirum MDPay
|
#
342704 |
|
02-Jan-2019 |
jhb |
MFC 341800: Don't report stale signal information in ptrace_lwpinfo.
Once a signal's siginfo was copied to 'td_si' as part of the signal exchange in issignal(), it was never cleared. This caused future thread events that are reported as SIGTRAP events without signal information to report the stale siginfo in 'td_si'. For example, if a debugger created a new process and used SIGSTOP to stop it after PT_ATTACH, future system call entry / exit events would set PL_FLAG_SI with the SIGSTOP siginfo in pl_siginfo. This broke 'catch syscall' in current versions of gdb as it assumed PL_FLAG_SI with SIGTRAP indicates a breakpoint or single step trap.
|
#
341476 |
|
04-Dec-2018 |
kib |
MFC r341094: Improve sigonstack().
|
#
340237 |
|
07-Nov-2018 |
oshogbo |
MFC r335844:
core(5): overwrite the oldest core dump
The '%I' format in the kern.corefile sysctl limits the number of core files that a process can generate to the number stored in the debug.ncores sysctl. The '%I' format is replaced by the single digit index. Previously, if all indexes were taken the kernel would overwrite only a core file with the highest index in a filename. Currently the system will create a new core file if there is a free index or if all slots are taken it will overwrite the oldest one.
Reviewed by: kib(code), bcr (updating) Differential Revision: https://reviews.freebsd.org/D15991 Differential Revision: https://reviews.freebsd.org/D16084
|
#
338012 |
|
18-Aug-2018 |
kib |
MFC r337330: Swap in WKILLED processes.
|
#
335820 |
|
30-Jun-2018 |
kib |
MFC r335504: fork: avoid endless wait with PTRACE_FORK and RFSTOPPED.
|
#
331922 |
|
03-Apr-2018 |
kib |
MFC r331640: Fix several leaks of kernel stack data through paddings.
|
#
331722 |
|
29-Mar-2018 |
eadler |
Revert r330897:
This was intended to be a non-functional change. It wasn't. The commit message was thus wrong. In addition it broke arm, and merged crypto related code.
Revert with prejudice.
This revert skips files touched in r316370 since that commit was since MFCed. This revert also skips files that require $FreeBSD$ property changes.
Thank you to those who helped me get out of this mess including but not limited to gonzo, kevans, rgrimes.
Requested by: gjb (re)
|
#
331643 |
|
27-Mar-2018 |
dim |
MFC r314568 (by emaste):
kern_sig.c: ANSIfy and remove archaic register keyword
Sponsored by: The FreeBSD Foundation
MFC r318389 (by emaste):
Remove register keyword from sys/ and ANSIfy prototypes
A long long time ago the register keyword told the compiler to store the corresponding variable in a CPU register, but it is not relevant for any compiler used in the FreeBSD world today.
ANSIfy related prototypes while here.
Reviewed by: cem, jhb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D10193
|
#
330897 |
|
14-Mar-2018 |
eadler |
Partial merge of the SPDX changes
These changes are incomplete but are making it difficult to determine what other changes can/should be merged.
No objections from: pfg
|
#
324935 |
|
23-Oct-2017 |
kib |
MFC r324671: Re-evaluate thread' signal mask after ptracestop().
|
#
324932 |
|
23-Oct-2017 |
bdrewery |
MFC r316286:
Add support for capturing 'struct ptrace_lwpinfo' for signals resulting in a process dumping core in the corefile.
Direct stable changed: Padding added to struct thread and td_si added to end with explicit bzeroing when forking/initializing a thread to preserve KBI.
|
#
324918 |
|
23-Oct-2017 |
kib |
MFC r324670: Improve assertion that an ignored or blocked signal is not delivered.
|
#
324917 |
|
23-Oct-2017 |
kib |
MFC r324669: Style.
|
#
321978 |
|
03-Aug-2017 |
kib |
MFC r321627: Make it possible to request nosys logging to console.
|
#
321344 |
|
21-Jul-2017 |
kib |
MFC r319874: Print unimplemented syscall number to the ctty on SIGSYS, if enabled by the knob kern.lognosys.
|
#
318845 |
|
25-May-2017 |
markj |
MFC r318191: Let ptracestop() suspend threads sleeping in an SBDRY section.
|
#
318528 |
|
19-May-2017 |
kib |
MFC r318243: Do not wake up sleeping thread in reschedule_signals() if the signal is blocked. The spurious wakeup might result in spurious EINTR.
PR: 219228
|
#
318244 |
|
12-May-2017 |
brooks |
MFC r317845-r317846
r317845: Provide a freebsd32 implementation of sigqueue()
The previous misuse of sys_sigqueue() was sending random register or stack garbage to 64-bit targets. The freebsd32 implementation preserves the sival_int member of value when signaling a 64-bit process.
Document the mixed ABI implementation of union sigval and the incompability of sival_ptr with pointer integrity schemes.
Reviewed by: kib, wblock Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D10605
r317846: Regen post r317845.
MFC with: r317845 Sponsored by: DARPA, AFRL
|
#
315963 |
|
25-Mar-2017 |
badger |
MFC r315412, r314852:
r315412: Don't clear p_ptevents on normal SIGKILL delivery
The ptrace() user has the option of discarding the signal. In such a case, p_ptevents should not be modified. If the ptrace() user decides to send a SIGKILL, ptevents will be cleared in ptracestop(). procfs events do not have the capability to discard the signal, so continue to clear the mask in that case.
r314852: don't stop in issignal() if P_SINGLE_EXIT is set
Suppose a traced process is stopped in ptracestop() due to receipt of a SIGSTOP signal, and is awaiting orders from the tracing process on how to handle the signal. Before sending any such orders, the tracing process exits. This should kill the traced process. But suppose a second thread handles the SIGKILL and proceeds to exit1(), calling thread_single(). The first thread will now awaken and will have a chance to check once more if it should go to sleep due to the SIGSTOP. It must not sleep after P_SINGLE_EXIT has been set; this would prevent the SIGKILL from taking effect, leaving a stopped orphan behind after the tracing process dies.
Also add new tests for this condition.
Sponsored by: Dell EMC
|
#
315949 |
|
25-Mar-2017 |
badger |
MFC r313992, r314075, r314118, r315484:
r315484: ptrace_test: eliminate assumption about thread scheduling
A couple of the ptrace tests make assumptions about which thread in a multithreaded process will run after a halt. This makes the tests less portable across branches, and susceptible to future breakage. Instead, twiddle thread scheduling and priorities to match the tests' expectation.
r314118: Actually fix buildworlds other than i386/amd64/sparc64 after r313992
Disable offending test for platforms without a userspace visible breakpoint().
r314075: Fix world build for archs where __builtin_debugtrap() does not work.
The offending code was introduced in r313992.
r313992: Defer ptracestop() signals that cannot be delivered immediately
When a thread is stopped in ptracestop(), the ptrace(2) user may request a signal be delivered upon resumption of the thread. Heretofore, those signals were discarded unless ptracestop()'s caller was issignal(). Fix this by modifying ptracestop() to queue up signals requested by the ptrace user that will be delivered when possible. Take special care when the signal is SIGKILL (usually generated from a PT_KILL request); no new stop events should be triggered after a PT_KILL.
Add a number of tests for the new functionality. Several tests were authored by jhb.
PR: 212607 Sponsored by: Dell EMC
|
#
315893 |
|
24-Mar-2017 |
kib |
MFC r315453: When clearing altsigstack settings on exec, do it to the right thread.
|
#
304614 |
|
22-Aug-2016 |
markj |
MFC r304440, r304487: Fix some handling of P2_PTRACE_FSTP.
|
#
304189 |
|
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.
|