Currently, TclBlend has a deadlock problem when the Java Garbage Collector
running as an independent GC thread tries to finalize a TclObject that wraps
around a C Tcl_Obj. The main reason is that the Tcl_Obj in Tcl is not meant
to be thread safe. A Tcl_Obj can only be free'ed by the same thread that
created it.
Mo has proposed a solution, in which we track the thread that created
TclObject wrapper on Tcl_Obj. Then, when the Java GC thread finalizes the
TclObject, the internal Tcl_Obj is queued to a "free list". At a later
point, the thread that created TclObject would be used to free the Tcl_Obj
on the "free list".
I see a potential problem with this approach when the thread does not use
the Tcl event queue. For example,
Interp interp = new Interp();
TclObject result = interp.getVar("x");
In this process, a TclObject with a Tcl_Obj is created. The thread
continues on doing other work without using the event queue of 'interp'.
How do we get this thread to free objects on the "free list"?
-- Jiang Wu
[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]'.
An archive is available at http://www.mail-archive.com/[email protected]