| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
* NEWS: Note this change.
* hash.cxx (find_script_hash): Add s.skip_badvars into hash.
* translate.cxx (translate_pass): Emit STP_SKIP_BADVARS.
* runtime/loc2c-runtime.h (DEREF_FAULT, STORE_DEREF_FAULT): Provide
dummy implementation if STP_SKIP_BADVARS.
|
|
|
|
|
|
| |
utrace_control"
This reverts commit 489afa702639fd10e9756795bd516d939766247d.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As Roland pointed out in his Mar 31 reply to a posting of mine (subject:
Re: Testing insn.block probe point uncovers possible utrace bug),
utrace_control() documents that the caller must ensure that
arch_has_single_step and arch_has_block_step are defined before trying
to use those step modes. The attached patch addresses that issue. I've
tested this patch on x86_64 arch, and a block step test runs
successfully, since block step is supported on that arch. Testing on
ppc64 arch, the test fails as expected (since block step is not
supported on ppc64 yet) with:
"ERROR: callback for <pid> failed: 1"
which is sent to stdderr and
"usr_itrace_init: arch does not support block step mode"
which is sent to the system log.
This isn't the most user-friendly way of surfacing an error. Perhaps
the stap runtime could have a set of defined return codes that would be
mapped to strings so the user can get an idea of what the error is
without looking in the system log. But that's a side issue, of course.
Regards,
-Maynard
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
* runtime/map-gen.c, pmap-gen.c: Hand-expand arity 6..9 cases throughout.
* testsuite/buildok/thirty.stp: New test.
* testsuite/buildko/two.stp: New test.
An Alan Smithee patch.
|
| |
| |
| |
| |
| |
| | |
* runtime/autoconf-x86-gs.c : New file.
* testsuite/systemtap.base/x86_gs.exp : New test case.
* testsuite/systemtap.base/x86_gs.stp : Ditto.
|
| |
| |
| |
| |
| |
| | |
We had our own implementations of these which were triggering gcc
bug38480 in some particular cases. It's easier for us to use the
kernel's strlcpy and strlcat anyway, which avoids the bug.
|
| |
| |
| |
| |
| | |
* runtime/staprun/staprun_funcs.c (check_path): Save fully
canonicalized and checked module path for later loading.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fix caused a regression on fedora.
stap -ve 'probe process("/bin/ls").function("main") { log(pp()); }
probe process("/lib64/libc.so.6").function("*") { log(pp()); }' \
-c /bin/ls
hung (with stapio & ls processes spinning) upon startup.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
2009-03-24 David Smith <dsmith@redhat.com>
PR 9989.
* runtime/task_finder.c (stap_utrace_detach): Ignores
-EINPROGRESS.
(stap_utrace_detach_ops): Ignores errors from
stap_utrace_detach(), so that other tasks will get detached from
this utrace engine.
(__stp_utrace_attach): Better error handling from
utrace_barrier().
(__stp_utrace_task_finder_target_quiesce): Ditto.
|
|\| |
|
| |
| |
| |
| |
| |
| | |
Adjusted all headers that #include <linux/utrace.h> to follow with:
/* PR9974: Adapt to struct renaming. */
|
| |
| |
| |
| |
| | |
Add strftime subset format support for output file name to systemtap.
This format will be evaluated when opening a new output file.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add file-switching option(-S size[,N]) to stapio. This option has two
arguments, 'size' and 'N', and requires -o option.
- When the size of output file exceeds specified 'size'MB, staprun switches
output file to the next file. For this purpose, all output file has a serial
number as a suffix only when user specifies this option.
- Using this option in bulk mode, the output file name will be
'FILE_cpuX.SERIAL'.
- When the number of files exceeds specified N, staprun removes the oldest
file. This argument can be omitted.
|
| |
| |
| |
| |
| |
| |
| | |
Add '-D'(daemon mode) option to staprun/stapio for daemon mode.
In this mode, stapio shows just its pid and detachs from console.
Since it has no stdio, this mode requires -o option. stapio will
exit when it receives SIGTERM or detects some error.
|
| |
| |
| |
| |
| | |
Add an interface (eprintf) to output error messages to syslogd,
because staprun has no stderr after detaching from console.
|
| |
| |
| |
| |
| |
| | |
* tapsets.cxx (utrace_derived_probe_group::emit_module_decls):
Remove output task finder vma callback _stp_tf_vm_cb.
* runtime/sym.c (_stp_tf_vm_cb): And add it here.
|
|\| |
|
| |
| |
| |
| |
| |
| |
| | |
Add map_p argument to __stp_call_vm_callbacks_with_vma to well
tune the vma callback.
Signed-off-by: Wenji Huang <wenji.huang@oracle.com>
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
* runtime/task_finder.c (__stp_tf_vm_cb): Removed.
* tapsets.cxx (utrace_derived_probe_group::emit_module_decls):
Output task finder vma callback and hook it.
|
| |
| |
| |
| | |
* runtime/sym.c (_stp_mod_sec_lookup): Initialize user and vm_start.
|
| |
| |
| |
| |
| |
| |
| |
| | |
* runtime/task_finder_vma.c (__stp_tf_get_vma_entry_addr): Deleted.
(struct __stp_tf_vma_entry): Replace module by user void* field.
(stap_add_vma_map_info): Take a void *user arg.
(stap_find_vma_map_info): Take a void **user arg.
* runtime/sym.c (_stp_mod_sec_lookup): Use stap_find_vma_map_info.
|
| |
| |
| |
| |
| | |
* runtime/task_finder_vma.c: Replace all mutex calls with appropriate
read or write (un)lock calls.
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
All callers of __stp_tf_get_vma_map_entry_internal lock and unlock
the mutex correctly themselves in all cases. This unlock would trigger
a double unlock.
* runtime/task_finder_vma.c (__stp_tf_get_vma_map_entry_internal):
Don't mutex_unlock(&__stp_tf_vma_mutex).
|
|\|
| |
| |
| |
| | |
Resolved conflicts:
runtime/task_finder.c: name vs path.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When given directly by the user through -d or in case of the kernel
name and path might differ. path should be used for matching.
* runtime/sym.h (_stp_module): Add path field.
* runtime/task_finder.c (__stp_tf_vm_cb): Use module path to compare vm_path.
* translate.cxx (dump_unwindsyms): Output canonical path.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In some configurations, GCC was warning about a possible use of _v in
the deref macros. I could not reproduce the error, but the only case
where _v is not written is if lookup_bad_addr rejects the address, in
which case we will hit DEREF_FAULT and _v won't be used.
Now we're priming _v=0 anyway, so GCC has no right to complain...
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* tapsets.cxx (utrace_derived_probe_group::emit_module_decls):
Always emit vm callback probe for __stp_tf_vm_cb.
* runtime/task_finder.c (__stp_tf_vm_cb): Always expose, move _stp_dbug
statements under ifdef DEBUG_TASK_FINDER_VMA. Find and record
corresponding module when vm_path not NULL.
* runtime/task_finder_vma.c (struct __stp_tf_vma_entry): Add _stp_module.
(stap_add_vma_map_info): Add _stp_module argument and assign.
(__stp_tf_get_vma_entry_addr): New static function to get
the __stp_tf_vma_entry given an address.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
With most of the implementations, kread/kwrite call deref/store_deref,
and so it makes sense to have lookup_bad_addr in the latter as an
underlying address check.
However, in the STAPCONF_PROBE_KERNEL case that uses probe_kernel_read
and probe_kernel_write, the roles are reversed, so lookup_bad_addr needs
to be in kread/kwrite.
Also note that __deref_bad and __store_deref_bad should only be used in
cases that can be determined at compile time. These turn into invalid
symbols which prevent the module from loading. (They might be better
replaced with compile-time assertions.)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The kernel lockdep checking found a possible deadlock if a forced rmmod
tried to destroy _stp_work_queue at the same time that the work queue
was unregistering tracepoints. An unlikely scenario, but still
possible.
Now the work queue will just issue a STP_REQUEST_EXIT down to usermode,
and usermode will echo back an STP_EXIT that triggers the actual probe
cleanup. This way the unregistrations are happening in exactly the same
context as the registrations were.
|
| |
| |
| |
| |
| | |
After linux-next commit f2a8205c, it takes two parameters again,
so we autoconf for it rather than use KERNEL_VERSION ifdefs.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* buildrun.cxx (compile_pass): Add autoconf line for stack trace
test, which defines STAPCONF_KERNEL_STACKTRACE.
* runtime/autoconf-save-stack-trace.c: New file.
* runtime/stack.c : Use STAPCONF_KERNEL_STACKTRACE instead of
tests for kernel configuration and versions.
* runtime/stack-i386.c : ditto
* runtime/stack-x86_64.c : ditto
|
| |
| |
| |
| |
| | |
It also adds a private copy of access_process_vm to runtime/itrace.c
since that function is not consistently exported by all distros.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Impact: cleanup
Since sdt.h is in git tree, sduprobes is no longer needed.
* Makefile.am: Remove sduprobes.
* Makefile.in: Regenerated.
* doc/Makefile.in: Ditto.
* runtime/sduprobes.c: Removed.
Signed-off-by: Wenji Huang <wenji.huang@oracle.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Our gettimeofday runtime has frequent wakeups to stay in sync with
kernel time, but this is wasted effort if gettimeofday is not used in
the script. This patch moves the calls to _stp_time_init and
_stp_time_kill into begin and end/error probes, which only get pulled in
if one of the gettimeofday variants is called.
|
| |
| |
| |
| |
| |
| |
| | |
2009-02-20 David Smith <dsmith@redhat.com>
* debugfs.c: Added inclusion of linux/debugfs.h.
* relayfs.h: Removed inclusion of linux/debugfs.h.
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
ChangeLog: Removed
runtime/ChangeLog: Removed
runtime/sym.c: Merged
runtime/task_finder.c: Merged
tapset/ChangeLog: Removed
testsuite/ChangeLog: Removed
|
| |
| |
| |
| |
| |
| | |
Mark Wielaard, a dear friend of the departed, will be performing a song
and dance at the funeral services to commemorate the joyous times that
they had together.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
2009-02-18 David Smith <dsmith@redhat.com>
* io.c (_stp_log): Removed unused function.
* map.c (_stp_cmp): Replace _stp_log() with dbug().
* mempool.c (_stp_mempool_resize): Removed unused function.
* print.c (next_fmt): Removed unused function.
* procfs.c: Removed unused variable '_stp_num_procfs_files'.
* regs.c (_stp_ret_addr): Removed unused function.
* string.c (_stp_text_str): Removed unused variable 'len'.
* string.h: Removed unused variable '_stdout_' and function
declaration for deleted function '_stp_vsprintf'.
* sym.c: Removed unused variables.
* unwind.c (_stp_create_unwind_hdr): Removed unused function.
2009-02-18 David Smith <dsmith@redhat.com>
* control.c: Removed unused variable '_stp_current_buffers'.
* procfs.c (_stp_set_buffers): Removed unused function.
(_stp_register_ctl_channel_fs): Removed unused variables and
label.
* symbols.c (u32_swap): Removed unused function.
(generic_swap): Ditto.
(_stp_sort): Ditto.
(_stp_section_is_interesting): Ditto.
* transport.c (_stp_transport_init): Removed unused variable
'ret'.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
2009-02-17 David Smith <dsmith@redhat.com>
* control.c: Contains generic control channel functions.
* procfs.c: Specific procfs control channel functions. All generic
control channel functions moved to control.c.
* debugfs.c: New file containing debugfs specific control channel
functions.
* control.h: New file.
* transport.c: Updated file inclusion.
|
| | |
|
| | |
|