This is the mail archive of the frysk@sources.redhat.com mailing list for the frysk project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Mon, 2006-08-28 at 16:24 +0200, Mark Wielaard wrote: > It does highlight a small difference between the syscall and non-syscall > states. In some cases a pending signals seems to be discarded. Adding > tests now to verify and fix if necessary. Creating a test for this was difficult since I couldn't figure out precisely when this code is triggered. It seems to only matter when a signal arrives when in the attaching state, which means we have done an sendAttach(), so we will then get a stopped event. Apparently there is a change we get a signal event (probably send externally) before that happens, but I couldn't figure out an reliable way to generate such a sequence. I did fixup the code so the syscall and non-syscall cases are similar. This doesn't impact any of the existing tests. 2006-08-29 Mark Wielaard <mark@klomp.org> * TaskState.java (transitionToSyscallRunningState): Add signal parameter. Cheers, Mark
Index: frysk/proc/TaskState.java =================================================================== RCS file: /cvs/frysk/frysk-core/frysk/proc/TaskState.java,v retrieving revision 1.105 diff -u -r1.105 TaskState.java --- frysk/proc/TaskState.java 28 Aug 2006 14:24:36 -0000 1.105 +++ frysk/proc/TaskState.java 29 Aug 2006 13:44:58 -0000 @@ -320,11 +320,11 @@ * is both unblocked and continued, should transition * to the syscallRunning state. */ - static TaskState transitionToSyscallRunningState (Task task) + static TaskState transitionToSyscallRunningState (Task task, int signal) { logger.log(Level.FINE, "transitionToSyscallRunningState\n"); if (task.notifyAttached () > 0) - return syscallBlockedContinue; + return new BlockedSignal (signal, true); task.sendSyscallContinue (0); return syscallRunning; } @@ -356,7 +356,7 @@ if (task.blockers.size () == 0) { if (syscallObserverAdded) - return transitionToSyscallRunningState(task); + return transitionToSyscallRunningState(task, signal); else return Attached.transitionToRunningState(task, signal); } @@ -404,7 +404,7 @@ if (task.blockers.size () == 0) { if (syscallObserverAdded) - return transitionToSyscallRunningState(task); + return transitionToSyscallRunningState(task, signal); else return transitionToRunningState(task, signal); }
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |