summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-07-09 22:44:13 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-07-09 22:44:13 -0400
commita00cc8c70d20f2f3429590b629d272c8db65b40f (patch)
tree6a90966d1a715c48db4ac35b891c46ef654f272f /runtime
parentdf00639dbe262b8919bdf625f30d80e5b9b96346 (diff)
parent51a3785482396c9f653e3e7647945bfc24f7b160 (diff)
downloadsystemtap-steved-a00cc8c70d20f2f3429590b629d272c8db65b40f.tar.gz
systemtap-steved-a00cc8c70d20f2f3429590b629d272c8db65b40f.tar.xz
systemtap-steved-a00cc8c70d20f2f3429590b629d272c8db65b40f.zip
Merge commit 'origin/master' into pr6429-comp-unwindsyms
* commit 'origin/master': fix shutdown race condition for scripts that might exit during begin probes Fix PR 6732: Add runtime/autoconf-real-parent.c check for task_struct field. clarify dejagnu test case name for empty-struct changes add changelog entries for last two changes Add test suite for declaration resolution Fix semantic error: empty struct Add hack to support git 1.6 in git_version.sh Sync latest fix for git_version.sh from RadeonHD's tree Slightly cleanup code of translate.cxx PR2111: add general blurbage to stapprobes.5 on syscalls tapset Use `uname -rvm` for checking system compatibility. Generate Add section to stapex manual page on how installed examples are documented. Install examples, demos and samples. Install tutorial and langref manuals.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/ChangeLog8
-rw-r--r--runtime/autoconf-real-parent.c15
-rw-r--r--runtime/task_finder.c3
-rw-r--r--runtime/transport/ChangeLog4
-rw-r--r--runtime/transport/transport.c4
5 files changed, 31 insertions, 3 deletions
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index f7f1a5a8..25faffe2 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,11 @@
+2008-07-09 Mark Wielaard <mwielaard@redhat.com>
+
+ PR 6732
+ * autoconf-real-parent.c: New file.
+ * task_finder.c (__stp_utrace_task_finder_report_exec): Define
+ real_parent using STAPCONF_REAL_PARENT. Undefine when no longer
+ needed.
+
2008-07-01 David Smith <dsmith@redhat.com>
* task_finder.c (__stp_get_mm_path): Corrected error return code.
diff --git a/runtime/autoconf-real-parent.c b/runtime/autoconf-real-parent.c
new file mode 100644
index 00000000..010792cb
--- /dev/null
+++ b/runtime/autoconf-real-parent.c
@@ -0,0 +1,15 @@
+/* PR6732 - In RHEL5 and F[678] kernels, the utrace patch removed the
+ * ptrace-related parent field and renamed real_parent to parent. In
+ * future Fedora kernels, there may or may not be a ptrace-related
+ * parent field, but the real useful field will go back to being called
+ * real_parent.
+ */
+#include <linux/sched.h>
+
+struct task_struct t;
+
+void foo (void)
+{
+ struct task_struct *p;
+ p = t.real_parent;
+}
diff --git a/runtime/task_finder.c b/runtime/task_finder.c
index 316a9bc0..fc573eb6 100644
--- a/runtime/task_finder.c
+++ b/runtime/task_finder.c
@@ -485,7 +485,7 @@ __stp_utrace_task_finder_report_exec(struct utrace_attached_engine *engine,
// '/bin/bash' clones and then execs '/bin/ls'. If the user
// was probing '/bin/bash', the cloned thread is still
// '/bin/bash' up until the exec.
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
+#if ! defined(STAPCONF_REAL_PARENT)
#define real_parent parent
#endif
if (tsk != NULL && tsk->real_parent != NULL
@@ -494,6 +494,7 @@ __stp_utrace_task_finder_report_exec(struct utrace_attached_engine *engine,
// *could* call exec (although they aren't supposed to).
__stp_utrace_attach_match_tsk(tsk->real_parent, tsk, 0, 1);
}
+#undef real_parent
// We assume that all exec's are exec'ing a new process. Note
// that we don't use bprm->filename, since that path can be
diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog
index 98548afa..4bb0868b 100644
--- a/runtime/transport/ChangeLog
+++ b/runtime/transport/ChangeLog
@@ -1,4 +1,8 @@
+2008-07-09 Frank Ch. Eigler <fche@elastic.org>
+ PR5963
+ * transport.c (_stp_work_queue): Don't signal a premature exit
+ if a begin probe happened to exit().
2008-06-23 Wenji Huang <wenji.huang@oracle.com>
PR 6646
diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c
index 01a24033..ed9718ae 100644
--- a/runtime/transport/transport.c
+++ b/runtime/transport/transport.c
@@ -159,9 +159,9 @@ static void _stp_work_queue(void *data)
wake_up_interruptible(&_stp_ctl_wq);
/* if exit flag is set AND we have finished with probe_start() */
- if (unlikely(_stp_exit_flag))
+ if (unlikely(_stp_exit_flag && _stp_probes_started))
_stp_cleanup_and_exit(1);
- else if (likely(_stp_attached))
+ if (likely(_stp_attached))
queue_delayed_work(_stp_wq, &_stp_work, STP_WORK_TIMER);
}