From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11079 invoked by alias); 11 Mar 2008 19:37:51 -0000 Received: (qmail 11052 invoked by uid 9561); 11 Mar 2008 19:37:51 -0000 Date: Tue, 11 Mar 2008 19:37:00 -0000 Message-ID: <20080311193750.11037.qmail@sourceware.org> From: swagiaal@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: swagiaal: fixed fcatch bad memory use. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 537514afa8afe63a15d3a06d916b6c6bc3160881 X-Git-Newrev: fbc2e7379f2b9ca0e5aac52425f94521527d26f0 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/msg00335.txt.bz2 The branch, master has been updated via fbc2e7379f2b9ca0e5aac52425f94521527d26f0 (commit) from 537514afa8afe63a15d3a06d916b6c6bc3160881 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit fbc2e7379f2b9ca0e5aac52425f94521527d26f0 Author: Sami Wagiaalla Date: Tue Mar 11 15:24:09 2008 -0400 swagiaal: fixed fcatch bad memory use. frysk-core/frysk/util/ChangeLog +2008-03-11 Sami Wagiaalla + + * FCatch.java: Remove cached stack trace if new stack + trace is available. + ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/util/ChangeLog | 5 +++++ frysk-core/frysk/util/FCatch.java | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog index 811af42..b2d6f27 100644 --- a/frysk-core/frysk/util/ChangeLog +++ b/frysk-core/frysk/util/ChangeLog @@ -1,3 +1,8 @@ +2008-03-11 Sami Wagiaalla + + * FCatch.java: Remove cached stack trace if new stack + trace is available. + 2008-03-11 Andrew Cagney * StressTestStackTraceAction.java: Update to match Offspring. diff --git a/frysk-core/frysk/util/FCatch.java b/frysk-core/frysk/util/FCatch.java index e080b83..7244d1c 100644 --- a/frysk-core/frysk/util/FCatch.java +++ b/frysk-core/frysk/util/FCatch.java @@ -73,7 +73,7 @@ public class FCatch { */ private void printStackTrace(Task task, SignalStack signalStack) { printWriter.println("\n" + task.getProc().getPid() + "." - + task.getTid() + " was terminated with signal " + + task.getTid() + " terminated with signal " + signalStack.signal); printWriter.println(signalStack.stack); printWriter.flush(); @@ -86,9 +86,17 @@ public class FCatch { class CatchObserver implements TaskObserver.Terminated, TaskObserver.Signaled{ public Action updateTerminated(Task task, Signal signal, int value) { - SignalStack signalStack = (SignalStack) signaledTasks.get(task); - if (signalStack != null && signal.equals(signalStack.signal)) { + SignalStack signalStack = (SignalStack) signaledTasks.remove(task); + if (signalStack != null && signal != null && signal.equals(signalStack.signal)) { printStackTrace(task, signalStack); + }else{ + // if the main thread exited print out a message that the process + // terminated safely + if(task.getTid() == task.getProc().getPid()){ + printWriter.println(task.getProc().getPid() + "." + + task.getTid() + " terminated normally"); + printWriter.flush(); + } } return Action.CONTINUE; } @@ -103,6 +111,7 @@ public class FCatch { SignalStack signalStack = new SignalStack(); signalStack.signal = signal; signalStack.stack = stringWriter.getBuffer().toString(); + signaledTasks.remove(task); signaledTasks.put(task, signalStack); return Action.CONTINUE; hooks/post-receive -- frysk system monitor/debugger