Bug 2803

Summary: When an observer fires for shell process - Exception = frysk.gui.monitor.observers.TaskObserverRoot$1.addFailed(FryskGui)
Product: frysk Reporter: Len DiMaggio <ldimaggi>
Component: generalAssignee: Andrew Cagney <cagney>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: unspecified   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:
Bug Depends on:    
Bug Blocks: 1553    
Attachments: Screenshot

Description Len DiMaggio 2006-06-19 17:07:59 UTC
When an observer fires -
frysk.gui.monitor.observers.TaskObserverRoot$1.addFailed(FryskGui)

Followup to bug: http://www.sourceware.org/bugzilla/show_bug.cgi?id=2802

If you then force the configured (e.g., Exec or Fork) observer to fire, by
executing a shell command (e.g., ls) from the tcsh shell being observed, this
exception results:

Error occurred while adding observer

frysk.gui.monitor.observers.TaskObserverRoot$1.addFailed(FryskGui)
frysk.proc.OffspringObserver$1.execute(FryskGui)
frysk.event.EventLoop.runEventLoop(FryskGui)
frysk.event.EventLoop.run(FryskGui)
frysk.gui.Gui$3.run(FryskGui)
frysk.gui.Gui$3.run(FryskGui)
java.lang.Thread.run(libgcj.so.7)

I'm not sure if this is a problem - or if something is just not yet complete -
but this is the same behavior as the RHEL4/U4 Frysk update errata.
Comment 1 Len DiMaggio 2006-06-19 17:08:25 UTC
Created attachment 1103 [details]
Screenshot
Comment 2 Phil Muldoon 2006-06-19 18:28:07 UTC
This is actually a rewrapped exception from the core indicating that adding an
observer had failed. The core message was lost, but I fixed that.

	2006-06-19  Phil Muldoon  <pmuldoon@redhat.com>
	
	* observers/TaskObserverRoot.java (addFailed): Wrap original core
	exception up in Runtime Exception.


The original message from the core should now be preserved intact. I have a
hunch that it is the OffspringObserver throwing Process Lost.
Comment 3 Phil Muldoon 2006-06-23 15:34:22 UTC
The exception that occurs is now preserved. I've pasted the traceback:

java.lang.RuntimeException: Process lost: could not get the main thread of this
process.
{frysk.proc.LinuxProc@10333c0,pid=15639,state=running}

frysk.gui.monitor.observers.TaskObserverRoot$1.addFailed(FryskGui)
frysk.proc.OffspringObserver$1.execute(FryskGui)
frysk.event.EventLoop.runEventLoop(FryskGui)
frysk.event.EventLoop.run(FryskGui)
frysk.gui.Gui$3.run(FryskGui)
java.lang.Thread.run(libgcj.so.7)
Comment 4 Len DiMaggio 2006-06-23 15:35:01 UTC
On FC5, with Frysk built from CVS head on June 21 (16:00), a fork observer
attached to a tcsh process responds to 'ls' being executed from the tcsh process
with this entry in the Frysk gui 'Main Log'

Fri Jun 23 11:31:59 EDT 2006 PID 8960 triggered Fork Observer triggered Fork
Observer

And no exceptions are displayed in the gui or in the console from which FryskGui
was invoked.
Comment 5 Len DiMaggio 2006-06-23 15:38:35 UTC
Performing the same test as in comment #4 on RHEL4/U4 with the June22 spin -
write this to the Main Log when tcsh runs 'ls':

Fri Jun 23 11:32:07 EDT 2006 PID 9033 triggered Fork Observer triggered Fork
Observer
Fri Jun 23 11:32:07 EDT 2006 addFailed(Object observable, Throwable w):
{frysk.proc.LinuxProc@25c4c30,pid=9055,state=running} failed to add

And it writes this to the console from where Frysk was invoked:

frysk.gui.monitor.observers.TaskForkedObserver$1@2a909c0: .run() running runnable
frysk.gui.monitor.filters.TaskFilterPoint@fcf0f0 forking thread:
TaskFilterPoint.filter()
frysk.gui.monitor.filters.TaskFilterPoint@fcf0c8 forked thread:
TaskFilterPoint.filter()
frysk.gui.monitor.observers.TaskForkedObserver@256dea0 Fork Observer:
ObserverRoot.runActions()
23-Jun-06 11:32:07 AM frysk.gui.monitor.actions.LogAction execute
INFO: PID 9033 triggered Fork Observer triggered Fork Observer
Comment 6 Phil Muldoon 2006-06-23 15:41:06 UTC
Sorry the exception was being sent to the wrong log. Fixed in HEAD. It will now
produce dialog with message in comment #3
Comment 7 Phil Muldoon 2006-06-27 15:55:49 UTC
2006-06-27  Phil Muldoon  <pmuldoon@redhat.com>

        * StressAttachDetachRapidlyForkingMainTask.java: Add refreshTimer.
        Add brokenXXX() to make sure testsuite passes.

2006-06-26  Phil Muldoon  <pmuldoon@redhat.com>

        * StressAttachDetachRapidlyForkingMainTask.java: New.

This testcase simulates a refresh during a short lived fork() event. It will
produce many short lived forks. Helps to reproduce the scenario as described in
the bz.

Comment 8 Len DiMaggio 2006-06-30 14:10:58 UTC
Verified that this bug is fixed - the exception is not raied - as of Frysk built
from CVS head on 20060629.