On Thu, Dec 31, 2009 at 2:33 AM, Marcus Denker <[email protected]>wrote:
> > On Dec 31, 2009, at 9:50 AM, Stéphane Ducasse wrote: > > > Probably the changes of Martin von Lowis. > > Yes. The changeset had code to migrate all instances... it might be that > the debugger's use > of WeakKeyDictionary was added by Eliot? This would explain why it was not > migrated. > Yes, DebuggerMethodMap is mine. A DebuggerMethodMap maps between the vector of temp names in the lower right-hand debugger window and temp locations in method activations. This is much more complex using closures tan blue-book blocks since in-scope temps are spread from a closure through its nested closures out to the home method. The cache holds the maps for the most recent N methods inspected with the debugger (N=16). The cache is weak so as not to hold onto methods that get deleted or redefined. As far as registering the cache for finalization or not, I would defer to someone familiar with Squeak weak collections. I think I'm right in thinking that in VW a weak dictionary will be automatically finalized and will keep its tally correct. One only needs to register for finalization if something needs to happen besides simply removing elements. So when I implemented this in Squeak I could easily have got things wrong. > > I suggest to just do the reset in a postscript in one of the next updates, > and it's fixed. > > > > I imagine that when marcus is bad from holidays he can tell us more. > > > > I'm back... kind of. Decided not to travel to south germany this morning > after moving boxes > for 3 days... better to have an > IKEA-unboxing-relaxing-reading-emails-hacking-weekend. > > Marcus > > > > > Now I try to reproduce it in 11128. > > > > I put a self halt in a method and execute the method. > > And I got no problem. > > After I tried to select 'self halt' + doit in the debugger itself and it > worked too. > > > > Did you have a way reproduce it systematically ? > > > > Stef > > On Dec 31, 2009, at 4:17 AM, Martin McClure wrote: > > > >> This one's pretty nasty. > >> > >> Symptom: > >> > >> The debugger in recent and current 1.1 images is completely broken. > >> > >> To reproduce (save your image first!): > >> > >> "self halt" doit. It goes into an infinite loop, and if there's a way to > >> get out of that without killing the VM I'd like to know about it. Alt-. > >> works, but just tries to open another debugger, which goes into another > >> infinite loop, etc. > >> > >> > >> > >> Cause: > >> > >> DebuggerMethodMap>MapCache is a WeakIdentityKeyDictionary, but it is > >> corrupt. It has an array of 22 nils, expired is 0, so it contains > >> nothing, but tally=16. > >> > >> This causes MapCache to lie about its size. > >> > >> This drives DebuggerMethodMap class>>cacheDebugMap:forMethod: into an > >> infinite loop, the whileTrue: condition is always true, it keeps trying > >> to remove non-existent elements to get the size to be less than 16 but > >> the size is always 16. > >> > >> I don't see any obvious code paths to get into this state. I suspect it > >> may have been left in this state when weak collections were updated with > >> the new code not too long ago. > >> > >> > >> Cure: > >> > >> In an inspector, set tally=0. Debuggers then work again. > >> > >> Not sure how to package this as a slice, so I'll leave the update to > >> someone else, and get back to hashing, which was hard when every > >> walkback froze my system :-) > >> > >> > >> Regards, > >> > >> -Martin > >> > >> _______________________________________________ > >> Pharo-project mailing list > >> [email protected] > >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > > > > > _______________________________________________ > > Pharo-project mailing list > > [email protected] > > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >
_______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
