Roassal memory leak

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

Roassal memory leak

jfabry
Hi all,

as quickly reported before, there is a memory leak in Roassal. I have a reproducible case that shows this behavior when having popups. This is simply using the Easel and the examples present there. I am convinced that a similar problem exists when context menus are used, but the Easel does not have such an example, apparently, so I do not include one. I hope this one example is enough to be able to find the issue for both cases.

How to reproduce:
Paste the following code in a Workspace in the 4.8 release. (Thanks to Alex for the last line ;-) )

Smalltalk garbageCollect.
Smalltalk garbageCollect.
{ ROPopup . ROElement . ROAnnouncer . ROBox . ROLabel } collect: [:c | c allInstances size]

Print-it of this code after each step below, you should get the numbers that I pasted as well.

Step 1: Do nothing
 #(0 0 0 0 0)
Step 2:  Have Easel showing ROExample>>ClassHierarchy
 #(0 235 293 47 204)
S3: Close the Easel
 #(0 235 293 47 204)

This for me is already strange. I would expect it to go back to the numbers of Step 1, i.e. zero of everything.

S4: Save-quit image, reopen (just in case there is some magic)
 #(0 235 293 47 204)
S5: Show ROExample>>ClassHierarchy, close Easel
 #(0 235 293 47 204)

I repeated S5 a number of times. The numbers are the same. So at least we have a steady state, that's not really an issue.

S6: With Easel showing ROExample>>punchChart
 #(15 267 307 76 207)
S7: After closing Easel
 #(15 267 307 76 207)

Nothing got collected.

S8: With Easel showing ROExample>>punchChart
 #(30 300 342 101 224)
S9: After closing Easel
 #(30 300 342 101 224)

Again nothing got collected.

S10: With Easel showing ROExample>>punchChart
 #(45 333 377 126 241)
S11: After closing Easel
 #(45 333 377 126 241)

(and so on). This is a big issue for me, because I have a lot of popups in AspectMaps, and a lot of re-executing the visualization script. I effortlessly get to images of 300+ megs this way, when starting from 50 megs before starting to visualize things.

Hope this helps in finding the bug,

---> Save our in-boxes! http://emailcharter.org <---

Johan Fabry   -   http://pleiad.cl/~jfabry
PLEIAD lab  -  Computer Science Department (DCC)  -  University of Chile


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

Re: Roassal memory leak

Stéphane Ducasse
there is probably a problem with announcer.
        - first do not use weak announcer with blocks.

        - esteban and igor spent some days thikning and exploring the problems
        apparently there is a problem with the legacy registration mechanism.
        we will see how to address this problem in Pharo 2.0.

Stef

On Sep 15, 2013, at 7:06 PM, Johan Fabry <[hidden email]> wrote:

> Hi all,
>
> as quickly reported before, there is a memory leak in Roassal. I have a reproducible case that shows this behavior when having popups. This is simply using the Easel and the examples present there. I am convinced that a similar problem exists when context menus are used, but the Easel does not have such an example, apparently, so I do not include one. I hope this one example is enough to be able to find the issue for both cases.
>
> How to reproduce:
> Paste the following code in a Workspace in the 4.8 release. (Thanks to Alex for the last line ;-) )
>
> Smalltalk garbageCollect.
> Smalltalk garbageCollect.
> { ROPopup . ROElement . ROAnnouncer . ROBox . ROLabel } collect: [:c | c allInstances size]
>
> Print-it of this code after each step below, you should get the numbers that I pasted as well.
>
> Step 1: Do nothing
> #(0 0 0 0 0)
> Step 2:  Have Easel showing ROExample>>ClassHierarchy
> #(0 235 293 47 204)
> S3: Close the Easel
> #(0 235 293 47 204)
>
> This for me is already strange. I would expect it to go back to the numbers of Step 1, i.e. zero of everything.
>
> S4: Save-quit image, reopen (just in case there is some magic)
> #(0 235 293 47 204)
> S5: Show ROExample>>ClassHierarchy, close Easel
> #(0 235 293 47 204)
>
> I repeated S5 a number of times. The numbers are the same. So at least we have a steady state, that's not really an issue.
>
> S6: With Easel showing ROExample>>punchChart
> #(15 267 307 76 207)
> S7: After closing Easel
> #(15 267 307 76 207)
>
> Nothing got collected.
>
> S8: With Easel showing ROExample>>punchChart
> #(30 300 342 101 224)
> S9: After closing Easel
> #(30 300 342 101 224)
>
> Again nothing got collected.
>
> S10: With Easel showing ROExample>>punchChart
> #(45 333 377 126 241)
> S11: After closing Easel
> #(45 333 377 126 241)
>
> (and so on). This is a big issue for me, because I have a lot of popups in AspectMaps, and a lot of re-executing the visualization script. I effortlessly get to images of 300+ megs this way, when starting from 50 megs before starting to visualize things.
>
> Hope this helps in finding the bug,
>
> ---> Save our in-boxes! http://emailcharter.org <---
>
> Johan Fabry   -   http://pleiad.cl/~jfabry
> PLEIAD lab  -  Computer Science Department (DCC)  -  University of Chile
>
>
> _______________________________________________
> 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