RE: [tcljava-dev] Latest 1.3.0 build and INterp.evalFile()
Brought to you by:
mdejong
|
From: W. J. G. <gu...@ea...> - 2001-03-26 18:37:23
|
Mo,
Here's the stack if it helps:
_assert(void * 0x0e808054, void * 0x0e808010, unsigned int 293) line 256
JavaGetEnv() line 293 + 29 bytes
FreeTclObject(Tcl_Obj * 0x000c68f8) line 185 + 5 bytes
DeleteArray(Interp * 0x000bd048, char * 0x000a6c28, Var * 0x000b2c28, int
321) line 4631 + 93 bytes
TclDeleteVars(Interp * 0x000bd048, Tcl_HashTable * 0x000cd0f8) line 4442 +
50 bytes
TclTeardownNamespace(Namespace * 0x000cd068) line 736 + 18 bytes
DeleteInterpProc(Tcl_Interp * 0x000bd048) line 963 + 12 bytes
Tcl_EventuallyFree(int * 0x000bd048, void (char *)* 0x0e826995
DeleteInterpProc(Tcl_Interp *)) line 313 + 7 bytes
Tcl_DeleteInterp(Tcl_Interp * 0x000bd048) line 901 + 14 bytes
Java_tcl_lang_Interp_doDispose(const JNINativeInterface_ * * 0x08a2d884,
_jobject * 0x0e7bfcf4, __int64 1044831918095061064) line 208 + 10 bytes
0082b871()
0082939a()
0082939a()
0082939a()
JVM! 504d4eae()
JVM! 5040e87a()
JVM! 50430987()
JVM! 5040e77f()
JVM! 5040e4fd()
JVM! 5041b998()
JVM! 50447ba3()
JVM! 50447b74()
MSVCRT! 7800a3c0()
KERNEL32! 77db2c18()
> -----Original Message-----
> From: tcl...@li...
> [mailto:tcl...@li...]On Behalf Of Mo DeJong
> Sent: Friday, March 23, 2001 1:36 AM
> To: tcl...@li...
> Subject: RE: [tcljava-dev] Latest 1.3.0 build and INterp.evalFile()
>
>
> On Wed, 21 Mar 2001, W. John Guineau wrote:
>
> > Hi Mo,
> >
> > You mentioned previously on this (or another) list that there were some
> > problems remaining in 1.3.0 to do with termination?
>
> Yeah, I think our multi-threaded startup stuff is ok.
> It is the shutdown that seems to have problems.
>
> > Would that be the assert I'm seeing in the TclBlend.DLL at:
> >
> > src/native/javaCmd.c:
> >
> > TCLBLEND_EXTERN JNIEnv *JavaGetEnv()
> > {
> > ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
> > assert(tsdPtr->initialized);
> > return tsdPtr->currentEnv;
> > }
> >
> >
> > It seems to happen when calling Interp.destroy().
>
> Humm, that says to me that the JavaGetEnv() method is getting
> called after the thread has been cleaned up. Could you provide
> a nice little test case for this problem? If you really want
> to lend a hand, designing some test cases that will check
> the startup and shutdown cases would really help. They
> are tricky because they are not like any of the other tests.
> Startup and shutdown tests might need to be run as separate
> programs before running the normal "make check" rule.
>
> > Also - if I have a notifier thread sitting in
> notifier.doOneEvent(), what's
> > the recomended way to get it out? Right now, I just send it an
> empty string
> > to eval() and that causes the notifier.doOneEvent() while() loop to exit
> > (taking the thread with it).
>
> Do you mean you want to make another thread exit from one that
> you are in? I think you would to use the Thread package for
> that. I think you send a thread::exit command to your target
> thread using the thread::send command. My memory is a little
> fuzzy in this area so I could be way off.
>
> http://dev.scriptics.com/ftp/thread//thread21.html
>
> Mo DeJong
> Red Hat Inc
>
> _______________________________________________
> tcljava-dev mailing list
> tcl...@li...
> http://lists.sourceforge.net/lists/listinfo/tcljava-dev
|