Suspected bug when setting preferences

View: New views
6 Messages — Rating Filter:   Alert me  

Suspected bug when setting preferences

by stan shepherd :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

The attached test case fails in a new sq3.10.1-7175dev08.06.1 image. (or
sq3.9.1-7075dev08.07.1.image).

testPreferenceSaving
        PreferenceBrowser new saveSelected.
        Smalltalk garbageCollect.
        self should: [SystemNavigation default obsoleteBehaviors size = 0]

SystemNavigation default obsoleteBehaviors inspect actually
has 400+ entries.

Most of the entries are BooleanPreferenceView class or PBBooleanPreferenceView
class, but also other classes such as Scrollbar, UIThemeStandardSqueak, ...

Am I right in thinking this is incorrect behaviour?

...Stan



_______________________________________________
Beginners mailing list
Beginners@...
http://lists.squeakfoundation.org/mailman/listinfo/beginners

TestPreferenceSaving.st (662 bytes) Download Attachment

Re: Suspected bug when setting preferences

by nicolas cellier :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

squeak414@... a écrit :

> The attached test case fails in a new sq3.10.1-7175dev08.06.1 image. (or
> sq3.9.1-7075dev08.07.1.image).
>
> testPreferenceSaving
> PreferenceBrowser new saveSelected.
> Smalltalk garbageCollect.
> self should: [SystemNavigation default obsoleteBehaviors size = 0]
>
> SystemNavigation default obsoleteBehaviors inspect actually
> has 400+ entries.
>
> Most of the entries are BooleanPreferenceView class or PBBooleanPreferenceView
> class, but also other classes such as Scrollbar, UIThemeStandardSqueak, ...
>
> Am I right in thinking this is incorrect behaviour?
>
> ...Stan
>

I tried this in a 3.10 7159 image, inspected one of the
obsoleteBehaviors and got:

self == PBBooleanPreferenceView.
        "-> false"
PBBooleanPreferenceView. == PBBooleanPreferenceView.
        "-> true"
self class == PBBooleanPreferenceView class.
        "-> true"
self methodDictionary == PBBooleanPreferenceView methodDictionary.
        "-> true"

Seems to be quite a good clone of (Smaaltalk at: #PBBooleanPreferenceView).
Let see if there is any other instance:

self class allInstances size.
        "-> 1"

Hmm, i expected at least 2, self and PBBooleanPreferenceView.

self class allInstances detect: [:e | e == self] ifNone: [].
        "-> nil"
self class allInstances detect: [:e | e == PBBooleanPreferenceView]
ifNone: [].
        "-> PBBooleanPreferenceView"

Is it class that is lying?
There is a single implementors of class, and it is <primitive 111>...
So what? Is it allInstances that is lying?
Ah yes, Metaclass>>allInstances
        thisClass class == self ifTrue:[^Array with: thisClass].
        ^super allInstances
So i cannot get allInstances this way.

| inst next all |
all := OrderedCollection new.
inst := self class someInstance.
[inst == nil]
        whileFalse:
        [
        next := inst nextInstance.
        all add: inst.
        inst := next].
^all

Yes indeed, 168 clones of PBBooleanPreferenceView...
We now have to figure out who created these clones, for what purpose,
before deciding if it is a bug, but it looks like a bug indeed...

Nicolas

_______________________________________________
Beginners mailing list
Beginners@...
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Re: Suspected bug when setting preferences

by stan shepherd :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


nicolas cellier wrote:

Yes indeed, 168 clones of PBBooleanPreferenceView...
We now have to figure out who created these clones, for what purpose,
before deciding if it is a bug, but it looks like a bug indeed...

Nicolas
It happens in
Preferences>>savePersonalPreferences
        "Save the current list of Preference settings as the user's personal choices"

        self  setParameter:#PersonalDictionaryOfPreferences
                 to:self dictionaryOfPreferences deepCopy

I think during the deepCopy.

...Stan

Re: Suspected bug when setting preferences

by nicolas cellier :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

stan shepherd wrote:

>
>
> nicolas cellier wrote:
>>
>>
>> Yes indeed, 168 clones of PBBooleanPreferenceView...
>> We now have to figure out who created these clones, for what purpose,
>> before deciding if it is a bug, but it looks like a bug indeed...
>>
>> Nicolas
>>
>>
>
> It happens in
> Preferences>>savePersonalPreferences
> "Save the current list of Preference settings as the user's personal
> choices"
>
> self  setParameter:#PersonalDictionaryOfPreferences
> to:self dictionaryOfPreferences deepCopy
>
> I think during the deepCopy.
>
> ...Stan

Using veryDeepCopy instead of deepCopy would avoid cloning classes
(as the name does not help to guess).

Well, this would deserve some guru advice, I don't much like all these
copy messages... But veryDeepCopy seems much better than deepCopy. The
later is not immune to infinite loops in case of circular references...

Nicolas

_______________________________________________
Beginners mailing list
Beginners@...
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Re: Suspected bug when setting preferences

by nicolas cellier :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

nice wrote:

> stan shepherd wrote:
>>
>>
>> nicolas cellier wrote:
>>>
>>>
>>> Yes indeed, 168 clones of PBBooleanPreferenceView...
>>> We now have to figure out who created these clones, for what purpose,
>>> before deciding if it is a bug, but it looks like a bug indeed...
>>>
>>> Nicolas
>>>
>>>
>>
>> It happens in Preferences>>savePersonalPreferences
>>     "Save the current list of Preference settings as the user's personal
>> choices"
>>
>>     self  setParameter:#PersonalDictionaryOfPreferences
>>          to:self dictionaryOfPreferences deepCopy
>>
>> I think during the deepCopy.
>>
>> ...Stan
>
> Using veryDeepCopy instead of deepCopy would avoid cloning classes
> (as the name does not help to guess).
>
> Well, this would deserve some guru advice, I don't much like all these
> copy messages... But veryDeepCopy seems much better than deepCopy. The
> later is not immune to infinite loops in case of circular references...
>
> Nicolas

I forgot this, Stan:

You gathered enough material to open a bug report at http://bugs.squeak.org

You should check about deepCopy/Preferences already reported issue, then
create a login an fill a bug form.

Cheers

_______________________________________________
Beginners mailing list
Beginners@...
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Re: Suspected bug when setting preferences

by stan shepherd :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


nicolas cellier wrote:
I forgot this, Stan:

You gathered enough material to open a bug report at http://bugs.squeak.org

You should check about deepCopy/Preferences already reported issue, then
create a login an fill a bug form.
Reported as 7128. However, I logged it to Squeak-Dev, but in retrospect it should probably be to Squeak itself?
...Stan