[Tcl Java] Re: [Tcl Java] JavaBean event is locking on evt.sync()

1999-12-09 Thread Mo DeJong

Run this same code in Jacl under jdb. When it locks up, interupt
the code and see which threads are locked. You should then be able
to get a backtrace for each of the threads to find out where
the deadlock is. I think this bug in in the notifier somewhere, so
it should deadlock both Jacl and Tcl Blend.

Mo Dejong
Cygnus Solutions

On Thu, 9 Dec 1999, Randolph S. Kahle wrote:

 
 I am making a lot of progress today understanding the JavaBean event 
 processing. But I am now stuck again.
 
 In the class EventAdaptor.java the method _processEvent(...) has the 
 following code:
 
 BeanEvent evt = new BeanEvent( interp, paramTypes, params, cmd );
 interp.getNotifier().queueEvent( evt, TCL.QUEUE_TAIL);
 evt.sync();
 
 When my JavaBean fires an event into the Adapter class created by Tcl (upon 
 registration using the java::bind command ), it locks up on the call to:
 
 evt.sync();
 
 (I put in trace print out).
 
 and never returns.
 
 What occurs to me is that there must be a Thread running on interp 
 somewhere that fetches these events and processes them internally. I do not 
 have any such threads running. Can someone point me to the point where I 
 must be "spinning" a thread on the other side of this event queue?
 
 I guess I'm missing a fundamental step here...
 
 Thanks!
 
 Randy Kahle
 
 
 
 The TclJava mailing list is sponsored by Scriptics Corporation.
 To subscribe:send mail to [EMAIL PROTECTED]  
  with the word SUBSCRIBE as the subject.
 To unsubscribe:  send mail to [EMAIL PROTECTED] 
  with the word UNSUBSCRIBE as the subject.
 To send to the list, send email to '[EMAIL PROTECTED]'. 
 
 


The TclJava mailing list is sponsored by Scriptics Corporation.
To subscribe:send mail to [EMAIL PROTECTED]  
 with the word SUBSCRIBE as the subject.
To unsubscribe:  send mail to [EMAIL PROTECTED] 
 with the word UNSUBSCRIBE as the subject.
To send to the list, send email to '[EMAIL PROTECTED]'. 



[Tcl Java] JavaBean event is locking on evt.sync()

1999-12-09 Thread Randolph S. Kahle

Mo,

I did as you suggested (this is the first time I've run jdb, so I hope I am 
using it to best advantage).

I have 7 Threads:

Thread-1 (running)
AWT-EventQueue-0 (cond. wait)
PostEventQueue-0  (cond. wait)
AWT-Windows   (running)
IFC   (cond. wait)  (Yes, I am using IFC!)
TimerQueue(cond. wait)
interpreterworker (cond. wait)
Screen Updater(cond. wait)
Login eventing(cond. wait)

The thread that is blocked on the evt.sync() method is the Login eventing 
thread.

 From my reading of the Jacl source code, there is a test to see if this 
thread (the "Login eventing" thread) is the primary thread for this 
interpreter's notifier. Since it is not (it was created late in the game), 
then - as I understand it - some other thread is supposed to be on the 
other side of the event queue pulling off events.

Where is this thread? I guess that is where I am really confused.

My architecture is using a single interpreter and we send commands from a 
GUI console-type source as well as hitting the interpreter from threads 
that are "helper threads" for the IFC. That is -- The IFC thread responds 
to the button press and create the "login event", it hands this off (via 
proper synchronization) to the "Login eventing" threads, which then "fires" 
the event into the Tcl system.

It is this "Login eventing" thread that is getting blocked.

Does this information help? Or should I do more research?

Thanks -- Randy


I can see the thread blocked on the evt.sync() call (outlined below)

At 02:48 PM 12/9/99 , Mo DeJong wrote:
Run this same code in Jacl under jdb. When it locks up, interupt
the code and see which threads are locked. You should then be able
to get a backtrace for each of the threads to find out where
the deadlock is. I think this bug in in the notifier somewhere, so
it should deadlock both Jacl and Tcl Blend.

Mo Dejong
Cygnus Solutions

On Thu, 9 Dec 1999, Randolph S. Kahle wrote:

 
  I am making a lot of progress today understanding the JavaBean event
  processing. But I am now stuck again.
 
  In the class EventAdaptor.java the method _processEvent(...) has the
  following code:
 
  BeanEvent evt = new BeanEvent( interp, paramTypes, params, cmd );
  interp.getNotifier().queueEvent( evt, TCL.QUEUE_TAIL);
  evt.sync();
 
  When my JavaBean fires an event into the Adapter class created by Tcl 
 (upon
  registration using the java::bind command ), it locks up on the call to:
 
  evt.sync();
 
  (I put in trace print out).
 
  and never returns.
 
  What occurs to me is that there must be a Thread running on interp
  somewhere that fetches these events and processes them internally. I do 
 not
  have any such threads running. Can someone point me to the point where I
  must be "spinning" a thread on the other side of this event queue?
 
  I guess I'm missing a fundamental step here...
 
  Thanks!
 
  Randy Kahle
 
 
  
  The TclJava mailing list is sponsored by Scriptics Corporation.
  To subscribe:send mail to [EMAIL PROTECTED]
   with the word SUBSCRIBE as the subject.
  To unsubscribe:  send mail to [EMAIL PROTECTED]
   with the word UNSUBSCRIBE as the subject.
  To send to the list, send email to '[EMAIL PROTECTED]'.
 
 


The TclJava mailing list is sponsored by Scriptics Corporation.
To subscribe:send mail to [EMAIL PROTECTED]
  with the word SUBSCRIBE as the subject.
To unsubscribe:  send mail to [EMAIL PROTECTED]
  with the word UNSUBSCRIBE as the subject.
To send to the list, send email to '[EMAIL PROTECTED]'.


The TclJava mailing list is sponsored by Scriptics Corporation.
To subscribe:send mail to [EMAIL PROTECTED]  
 with the word SUBSCRIBE as the subject.
To unsubscribe:  send mail to [EMAIL PROTECTED] 
 with the word UNSUBSCRIBE as the subject.
To send to the list, send email to '[EMAIL PROTECTED]'.