From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22629 invoked by alias); 18 Jan 2008 10:59:29 -0000 Received: (qmail 22595 invoked by uid 367); 18 Jan 2008 10:59:27 -0000 Date: Fri, 18 Jan 2008 10:59:00 -0000 Message-ID: <20080118105927.22580.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Re-suspend the process when detaching. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: f8dfdde94877f7789016ec62cfe35a8ab1b202b4 X-Git-Newrev: 4cff0daa2996b28274985fa4674160f15e5fd9e2 Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q1/txt/msg00094.txt.bz2 The branch, master has been updated via 4cff0daa2996b28274985fa4674160f15e5fd9e2 (commit) from f8dfdde94877f7789016ec62cfe35a8ab1b202b4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 4cff0daa2996b28274985fa4674160f15e5fd9e2 Author: Andrew Cagney Date: Fri Jan 18 05:54:54 2008 -0500 Re-suspend the process when detaching. frysk-core/frysk/proc/ChangeLog 2008-01-18 Andrew Cagney * Task.java (toString()): Print the state. frysk-core/frysk/proc/live/ChangeLog 2008-01-18 Andrew Cagney * LinuxPtraceTask.java (sendDetach(int)): For SIGSTOP, send a signal. * LinuxPtraceTaskState.java: Don't loose the signal in WaitForContinueorUnblock. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/proc/ChangeLog | 4 ++++ frysk-core/frysk/proc/Task.java | 1 + frysk-core/frysk/proc/live/ChangeLog | 5 +++++ frysk-core/frysk/proc/live/LinuxPtraceTask.java | 8 +++++++- .../frysk/proc/live/LinuxPtraceTaskState.java | 2 +- 5 files changed, 18 insertions(+), 2 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog index eae536d..2eca8d0 100644 --- a/frysk-core/frysk/proc/ChangeLog +++ b/frysk-core/frysk/proc/ChangeLog @@ -1,3 +1,7 @@ +2008-01-18 Andrew Cagney + + * Task.java (toString()): Print the state. + 2008-01-17 Andrew Cagney * StressAttachDetachSignaledTask.java (stressSignalStorm(Action)) diff --git a/frysk-core/frysk/proc/Task.java b/frysk-core/frysk/proc/Task.java index 6e65278..4fe05ad 100644 --- a/frysk-core/frysk/proc/Task.java +++ b/frysk-core/frysk/proc/Task.java @@ -164,6 +164,7 @@ public abstract class Task { return ("{" + super.toString() + ",pid=" + proc.getPid() + ",tid=" + getTid() + + ",state=" + getStateFIXME() + "}"); } diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog index 51bffd4..e2106f8 100644 --- a/frysk-core/frysk/proc/live/ChangeLog +++ b/frysk-core/frysk/proc/live/ChangeLog @@ -1,5 +1,10 @@ 2008-01-18 Andrew Cagney + * LinuxPtraceTask.java (sendDetach(int)): For SIGSTOP, send a + signal. + * LinuxPtraceTaskState.java: Don't loose the signal in + WaitForContinueorUnblock. + * TestProcStopped.java (testStoppedSignal()): New. * LinuxPtraceTaskState.java (transitionToAttached): Merge signal code. diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTask.java b/frysk-core/frysk/proc/live/LinuxPtraceTask.java index ecf1a58..1d4633b 100644 --- a/frysk-core/frysk/proc/live/LinuxPtraceTask.java +++ b/frysk-core/frysk/proc/live/LinuxPtraceTask.java @@ -377,7 +377,13 @@ public class LinuxPtraceTask extends LiveTask { logger.log(Level.FINE, "{0} sendDetach\n", this); clearIsa(); try { - Ptrace.detach(getTid(), sig); + if (Signal.STOP.equals(sig)) { + logger.log(Level.FINE, "{0} sendDetach/signal STOP\n", this); + Signal.STOP.tkill(getTid()); + Ptrace.detach(getTid(), 0); + } else { + Ptrace.detach(getTid(), sig); + } } catch (Exception e) { // Ignore problems trying to detach, most of the time the // problem is the process has already left the cpu queue diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java index c629cc5..fe0eecc 100644 --- a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java +++ b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java @@ -390,7 +390,7 @@ class LinuxPtraceTaskState extends State { { logger.log (Level.FINE, "{0} handleUnblock\n", task); task.blockers.remove (observer); - return Attached.waitForContinueOrUnblock; + return this; } LinuxPtraceTaskState handleContinue (LinuxPtraceTask task) { hooks/post-receive -- frysk system monitor/debugger