Glamour-roassal does not unsubscribe when browser error

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Glamour-roassal does not unsubscribe when browser error

Usman Bhatti
Hello,

I had a "Not enough memory" problem in my Moose image so digging the error (with Jean-Baptiste) reveals that when there is an error in a glamour browser, roassal visualization does not unsubscribe events. In my case, it retained the browser objects in the memory because these were pointed to by the subscriptions and this the browser was not releasing my MooseModel. 

To reproduce the problem, you can execute the script below. On the right pane, right click on any node and then do, "select in tree". Close browser, garbage collect, and then do: MOAnnouncer allInstances. There are few instances related to MOAnnouncer that exist in the memory. Without the error, these objects disappear.

Can you please have a look?

tx,
Usman

| browser items |
browser := GLMTabulator withStatusbar.
items := 50.
browser column: #one; column: #two.
browser transmit to: #one; andShow: [ :a |
(a tree)
title: 'Tree';
showOnly: 30;
display: [:each | 1 to: items];
children: [ :item :x :level | level > 1
ifTrue: [ #() ]
ifFalse: [ 1 to: item ]]].
browser transmit to: #two; from: #one; andShow: [ :a |
a mondrian 
title: 'Numbers in Mondrian list';
painting: [:view :number |
view interaction item: 'Select in tree' action: [:each | ((browser paneNamed: #one) port:#selection) value:41 ].
view interaction on: ROMouseEnter do: [ :n |  ].
view shape rectangle size: 10.
view nodes: (Collection withAllSubclasses).
view edgesFrom: #superclass.
view treeLayout. 

]
].
browser openOn: 1


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Glamour-roassal does not unsubscribe when browser error

abergel
> browser transmit to: #two; from: #one; andShow: [ :a |
> a mondrian
> title: 'Numbers in Mondrian list';
> painting: [:view :number |
> view interaction item: 'Select in tree' action: [:each | ((browser paneNamed: #one) port:#selection) value:41 ].
> view interaction on: ROMouseEnter do: [ :n |  ].
>

Using Mondrian with Roassal events?

Alexandre

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Glamour-roassal does not unsubscribe when browser error

Usman Bhatti



On Sat, Jan 26, 2013 at 2:04 PM, Alexandre Bergel <[hidden email]> wrote:
>       browser transmit to: #two; from: #one; andShow: [ :a |
>               a mondrian
>                       title: 'Numbers in Mondrian list';
>                       painting: [:view :number |
>                       view interaction item: 'Select in tree' action: [:each | ((browser paneNamed: #one) port:#selection) value:41 ].
>                       view interaction on: ROMouseEnter do: [ :n |  ].
>

Using Mondrian with Roassal events?

yep, that was unintended. Here, the one that shows the problem with Roassal.

| browser items |
browser := GLMTabulator withStatusbar.
items := 50.
browser column: #one; column: #two.
browser transmit to: #one; andShow: [ :a |
(a tree)
title: 'Tree';
showOnly: 30;
display: [:each | 1 to: items];
children: [ :item :x :level | level > 1
ifTrue: [ #() ]
ifFalse: [ 1 to: item ]]].
browser transmit to: #two; from: #one; andShow: [ :a |
a roassal 
title: 'Numbers in Mondrian list';
painting: [:view :number |
view interaction item: 'Select in tree' action: [:each | ((browser paneNamed: #one) port:#selection) value:41 ].
view interaction on: ROMouseEnter do: [ :n |  ].
view shape rectangle size: 10.
view nodes: (Collection withAllSubclasses).
view edgesFrom: #superclass.
view treeLayout. 

]
].
browser openOn: 1
 

Alexandre

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev


_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Glamour-roassal does not unsubscribe when browser error

Ben Coman
In reply to this post by Usman Bhatti
Usman Bhatti wrote:

> Hello,
>
> I had a "Not enough memory" problem in my Moose image so digging the error
> (with Jean-Baptiste) reveals that when there is an error in a glamour
> browser, roassal visualization does not unsubscribe events. In my case, it
> retained the browser objects in the memory because these were pointed to by
> the subscriptions and this the browser was not releasing my MooseModel.
>
> To reproduce the problem, you can execute the script below. On the right
> pane, right click on any node and then do, "select in tree". Close browser,
> garbage collect, and then do: MOAnnouncer allInstances. There are few
> instances related to MOAnnouncer that exist in the memory. Without the
> error, these objects disappear.
>
> Can you please have a look?
>
> tx,
> Usman
>
> | browser items |
> browser := GLMTabulator withStatusbar.
> items := 50.
> browser column: #one; column: #two.
>  browser transmit to: #one; andShow: [ :a |
> (a tree)
> title: 'Tree';
> showOnly: 30;
> display: [:each | 1 to: items];
> children: [ :item :x :level | level > 1
> ifTrue: [ #() ]
> ifFalse: [ 1 to: item ]]].
>  browser transmit to: #two; from: #one; andShow: [ :a |
> a mondrian
> title: 'Numbers in Mondrian list';
> painting: [:view :number |
> view interaction item: 'Select in tree' action: [:each | ((browser
> paneNamed: #one) port:#selection) value:41 ].
> view interaction on: ROMouseEnter do: [ :n |  ].
>  view shape rectangle size: 10.
> view nodes: (Collection withAllSubclasses).
> view edgesFrom: #superclass.
>  view treeLayout.
>
> ]
> ].
> browser openOn: 1
>  
In my image running since Sept 2012, [ROAnnouncer allInstances] gives
10878 items.

In a freshly unzipped moose-suite-4_7-beta from 2013-01-03...
Initially [ROAnnouncer allInstances] gives 0 items, and [Announcer
allSubInstances] gives 8 items.
After running Roassal Tests, these give 1108 items and 1258 items.
After running Roassal Tests again, these give 2238 and 3073 items.
Closing TestRunner and [Smalltalk garbageCollect] do not reduce these
values.


What is the best way clear this out?  

 From Explorer when I use [PointerExplorer new openExplorerFor: self] on
one random ROAnnouncer instance, there are 24 objects holding a
reference to it - but I don't don where to go from there.  An
interesting exercise would be using Roassal to graph the network
structure of instance dependencies, but that is a distraction I can't
afford at the moment.

btw, in the course of looking at this, I came across this interesting post
http://onsmalltalk.com/squeak-smalltalk-image-maintenance
It would be REAL NICE to have something like that as part of the
distribution under the System menu, which bought up a list of items with
checkboxes for cleanup tasks that could be run.

cheers -ben
_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Reply | Threaded
Open this post in threaded view
|

Re: Glamour-roassal does not unsubscribe when browser error

abergel
Very good point Ben!

We will work on this

Alexandre


On Jan 27, 2013, at 1:47 AM, Ben Coman <[hidden email]> wrote:

> Usman Bhatti wrote:
>> Hello,
>>
>> I had a "Not enough memory" problem in my Moose image so digging the error
>> (with Jean-Baptiste) reveals that when there is an error in a glamour
>> browser, roassal visualization does not unsubscribe events. In my case, it
>> retained the browser objects in the memory because these were pointed to by
>> the subscriptions and this the browser was not releasing my MooseModel.
>>
>> To reproduce the problem, you can execute the script below. On the right
>> pane, right click on any node and then do, "select in tree". Close browser,
>> garbage collect, and then do: MOAnnouncer allInstances. There are few
>> instances related to MOAnnouncer that exist in the memory. Without the
>> error, these objects disappear.
>>
>> Can you please have a look?
>>
>> tx,
>> Usman
>>
>> | browser items |
>> browser := GLMTabulator withStatusbar.
>> items := 50.
>> browser column: #one; column: #two.
>> browser transmit to: #one; andShow: [ :a |
>> (a tree)
>> title: 'Tree';
>> showOnly: 30;
>> display: [:each | 1 to: items];
>> children: [ :item :x :level | level > 1
>> ifTrue: [ #() ]
>> ifFalse: [ 1 to: item ]]].
>> browser transmit to: #two; from: #one; andShow: [ :a |
>> a mondrian
>> title: 'Numbers in Mondrian list';
>> painting: [:view :number |
>> view interaction item: 'Select in tree' action: [:each | ((browser
>> paneNamed: #one) port:#selection) value:41 ].
>> view interaction on: ROMouseEnter do: [ :n |  ].
>> view shape rectangle size: 10.
>> view nodes: (Collection withAllSubclasses).
>> view edgesFrom: #superclass.
>> view treeLayout.
>>
>> ]
>> ].
>> browser openOn: 1
>>  
> In my image running since Sept 2012, [ROAnnouncer allInstances] gives 10878 items.
>
> In a freshly unzipped moose-suite-4_7-beta from 2013-01-03...
> Initially [ROAnnouncer allInstances] gives 0 items, and [Announcer allSubInstances] gives 8 items.
> After running Roassal Tests, these give 1108 items and 1258 items.
> After running Roassal Tests again, these give 2238 and 3073 items.
> Closing TestRunner and [Smalltalk garbageCollect] do not reduce these values.
>
>
> What is the best way clear this out?  
> From Explorer when I use [PointerExplorer new openExplorerFor: self] on one random ROAnnouncer instance, there are 24 objects holding a reference to it - but I don't don where to go from there.  An interesting exercise would be using Roassal to graph the network structure of instance dependencies, but that is a distraction I can't afford at the moment.
>
> btw, in the course of looking at this, I came across this interesting post
> http://onsmalltalk.com/squeak-smalltalk-image-maintenance
> It would be REAL NICE to have something like that as part of the distribution under the System menu, which bought up a list of items with checkboxes for cleanup tasks that could be run.
>
> cheers -ben
> _______________________________________________
> Moose-dev mailing list
> [hidden email]
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



_______________________________________________
Moose-dev mailing list
[hidden email]
https://www.iam.unibe.ch/mailman/listinfo/moose-dev