public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
From: cagney@sourceware.org
To: frysk-cvs@sourceware.org
Subject: [SCM]  master: frysk-core/frysk/bindir/ChangeLog
Date: Fri, 25 Jan 2008 17:32:00 -0000	[thread overview]
Message-ID: <20080125173204.1529.qmail@sourceware.org> (raw)

The branch, master has been updated
       via  a548829d7ca92f9c2853d83dcf9781ce7a56a488 (commit)
       via  9324844373a69121875354223dbbe799279aeb49 (commit)
      from  814da5d7520162288f0153df0afe06ce4e39f764 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit a548829d7ca92f9c2853d83dcf9781ce7a56a488
Author: Andrew Cagney <cagney@redhat.com>
Date:   Fri Jan 25 12:31:06 2008 -0500

    frysk-core/frysk/bindir/ChangeLog
    2008-01-25  Andrew Cagney  <cagney@redhat.com>
    
    	* TestFdebuginfo.java (testPathListing()): Mark as unresolved; bug
    	5671.

commit 9324844373a69121875354223dbbe799279aeb49
Author: Andrew Cagney <cagney@redhat.com>
Date:   Fri Jan 25 12:22:06 2008 -0500

    Initialize the ISA during the task attach.
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-24  Andrew Cagney  <cagney@redhat.com>
    
    	* Task.java: Mention that ISA can be null.
    	(clearIsa()): Make protected.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-01-25  Andrew Cagney  <cagney@redhat.com>
    
    	* TestRuntimeIsa.java (assertHasNoIsa(String,Task)): New.
    	(assertHasIsaEquals(String,Task,boolean)): Delete.
    	* LinuxPtraceTask.java (hasIsa()): Delete.
    	(clearIsa()): Make protected.
    	(getISA()): Simplify, throw an NPE when the ISA is null.
    	(sendSetOptions()): Delete.
    	(ptraceOptions): Initialize directly.
    	(startTracingSyscalls(), stopTracingSyscalls()): Call
    	Ptrace.setOptions.
    	(initializeAttachedState()): New.
    	* LinuxPtraceTaskState.java: Call Task.initializeAttachedState(),
    	instead of Task.sendSetOptions() as the task is attached.

-----------------------------------------------------------------------

Summary of changes:
 frysk-core/frysk/bindir/ChangeLog                  |    5 +
 frysk-core/frysk/bindir/TestFdebuginfo.java        |    2 +
 frysk-core/frysk/proc/ChangeLog                    |    3 +
 frysk-core/frysk/proc/Task.java                    |    9 +-
 frysk-core/frysk/proc/live/ChangeLog               |   13 ++
 frysk-core/frysk/proc/live/LinuxPtraceTask.java    |   63 ++++------
 .../frysk/proc/live/LinuxPtraceTaskState.java      |  130 ++++++++++++--------
 frysk-core/frysk/proc/live/TestRuntimeIsa.java     |  101 ++++++---------
 8 files changed, 175 insertions(+), 151 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog
index 179ded3..3c04859 100644
--- a/frysk-core/frysk/bindir/ChangeLog
+++ b/frysk-core/frysk/bindir/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-25  Andrew Cagney  <cagney@redhat.com>
+
+	* TestFdebuginfo.java (testPathListing()): Mark as unresolved; bug
+	5671.
+
 2008-01-24  Andrew Cagney  <cagney@redhat.com>
 
 	* TestFhd.java: Do not call Expect.close(); do not hard-wire a
diff --git a/frysk-core/frysk/bindir/TestFdebuginfo.java b/frysk-core/frysk/bindir/TestFdebuginfo.java
index 26e7048..3dccc0e 100644
--- a/frysk-core/frysk/bindir/TestFdebuginfo.java
+++ b/frysk-core/frysk/bindir/TestFdebuginfo.java
@@ -51,6 +51,8 @@ import frysk.testbed.SlaveOffspring;
 public class TestFdebuginfo extends TestLib {
 
     public void testPathListing() {
+	if (unresolved(5671))
+	    return;
         // Create an unattached child process.
 	SlaveOffspring child = SlaveOffspring.createChild();
 	Task task = child.findTaskUsingRefresh(true);
diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
index cd99c9d..246cbdc 100644
--- a/frysk-core/frysk/proc/ChangeLog
+++ b/frysk-core/frysk/proc/ChangeLog
@@ -9,6 +9,9 @@
 
 2008-01-24  Andrew Cagney  <cagney@redhat.com>
 
+	* Task.java: Mention that ISA can be null.
+	(clearIsa()): Make protected.
+
 	* TaskObserver.java (Signaled): Replace updateSignaled(Task,int)
 	with updateSignaled(Task,Signal).
 	* TestTaskSyscallObserver.java: Update.
diff --git a/frysk-core/frysk/proc/Task.java b/frysk-core/frysk/proc/Task.java
index dd0e331..5e41213 100644
--- a/frysk-core/frysk/proc/Task.java
+++ b/frysk-core/frysk/proc/Task.java
@@ -93,7 +93,12 @@ public abstract class Task {
     protected abstract String getStateFIXME();
 
     /**
-     * Return's this Task's Instruction Set Architecture.
+     * Return's this Task's Instruction Set Architecture; or throw a
+     * NullPointerException if the ISA is not available.
+     *
+     * The isa is only available while the task is under observation
+     * (attached) as an un-observed task can switch isa's (using
+     * exec(2)) undetected.
      */
     public abstract ISA getISA();
 
@@ -337,7 +342,7 @@ public abstract class Task {
      */
     public abstract int getMod();
  
-    public void clearIsa() {
+    protected void clearIsa() {
 	syscallTable = null;
 	signalTable = null;
     }
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index 71ff7f4..2895d21 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,5 +1,18 @@
 2008-01-25  Andrew Cagney  <cagney@redhat.com>
 
+	* TestRuntimeIsa.java (assertHasNoIsa(String,Task)): New.
+	(assertHasIsaEquals(String,Task,boolean)): Delete.
+	* LinuxPtraceTask.java (hasIsa()): Delete.
+	(clearIsa()): Make protected.
+	(getISA()): Simplify, throw an NPE when the ISA is null.
+	(sendSetOptions()): Delete.
+	(ptraceOptions): Initialize directly.
+	(startTracingSyscalls(), stopTracingSyscalls()): Call
+	Ptrace.setOptions.
+	(initializeAttachedState()): New.
+	* LinuxPtraceTaskState.java: Call Task.initializeAttachedState(),
+	instead of Task.sendSetOptions() as the task is attached.
+
 	* TestTaskObserverCode.java: Eliminate uses of
 	frysk.sys.Signal.equals(int); import frysk.isa.signals.Signal
 	instead of frysk.sys.Signal.
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTask.java b/frysk-core/frysk/proc/live/LinuxPtraceTask.java
index 3dfe3f5..9111181 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceTask.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceTask.java
@@ -149,18 +149,14 @@ public class LinuxPtraceTask extends LiveTask {
      * Can this instead look at AUXV?
      */
     public ISA getISA() {
-	if (currentISA == null)
-	    // FIXME: This should use task.proc.getExe().  Only that
-	    // causes wierd failures; take a rain-check :-(
-	    currentISA = ElfMap.getISA(new File("/proc/" + getTid() + "/exe"));
-	return currentISA;
+	ISA scratch = currentISA;
+	if (scratch == null)
+	    throw new NullPointerException("ISA unavailable; task "
+					   + this + " has no observers");
+	return scratch;
     }
     private ISA currentISA;
 
-    boolean hasIsa() {
-	return (currentISA != null);
-    }
-
     /**
      * Return the Task's ISA.
      *
@@ -291,26 +287,6 @@ public class LinuxPtraceTask extends LiveTask {
 	Signal.STOP.tkill(getTid());
     }
 
-    private int ptraceOptions;
-    public void sendSetOptions ()
-    {
-	logger.log(Level.FINE, "{0} sendSetOptions\n", this);
-	try
-	    {
-		// XXX: Should be selecting the trace flags based on the
-		// contents of .observers.
-		ptraceOptions |= Ptrace.optionTraceClone();
-		ptraceOptions |= Ptrace.optionTraceFork();
-		ptraceOptions |= Ptrace.optionTraceExit();
-		// ptraceOptions |= Ptrace.optionTraceSysgood (); not set by default
-		ptraceOptions |= Ptrace.optionTraceExec();
-		Ptrace.setOptions(getTid(), ptraceOptions);
-	    }
-	catch (Errno.Esrch e)
-	    {
-		postDisappearedEvent(e);
-	    }
-    }
 
     public void sendAttach ()
     {
@@ -363,18 +339,29 @@ public class LinuxPtraceTask extends LiveTask {
 	}
     }
 
-    public void startTracingSyscalls ()
-    {
+    // XXX: Should be selecting the trace flags based on the contents
+    // of .observers?  Ptrace.optionTraceSysgood not set by default
+    private long ptraceOptions
+	= Ptrace.optionTraceClone()
+	| Ptrace.optionTraceFork()
+	| Ptrace.optionTraceExit()
+	| Ptrace.optionTraceExec();
+    void initializeAttachedState() {
+	logger.log(Level.FINE, "{0} initializeAttachedState\n", this);
+	Ptrace.setOptions(getTid(), ptraceOptions);
+	// FIXME: This should use task.proc.getExe().  Only that
+	// causes wierd failures; take a rain-check :-(
+	currentISA = ElfMap.getISA(new File("/proc/" + getTid() + "/exe"));
+    }
+    void startTracingSyscalls() {
 	logger.log(Level.FINE, "{0} startTracingSyscalls\n", this);
 	ptraceOptions |= Ptrace.optionTraceSysgood();
-	this.sendSetOptions();
+	Ptrace.setOptions(getTid(), ptraceOptions);
     }
-
-    public void stopTracingSyscalls ()
-    {
+    void stopTracingSyscalls() {
 	logger.log(Level.FINE, "{0} stopTracingSyscalls\n", this);
 	ptraceOptions &= ~ (Ptrace.optionTraceSysgood());
-	this.sendSetOptions();
+	Ptrace.setOptions(getTid(), ptraceOptions);
     }
 
 
@@ -714,6 +701,7 @@ public class LinuxPtraceTask extends LiveTask {
 	//Flush the isa in case it has changed between exec's.
 	clearIsa();
 	//XXX: When should the isa be rebuilt?
+	initializeAttachedState();
 	for (Iterator i = execedObservers.iterator(); i.hasNext();) {
 	    TaskObserver.Execed observer = (TaskObserver.Execed) i.next();
 	    if (observer.updateExeced(this) == Action.BLOCK)
@@ -993,7 +981,8 @@ public class LinuxPtraceTask extends LiveTask {
 	setRegister(pcRegister(), addr);
     }
 
-    public void clearIsa() {
+    protected void clearIsa() {
+	logger.log(Level.FINE, "{0} clearIsa\n", this);
 	super.clearIsa();
 	pcRegister = null;
 	memory = null;
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
index 5f0b39a..aa1b4cd 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
@@ -183,13 +183,13 @@ class LinuxPtraceTaskState extends State {
 		    task.sendAttach();
 		    if (task.getProc().getMainTask() == task
 			&& Status.isStopped(task.getTid())) {
-			// The attach has been initiated on the main task
-			// of the process; the process state should
-			// transition to (T) TRACED.  If it is instead (T)
-			// STOPPED then the process is stuck (suspended),
-			// send it a SIGSTOP to unwedge it.  /proc/status
-			// is used as that differentiates between STOPPED
-			// an TRACED.
+			// The attach has been initiated on the main
+			// task of the process; the process state
+			// should transition to (T) TRACED.  If it is
+			// instead (T) STOPPED then the process is
+			// stuck (suspended), send it a SIGSTOP to
+			// unwedge it.  /proc/status is used as that
+			// differentiates between STOPPED an TRACED.
 			logger.log(Level.FINE,
 				   "{0} wake the suspended process", task);
 			Signal.CONT.tkill(task.getTid());
@@ -234,7 +234,9 @@ class LinuxPtraceTaskState extends State {
 		    // Toss the stop event.
 		    signal = Signal.NONE;
 		}
-		((LinuxPtraceProc)task.getProc()).performTaskAttachCompleted(task);
+		task.initializeAttachedState();
+		((LinuxPtraceProc)task.getProc())
+		    .performTaskAttachCompleted(task);
 		return new Attached.WaitForContinueOrUnblock(signal);
 	    }
 	}
@@ -287,6 +289,8 @@ class LinuxPtraceTaskState extends State {
 	LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
 						  TaskObservation observation) {
 	    logger.log(Level.FINE, "{0} handleAddObservation\n", task);
+	    // XXX: Need to check needsSuspendedAction; the task isn't
+	    // stopped.
 	    observation.add();
 	    return this;
 	}
@@ -296,6 +300,8 @@ class LinuxPtraceTaskState extends State {
 	LinuxPtraceTaskState handleDeleteObservation(LinuxPtraceTask task,
 						     TaskObservation observation) {
 	    logger.log(Level.FINE, "{0} handleDeleteObservation\n", task); 
+	    // XXX: Need to check needsSuspendedAction; the task isn't
+	    // stopped.
 	    observation.delete();
 	    return handleUnblock(task, observation.getTaskObserver());
 	}
@@ -348,7 +354,6 @@ class LinuxPtraceTaskState extends State {
 	 */
         static LinuxPtraceTaskState transitionToRunningState(LinuxPtraceTask task, Signal signal) {
 	    logger.log(Level.FINE, "transitionToRunningState\n");
-	    task.sendSetOptions();
 	    if (task.notifyAttached() > 0)
 		return new BlockedSignal(signal, false);
 	    else
@@ -425,9 +430,9 @@ class LinuxPtraceTaskState extends State {
      * influence this assumption: the task stops; and the controlling
      * proc orders an attach.
      *
-     * If the LinuxPtraceTask stops then, once the ForkedOffspring observers have
-     * stopped blocking this, do the detach.  * ForkOffspring
-     * observers of this).
+     * If the LinuxPtraceTask stops then, once the ForkedOffspring
+     * observers have stopped blocking this, do the detach.
+     * ForkOffspring observers of this).
      *
      * If, on the other hand, an attach order is received, change the
      * assumption to that the task should be attached and proceed on
@@ -446,27 +451,32 @@ class LinuxPtraceTaskState extends State {
 	    new StartMainTask("wantToDetach") {
 		LinuxPtraceTaskState handleAttach(LinuxPtraceTask task) {
 		    logger.log(Level.FINE, "{0} handleAttach\n", task); 
-		    ((LinuxPtraceProc)task.getProc()).performTaskAttachCompleted(task);
+		    ((LinuxPtraceProc)task.getProc())
+			.performTaskAttachCompleted(task);
 		    return StartMainTask.wantToAttach;
 		}
 		LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
 							Signal signal) {
 		    if (signal == Signal.STOP || signal == Signal.TRAP) {
-			if (task.notifyForkedOffspring() > 0)
+			task.initializeAttachedState();
+			if (task.notifyForkedOffspring() > 0) {
 			    return StartMainTask.detachBlocked;
-			task.sendDetach(Signal.NONE);
-			((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted(task);
-			return detached;
+			} else {
+			    task.sendDetach(Signal.NONE);
+			    ((LinuxPtraceProc)task.getProc())
+				.performTaskDetachCompleted(task);
+			    return detached;
+			}
 		    } else {
 			throw unhandled(task, "handleStoppedEvent " + signal);
 		    }
 		}
 	    };
 	/**
-	 * The detaching LinuxPtraceTask has stopped and the ForkedOffspring
-	 * observers have been notified; just waiting for all the
-	 * ForkedOffspring blockers to be removed before finishing the
-	 * detach.
+	 * The detaching LinuxPtraceTask has stopped and the
+	 * ForkedOffspring observers have been notified; just waiting
+	 * for all the ForkedOffspring blockers to be removed before
+	 * finishing the detach.
 	 */
 	static final LinuxPtraceTaskState detachBlocked =
 	    new StartMainTask("detachBlocked") {
@@ -477,22 +487,30 @@ class LinuxPtraceTaskState extends State {
 		    // (waiting for ForkedOffspring observers to
 		    // unblock before finishing the attach).
 		    logger.log(Level.FINE, "{0} handleAttach\n", task); 
-		    ((LinuxPtraceProc)task.getProc()).performTaskAttachCompleted(task);
+		    ((LinuxPtraceProc)task.getProc())
+			.performTaskAttachCompleted(task);
 		    return StartMainTask.attachBlocked;
 		}
 		LinuxPtraceTaskState handleUnblock(LinuxPtraceTask task,
 						   TaskObserver observer) {
-		    logger.log(Level.FINE, "{0} handleUnblock\n", task); 
+		    logger.log(Level.FINE, "{0} handleUnblock {1}\n",
+			       new Object[] { task, observer }); 
 		    task.blockers.remove(observer);
-		    logger.log(Level.FINER, "{0} handleUnblock number of blockers left {1}\n", new Object[]{task, new Integer(task.blockers.size())}); 
-
+		    logger.log(Level.FINER,
+			       "{0} handleUnblock number blockers left {1}\n",
+			       new Object[]{
+				   task,
+				   new Integer(task.blockers.size())
+			       }); 
 		    if (task.blockers.size() == 0) {
 			// Ya! All the blockers have been removed.
 			task.sendDetach(Signal.NONE);
-			((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted(task);
+			((LinuxPtraceProc)task.getProc())
+			    .performTaskDetachCompleted(task);
 			return detached;
+		    } else {
+			return StartMainTask.detachBlocked;
 		    }
-		    return StartMainTask.detachBlocked;
 		}
 	    };
 	/**
@@ -506,16 +524,19 @@ class LinuxPtraceTaskState extends State {
 		LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
 							  TaskObservation observation) {
 		    logger.log(Level.FINE, "{0} handleAddObservationr\n", task);
-		    // XXX - This should most likely test needsSuspendedAction
+		    // XXX - This should most likely test
+		    // needsSuspendedAction
 		    observation.add();
 		    return this;
 		}
 		LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
 							Signal signal) {
 		    if (signal == Signal.STOP || signal == Signal.TRAP) {
+			task.initializeAttachedState();
 			if (task.notifyForkedOffspring() > 0)
 			    return StartMainTask.attachBlocked;
-			return Attached.waitForContinueOrUnblock;
+			else
+			    return Attached.waitForContinueOrUnblock;
 		    } else {
 			throw unhandled(task, "handleStoppedEvent " + signal);
 		    }
@@ -533,20 +554,24 @@ class LinuxPtraceTaskState extends State {
 	    new StartMainTask("wantToAttachContinue") {
 		LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
 							Signal signal) {
-		    // Mark this LinuxPtraceTask as just started.  See
-		    // Running.handleTrapped for more explanation.
-		    task.justStartedXXX = true;
-		    if (task.notifyForkedOffspring() > 0)
-			return StartMainTask.attachContinueBlocked;
-		    else {
-			if (signal == Signal.STOP || signal == Signal.TRAP)
-			    // Discard the signal.
-			    signal = Signal.NONE;
-			return Attached.transitionToRunningState(task, signal);
+		    if (signal == Signal.STOP || signal == Signal.TRAP) {
+			task.initializeAttachedState();
+			// Mark this LinuxPtraceTask as just started.  See
+			// Running.handleTrapped for more explanation.
+			task.justStartedXXX = true;
+			if (task.notifyForkedOffspring() > 0) {
+			    return StartMainTask.attachContinueBlocked;
+			} else {
+			    // Discard the stop signal.
+			    return Attached
+				.transitionToRunningState(task, Signal.NONE);
+			}
+		    } else {
+			throw unhandled(task, "handleStoppedEvent " + signal);
 		    }
 		}
-
-		// Adding or removing observers doesn't impact this state.
+		// Adding or removing observers doesn't impact this
+		// state.
 		LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
 							  TaskObservation to) {
 		    logger.log(Level.FINE, "{0} handleAddObservation\n", task);
@@ -605,7 +630,9 @@ class LinuxPtraceTaskState extends State {
 		    task.blockers.remove(observer);
 		    if (task.blockers.size() > 0)
 			return StartMainTask.attachContinueBlocked;
-		    return Attached.transitionToRunningState(task, Signal.NONE);
+		    else
+			return Attached.transitionToRunningState(task,
+								 Signal.NONE);
 		}
 	    };
     }
@@ -618,20 +645,22 @@ class LinuxPtraceTaskState extends State {
 	StartClonedTask(String name) {
 	    super("StartClonedTask." + name);
 	}
-	LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task, TaskObservation observation) {
+	LinuxPtraceTaskState handleAddObservation(LinuxPtraceTask task,
+						  TaskObservation observation) {
 	    logger.log(Level.FINE, "{0} handleAddObservation\n", task);
-	    // XXX most likely need to check needsSuspendedAction
+	    // XXX: Need to check needsSuspendedAction; the task isn't
+	    // stopped.
 	    observation.add();
 	    return this;
 	}
 	LinuxPtraceTaskState handleDeleteObservation(LinuxPtraceTask task,
 						     TaskObservation observation) {
 	    logger.log(Level.FINE, "{0} handleDeleteObservation\n", task); 
-	    // XXX most likely need to check needsSuspendedAction
+	    // XXX: Need to check needsSuspendedAction; the task isn't
+	    // stopped.
 	    observation.delete();
 	    return this;
 	}
-
 	static final LinuxPtraceTaskState waitForStop =
 	    new StartClonedTask("waitForStop") {
 		LinuxPtraceTaskState handleUnblock(LinuxPtraceTask task,
@@ -645,7 +674,7 @@ class LinuxPtraceTaskState extends State {
 							Signal signal) {
 		    if (signal == Signal.STOP || signal == Signal.TRAP) {
 			// Attempt an attached continue.
-			task.sendSetOptions ();
+			task.initializeAttachedState();
 			if(task.notifyClonedOffspring() > 0)
 			    return StartClonedTask.blockedOffspring;
 			// XXX: Really notify attached here?
@@ -657,7 +686,6 @@ class LinuxPtraceTaskState extends State {
 		    }
 		}
 	    };
-	
 	private static final LinuxPtraceTaskState blockedOffspring =
 	    new StartClonedTask("blockedOffspring") {
 		LinuxPtraceTaskState handleUnblock(LinuxPtraceTask task,
@@ -667,9 +695,8 @@ class LinuxPtraceTaskState extends State {
 		    if (task.blockers.size() > 0)
 			return StartClonedTask.blockedOffspring;
 		    // XXX: Really notify attached here?
-		    if (task.notifyAttached() > 0) {
+		    if (task.notifyAttached() > 0)
 			return blockedContinue;
-		    }
 		    return running.sendContinue(task, Signal.NONE);
 		}
 	    };
@@ -876,7 +903,8 @@ class LinuxPtraceTaskState extends State {
 	    
 	    if (shouldRemoveObservers)
 		task.removeObservers();  
-	    // XXX: Otherwise check if there are still observers and panic?
+	    // XXX: Otherwise check if there are still observers and
+	    // panic?
         
 	    // Can't detach a running task, first need to stop it.                
 	    task.sendStop();
diff --git a/frysk-core/frysk/proc/live/TestRuntimeIsa.java b/frysk-core/frysk/proc/live/TestRuntimeIsa.java
index 81fb7a1..b0e9601 100644
--- a/frysk-core/frysk/proc/live/TestRuntimeIsa.java
+++ b/frysk-core/frysk/proc/live/TestRuntimeIsa.java
@@ -54,10 +54,14 @@ import frysk.proc.Manager;
 
 public class TestRuntimeIsa extends TestLib {
 
-    private static void assertHasIsaEquals(String reason, Task task,
-					   boolean hasIsa) {
-	assertEquals("Has ISA (" + reason + ")", hasIsa,


hooks/post-receive
--
frysk system monitor/debugger


             reply	other threads:[~2008-01-25 17:32 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-25 17:32 cagney [this message]
2008-02-19 16:19 cagney
2008-02-26 20:15 cagney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080125173204.1529.qmail@sourceware.org \
    --to=cagney@sourceware.org \
    --cc=frysk-cvs@sourceware.org \
    --cc=frysk@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).