Mantis Bugtracker

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0007092 [Squeak Packages] Magma major always 06-11-08 23:41 06-16-08 06:20
Reporter hfm View Status public  
Assigned To chris
Priority normal Resolution open  
Status assigned  
Summary 0007092: #fixObsoleteReferences error when orphaned MagmaMutatingProxies exists
Description When evaluating

SmalltalkImage current fixObsoleteReferences

in a 3.9 image with Magma r41Beta2 (possibly applies to Beta3 too).
System hangs with: "NonBooleanReceiver: proceed for truth" in SystemNavigation>>obsoleteBehaviors

Patch submitted.
Additional Information
Attached Files [^] (509 bytes) 06-11-08 23:41

- Relationships

- Notes
(0012295 - 603 - 693 - 693 - 693 - 693 - 693)
06-12-08 21:10

Hi hfm, hi chris,

I looked at the patch
it calls #maIsMutatingProxy

Which is not defined anywhere in 3.10.1

Wouldn't that mean that any behaviors that should answer false would instead throw up a debugger?

Also when patching something it would be good to include a test. The test should fail before the patch is applied and pass after.

It is a good way to check one's work.
Checking one's work is a good way to gain the confidence of the harvesters.
And a good way to gaurentee you are protecting their time when they vet your fixes.

Yours in service and curiosity, --Jerome Peace
(0012298 - 630 - 642 - 642 - 642 - 642 - 642)
06-15-08 22:44

hfm, that is not a good solution, the problem is #obsoleteBehaviors is enumerating ALL objects in the image, including ones that do not inherit from Object, sending messages #isBehavior and #isObsolete won't work on those. Adding in a check for #maIsMutatingProxy would only catch the Magma proxies, not any other kinds of ProtoObjects and would still invoke the debugger.

You could move #isBehavior and #isObsolete to ProtoObject, but that would meet headwinds from those who say ProtoObject should have no methods. However, type-checks should reasonably be expected to work, since here we have system-level code using them.
(0012299 - 941 - 985 - 985 - 985 - 985 - 985)
06-16-08 06:20

Hi Jerome. #maIsMutatingProxy is included as part of Magma package in the MagmaTester repository. Although I've tested this under 3.9, I do not believe you'd find it without installing Magma.

My checking on this was a day by day work with Magma in a production environment. I do not send a test because the conditions under which a mutating proxy appears are not very clear to me. One I've found recently was sending "self class" in a method of a persisted object, this caused a 'Unable to realize Orphaned MagmaMutatingProxy'. I fixed this via an explicit send, i.e.: "self perform: #class". Is this condition correct and enough to reproduce the problem?

Chris: The patch was not intended to catch ProtoObjects, just bypass the Magma proxies since I had never saw a debugger in other cases when fixing obsolete references. Is there are a more clean or less intrusive solution without moving #isObsolete and #isBehavior to ProtoObject?

- Issue History
Date Modified Username Field Change
06-11-08 23:41 hfm New Issue
06-11-08 23:41 hfm File Added:
06-12-08 18:55 KenCausey Status new => assigned
06-12-08 18:55 KenCausey Assigned To  => chris
06-12-08 21:10 wiz Note Added: 0012295
06-15-08 22:44 chris Note Added: 0012298
06-16-08 06:20 hfm Note Added: 0012299

Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
46 total queries executed.
35 unique queries executed.
Powered by Mantis Bugtracker