rpms/frysk/F-12 frysk-0.4-lostfork.patch, NONE, 1.1 frysk.spec, 1.162, 1.163

cagney cagney at fedoraproject.org
Tue Mar 30 15:13:07 UTC 2010


Author: cagney

Update of /cvs/pkgs/rpms/frysk/F-12
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv24349/F-12

Modified Files:
	frysk.spec 
Added Files:
	frysk-0.4-lostfork.patch 
Log Message:
* Tue Mar 30 2010 Andrew Cagney <cagney [at] fedoraproject.org> - 0.4-24
- for fcatch et.al. don't exit when outstanding child events -
  frysk-0.4-lostfork.patch


frysk-0.4-lostfork.patch:
 ProcRunUtil.java |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

--- NEW FILE frysk-0.4-lostfork.patch ---
diff -up frysk-0.4/frysk-core/frysk/util/ProcRunUtil.java.lostfork frysk-0.4/frysk-core/frysk/util/ProcRunUtil.java
--- frysk-0.4/frysk-core/frysk/util/ProcRunUtil.java.lostfork	2010-03-30 09:44:35.000000000 -0400
+++ frysk-0.4/frysk-core/frysk/util/ProcRunUtil.java	2010-03-30 10:30:47.000000000 -0400
@@ -41,6 +41,7 @@ package frysk.util;
 
 import java.util.HashSet;
 
+import frysk.rsl.Log;
 import frysk.proc.Action;
 import frysk.proc.Manager;
 import frysk.proc.Proc;
@@ -58,8 +59,13 @@ import gnu.classpath.tools.getopt.Option
  * Utilities must implement {@link ProcRunObserver} to use.
  */
 public class ProcRunUtil {
+    private static final Log fine = Log.fine(ProcRunUtil.class);
 
     private final HashSet knownTasks = new HashSet();
+    // A fork triggers two events, one for the parent, and one for the
+    // child (when the child stops).  This is the set of tasks for
+    // which the child event has yet to arrive.
+    private final HashSet missingForkedOffspring = new HashSet();
     
     ForkedObserver forkedObserver = new ForkedObserver();
     AttachedObserver attachedObserver = new AttachedObserver();
@@ -115,6 +121,8 @@ public class ProcRunUtil {
     
     private void addObservers(Task task) {
 	if (knownTasks.add(task)) {
+	    fine.log(this, "addObservers", task);
+	    missingForkedOffspring.remove(task);
 	    task.requestAddClonedObserver(procRunObserver);
 	    task.requestAddExecedObserver(procRunObserver);
 	    task.requestAddForkedObserver(procRunObserver);
@@ -128,11 +136,14 @@ public class ProcRunUtil {
     
     class ForkedObserver implements TaskObserver.Forked {
 	public Action updateForkedOffspring(Task parent, Task offspring) {
+	    fine.log(this, "updateForkedOffspring parent", parent, "offspring", offspring);
 	    addObservers(offspring.getProc());
 	    return Action.BLOCK;
 	}
 
 	public Action updateForkedParent(Task parent, Task offspring) {
+	    fine.log(this, "updateForkedParent parent", parent, "offspring", offspring);
+	    missingForkedOffspring.add(offspring);
 	    return Action.CONTINUE;
 	}
 
@@ -198,7 +209,9 @@ public class ProcRunUtil {
 	public void taskRemoved (Task task)
 	{
 	    knownTasks.remove(task);
-	    if(knownTasks.size() == 0){
+	    fine.log(this, "taskRemoved", task, "knownTasks", knownTasks.size(),
+		     "missingForkedOffspring", missingForkedOffspring.size());
+	    if (knownTasks.size() == 0 && missingForkedOffspring.size() == 0){
 		Manager.eventLoop.requestStop();
 	    }
 	}


Index: frysk.spec
===================================================================
RCS file: /cvs/pkgs/rpms/frysk/F-12/frysk.spec,v
retrieving revision 1.162
retrieving revision 1.163
diff -u -p -r1.162 -r1.163
--- frysk.spec	29 Mar 2010 23:49:20 -0000	1.162
+++ frysk.spec	30 Mar 2010 15:13:07 -0000	1.163
@@ -1,7 +1,7 @@
 Summary:	Execution analysis and debugging tool-suite.
 Name:		frysk
 Version:	0.4
-Release:	23%{?dist}
+Release:	24%{?dist}
 
 # antlrv2 is Public Domain; antlrv3 is BSD.
 # getopt is GPLv2 with exception
@@ -32,6 +32,7 @@ Patch9:		frysk-0.4-publictestbedsymtab.p
 Patch10:	frysk-0.4-noelfmem.patch
 Patch11:	frysk-0.4-gccjint.patch
 Patch12:	frysk-0.4-taskstoperr.patch
+Patch13:	frysk-0.4-lostfork.patch
 
 Patch100:	frysk-0.4-aclocaljavac.patch
 
@@ -161,6 +162,7 @@ mv frysk-core/frysk/util/ProcStopUtil.ja
 %patch10 -p1 -z .noelfmem
 %patch11 -p1 -z .gccjint
 %patch12 -p1 -z .taskstoperr
+%patch13 -p1 -z .lostfork
 
 %if %{fedora}0 >= 130
 %patch100 -p1 -z .aclocaljavac
@@ -352,6 +354,10 @@ rm -rf %{buildroot}
 %{_mandir}/man1/frysk.1.gz
 
 %changelog
+* Tue Mar 30 2010 Andrew Cagney <cagney [at] fedoraproject.org> - 0.4-24
+- for fcatch et.al. don't exit when outstanding child events -
+  frysk-0.4-lostfork.patch
+
 * Mon Mar 29 2010 Andrew Cagney <cagney [at] fedoraproject.org> - 0.4-23
 - for fexe et.al., exit cleanly when an error -
   frysk-0.4-taskstoperr.patch



More information about the scm-commits mailing list