#
272461 |
|
02-Oct-2014 |
gjb |
Copy stable/10@r272459 to releng/10.1 as part of the 10.1-RELEASE process.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
271001 |
|
03-Sep-2014 |
delphij |
MFC r270247: MFV r270195:
Illumos issue: 5045 use atomic_{inc,dec}_* instead of atomic_add_*
|
#
269342 |
|
31-Jul-2014 |
markj |
MFC r264434: DTrace's pid provider works by inserting breakpoint instructions at probe sites and installing a hook at the kernel's trap handler. The fasttrap code will emulate the overwritten instruction in some common cases, but otherwise copies it out into some scratch space in the traced process' address space and ensures that it's executed after returning from the trap.
In Solaris and illumos, this (per-thread) scratch space comes from some reserved space in TLS, accessible via the fs segment register. This approach is somewhat unappealing on FreeBSD since it would require some modifications to rtld and jemalloc (for static TLS) to ensure that TLS is executable, and would thus introduce dependencies on their implementation details. I think it would also be impossible to safely trace static binaries compiled without these modifications.
This change implements the functionality in a different way, by having fasttrap map pages into the target process' address space on demand. Each page is divided into 64-byte chunks for use by individual threads, and fasttrap's process descriptor struct has been extended to keep track of any scratch space allocated for the corresponding process.
With this change it's possible to trace all libc functions in a program, e.g. with
pid$target:libc.so.*::entry {@[probefunc] = count();}
Previously this would generally cause the victim process to crash, as tracing memcpy on amd64 requires the functionality described above.
|
#
268734 |
|
16-Jul-2014 |
pfg |
MFC r268097:
MFV r260708 4427 pid provider rejects probes with valid UTF-8 names
This make use of Solaris' u8_validate() which we happen to use since r185029 for ZFS. Use of u8_textprep.c required -Wno-cast-qual for powerpc.
Illumos Revision: 1444d846b126463eb1059a572ff114d51f7562e5
Reference: https://www.illumos.org/issues/4427
Obtained from: Illumos
|
#
268572 |
|
12-Jul-2014 |
pfg |
MFC r268130, r268224, r268230, r268231:
Various DTrace Merges from OpenSolaris/Illumos:
15-Sep-2008: 6735480 race between probe enabling and provider registration
20-Apr-2008: 6822482 DOF validation needs to handle loadable sections flagged as unloadable
22-Apr-2009: 6823388 DTrace ioctl handlers must validate all structure members
30-Jun-2009: 6851093 system drops to kmdb with anonymous dtrace probes + kmdb
Obtained from: OpenSolaris
|
#
262048 |
|
17-Feb-2014 |
avg |
MFC r258291: change the ioctl definition so that the fasttrap ioctl handler is responsible for copying in userland data
|
#
259483 |
|
16-Dec-2013 |
asomers |
MFC r258311
opensolaris/uts/common/dtrace/fasttrap.c Fix several problems that can cause panics on kldload and kldunload.
* kproc_create(fasttrap_pid_cleanup_cb, ...) gets called before fasttrap_provs.fth_table gets allocated. This can lead to a panic on module load, because fasttrap_pid_cleanup_cb references fasttrap_provs.fth_table. Move kproc_create down after the point that fasttrap_provs.fth_table gets allocated, and modify the error handling accordingly.
* dtrace_fasttrap_{fork,exec,exit} weren't getting NULLed until after fasttrap_provs.fth_table got freed. That caused panics on module unload because fasttrap_exec_exit calls fasttrap_provider_retire, which references fasttrap_provs.fth_table. NULL those function pointers earlier.
* There wasn't any code to destroy the fasttrap_{tpoints,provs,procs}.fth_table mutexes on module unload, leading to a resource leak when WITNESS is enabled. Destroy those mutexes during fasttrap_unload().
Sponsored by: Spectra Logic Corporation
|
#
256281 |
|
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
#
254198 |
|
10-Aug-2013 |
rpaulo |
fasttrap_fork(): unlock the processes before removing the tracepoints.
In the future, we'll need to come up with new proc_*() functions that accept locked processes. For now, this prevents postgresql + DTrace from crashing the system.
MFC after: 1 month
|
#
253079 |
|
09-Jul-2013 |
avg |
dtrace/fasttrap: install hook functions only after all data is initialized
Sponsored by: HybridCluster MFC after: 7 days
|
#
252493 |
|
01-Jul-2013 |
markj |
Be sure to destory the fasttrap cleanup mutex when unloading the fasttrap module. This should be MFCed with r250953.
|
#
250953 |
|
24-May-2013 |
markj |
The fasttrap provider cleans up probes asynchronously when a process with USDT probes exits. This was previously done with a callout; however, it is possible to sleep while holding the DTrace mutexes, so a panic will occur on INVARIANTS kernels if the callout handler can't immediately acquire one of these mutexes. This panic will be frequently triggered on systems where a USDT-enabled program (perl, for instance) is often run.
This revision changes the fasttrap cleanup mechanism so that a dedicated thread is used instead of a callout. The old behaviour is otherwise preserved.
Reviewed by: rpaulo MFC after: 1 month
|
#
248983 |
|
01-Apr-2013 |
pfg |
Dtrace: enablings on defunct providers prevent providers from unregistering
Merge change from illumos:
1368 enablings on defunct providers prevent providers from unregistering
We try to address some underlying differences between the Solaris and FreeBSD implementations: dtrace_attach() / dtrace_detach() are currently unimplemented in FreeBSD but the new code from illumos makes use of taskq so some adaptations were made to dtrace_open() and dtrace_close() to handle them appropriately.
Illumos Revision: r13430:8e6add739e38
Reference: https://www.illumos.org/issues/1368
Reviewed by: gnn Tested by: Fabian Keil Obtained from: Illumos MFC after: 3 weeks
|
#
247049 |
|
20-Feb-2013 |
gibbs |
Avoid panic when tearing down the DTrace pid provider for a process that has crashed.
sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c: In fasttrap_pid_disable(), we cannot PHOLD the proc structure for a process that no longer exists, but we still have other, fasttrap specific, state that must be cleaned up for probes that existed in the dead process. Instead of returning early if the process related to our probes isn't found, conditionalize the locking and carry on with a NULL proc pointer. The rest of the fasttrap code already understands that a NULL proc is possible and does the right things in this case.
Sponsored by: Spectra Logic Corporation Reviewed by: rpaulo, gnn MFC after: 1 week
|
#
212494 |
|
12-Sep-2010 |
rpaulo |
Revamp locking a bit. This fixes three problems: * processes now can't go away while we are inserting probes (fixes a panic) * if a trap happens, we won't be holding the process lock (fixes a hang) * fix a LOR between the process lock and the fasttrap bucket list lock
Thanks to kib for pointing some problems. Sponsored by: The FreeBSD Foundation
|
#
212465 |
|
11-Sep-2010 |
rpaulo |
Avoid a LOR (sleepable after non-sleepable) in fasttrap_tracepoint_enable().
Sponsored by: The FreeBSD Foundation
|
#
212357 |
|
09-Sep-2010 |
rpaulo |
Fix two bugs in DTrace: * when the process exits, remove the associated USDT probes * when the process forks, duplicate the USDT probes.
Sponsored by: The FreeBSD Foundation
|
#
211925 |
|
28-Aug-2010 |
rpaulo |
Replace a memory barrier with a mutex barrier.
Sponsored by: The FreeBSD Foundation
|
#
211745 |
|
24-Aug-2010 |
rpaulo |
Replace a pksignal() call with tdksignal().
Pointed out by: kib
|
#
211738 |
|
24-Aug-2010 |
rpaulo |
Port the fasttrap provider to FreeBSD. This provider is responsible for injecting debugging probes in the userland programs and is the basis for the pid provider and the usdt provider.
Sponsored by: The FreeBSD Foundation
|
#
184698 |
|
05-Nov-2008 |
rodrigc |
Merge latest DTrace changes from Perforce.
|
#
179198 |
|
22-May-2008 |
jb |
FreeBSD changes to vendor source.
|
#
179194 |
|
22-May-2008 |
jb |
This commit was generated by cvs2svn to compensate for changes in r179193, which included commits to RCS files with non-trunk default branches.
|
#
179193 |
|
22-May-2008 |
jb |
Vendor import of the src/sys OpenSolaris bits for DTrace.
|