|Anonymous | Login||01-21-2022 01:47 UTC|
|Main | My View | View Issues | Change Log | Docs|
|Viewing Issue Advanced Details [ Jump to Notes ]||[ View Simple ] [ 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|
|Summary||0007092: #fixObsoleteReferences error when orphaned MagmaMutatingProxies exists|
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
|Steps To Reproduce|
|Attached Files||SystemNavigation-obsoleteBehaviors.st [^] (509 bytes) 06-11-08 23:41|
(0012295 - 603 - 693 - 693 - 693 - 693 - 693)
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)
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)
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?
|06-11-08 23:41||hfm||New Issue|
|06-11-08 23:41||hfm||File Added: SystemNavigation-obsoleteBehaviors.st|
|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.