[kaffe] Re: Destroyed strings...

Godmar Back gback@stanford.edu
Wed, 5 Jun 2002 14:39:24 -0600 (MDT)


 
 You're right.  We can't have strings pending to be
destroyed in the intern table when there's a chance others might
try to intern identical strings.
So we must synchronize against the intern lock somehow,
ideally without deadlocking.  

	- Godmar

> 
> > 
> > Godmar wrote:
> > > The string with the dead char array should at this point already be
> > > scheduled for destruction.  So one possible way would be to take the
> > > gc_lock and block on intern() if the mustfree is not empty.
> > 
> > That seems like it might work...
> > 
> > 
> > > A quick hack would be to destroy all strings first then the rest,
> > > this way a string would always be destroyed before its char[]
> > > object.
> > 
> > Hmmm... actually, we could pretty easily have two mustfree lists.  One
> > for objects with "destroy" methods, and one for all the other objects.
> > That would accomplish the ordering without too much magic required in
> > finishGC.
> > 
> > Its not pretty, though.
> 
> Don't we still having the same problem with a second thread though:
> 
> thread    action
> U1        s = io.readLine(); // reads "FooBar"
> GC        STOPWORLD();
> GC        puts interned "FooBar" on mustfree list.
> GC        RESUMEWORLD();
> U1        s.intern();
> GC        stringDestory("FooBar");
> 
> Now U1 has a pointer to something thats been freed...  right?  Maybe i'm
> missing something.
> 
> > Given that we know what's happening, I've been surprised by the fact
> > that I can't come up with a test case that causes this problem on
> > existing Kaffe, or other engines.  I'd have more faith in a fix for
> > this problem if there was a test case that caused the problem on more
> > installations of Kaffe than just the 
> > interp-debug-with-per-JNI-method-exceptions-patch....
> >
> > Let me know if you can come up with a test case that tickles this
> > problem....
> 
> seems impossible to make something reliable here...
> 
> > -Pat
> 
> tim
> 
> _______________________________________________
> kaffe mailing list
> kaffe@kaffe.org
> http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
>