History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: LPP-5321
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: P0 P0
Assignee: Unassigned
Reporter: Max Carlson
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
OpenLaszlo

Serious memory leak for CSS styled nodes

Created: 02/Jan/08 11:59 PM   Updated: 30/Jan/08 04:20 PM
Component/s: LFC - CSS
Affects Version/s: RingDing (4.1)
Fix Version/s: RingDing (4.1), Eskimo Pie (4.0.8)

Time Tracking:
Not Specified

Severity: Minor
Fixed in Change#: 7,717
Runtime: N/A
Flags: Emerald
Fix in hand: False


 Description  « Hide
Destroyed views with CSS styling leak quite badly. This testcase shows the problem, with the debugger:

<canvas>
    <stylesheet>
        leaky {
          color: "#00AA00";
        }
    </stylesheet>
    <class name="leaky" bgcolor="$style{'color'}" width="100" height="100"/>

    <simplelayout/>
    <button>Leak
        <handler name="onclick">
            var l = new lz.leaky(canvas)
            l.destroy();
        </handler>
    </button>

</canvas>

To use the memory leak detector, follow these steps:

1) Load the app in debug mode
2) In the debugger window run: Debug.printLength = 200000;
3) In the debugger window run: __LzDebug.markObjects(); and then wait til
it's done.
4) Click the 'leak' button a few times
5) In the debugger window run: __LzDebug.findNewObjects(); and then wait til
it's done.
6) In the debugger window run: Debug.write(__LzDebug.whyAlive().toString());

You should see several entries like this:
global.LzCSSStyle.__LZRuleCache.__U6820 (16): [[object Object], [object Object], [object Object], [object Object], [object Object]]
global.LzCSSStyle.__LZRuleCache.__U6563 (16): [[object Object], [object Object], [object Object], [object Object], [object Object]]

 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
P T Withington - 03/Jan/08 09:58 AM
r7717 | ptw | 2008-01-03 12:57:35 -0500 (Thu, 03 Jan 2008) | 24 lines
Changed paths:
   M /openlaszlo/trunk/WEB-INF/lps/lfc/core/LzNode.lzs
   M /openlaszlo/trunk/WEB-INF/lps/lfc/services/LzCSSStyle.js

Change 20080103-maxcarlson-H by maxcarlson@Roboto.lan on 2008-01-03 00:01:55 PST
    in /Users/maxcarlson/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Fix memory leaks for CSS-styled elements

New Features:

Bugs Fixed: LPP-5321 - Serious memory leak for CSS styled nodes

Technical Reviewer: ptw
QA Reviewer: mdemmon
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details: Attach style caches to the relevant nodes, instead of keeping global copies. This way, they're destroyed along with the nodes.
    

Tests: See LPP-5321. /trunk/test/style/metasuite.lzx continues to pass.


P T Withington - 03/Jan/08 11:08 AM
Migrated to Wafflecone for 4.0.8

r7719 | ptw | 2008-01-03 14:05:46 -0500 (Thu, 03 Jan 2008) | 38 lines
Changed paths:
   M /openlaszlo/branches/wafflecone
   M /openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/core/LzNode.lzs
   M /openlaszlo/branches/wafflecone/WEB-INF/lps/lfc/services/LzCSSStyle.js

Change 20080103-ptw-I by ptw@dueling-banjos.local on 2008-01-03 13:01:08 EST
    in /Users/ptw/OpenLaszlo/wafflecone
    for http://svn.openlaszlo.org/openlaszlo/branches/wafflecone

Summary: Merged revisions 7717 via svnmerge from
http://svn.openlaszlo.org/openlaszlo/trunk

QA Reviewer: mamye (pending)

Details:
........
  r7717 | ptw | 2008-01-03 12:57:35 -0500 (Thu, 03 Jan 2008) | 24 lines
  
  Change 20080103-maxcarlson-H by maxcarlson@Roboto.lan on 2008-01-03 00:01:55 PST
      in /Users/maxcarlson/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fix memory leaks for CSS-styled elements
  
  New Features:
  
  Bugs Fixed: LPP-5321 - Serious memory leak for CSS styled nodes
  
  Technical Reviewer: ptw
  QA Reviewer: mdemmon
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: Attach style caches to the relevant nodes, instead of keeping global copies. This way, they're destroyed along with the nodes.
      
  
  Tests: See LPP-5321. /trunk/test/style/metasuite.lzx continues to pass.
........


P T Withington - 03/Jan/08 11:16 AM
Fixed in Eskimo Pie, not Cranberry

P T Withington - 04/Jan/08 12:42 PM
Mamye Kratt
Trying to test http://www.openlaszlo.org/jira/browse/LPP-5321
Mamye Kratt
Not getting the output described in the decription and getting a failure in metasuite.
P T Withington
The fact that you don't see
P T Withington
global.LzCSSStyle.__LZRuleCache.__U6820 (16): [[object Object], [object Object], [object Object], [object Object], [object Object]]
P T Withington
is an indication that the leak is fixed.
Mamye Kratt
179 smoots [7 objects @ ~26 smoots each]:
global.LzFocus.lastfocus.__LZviewLinks: (£58) «Object#3| {_dbg_check: 58, _dbg_smoots: ...»
global.spriteroot.$m1.debugloader.loadmc1.reqobj: (£51) «Object#6| {_dbg_check: 51, _dbg_smoots: ...»
global.LzFocus.lastfocus.onx: (£27) «LzEvent#9| «lz.button».onx»
global.LzFocus.lastfocus.ony: (£27) «LzEvent#11| «lz.button».ony»
global.LzIdle.coi: (£8) «Array(1)#14| [Delegate for _level0.sprit...»
global.LzKeys.downKeysArray: (£8) «Array(2)#17| [17, 86]»
.: (£0) «¿movieclip?»
[object Object]
P T Withington
Yes, no LZRuleCache objects
Mamye Kratt
/trunk/test/style/metasuite.lzx continues to pass
Tests: 532 Failures: 1 Errors: 0
TestFailure: SimpleTestCase >>> testBasics failed: undefined
Compilation Warnings
resources/resource-not-found.lzx:35:44: Can't import \resource\main.lzx: bad mime type
resources/resource-not-found.lzx:48:50: The resource named 'sillyresource' has not been declared
P T Withington
The metasuite thing threw me too, but if you look closely at the debugger output, right after the ERROR, there is a WARNING saying that the error is a known failure. One might ask why it is not commented out, but I didn't...
P T Withington
If you run metasuite before the change, you see the same output.
Mamye Kratt
I see, I turned on debugging for that test case. I see the known error.
Mamye Kratt
now. :-)

Mamye Kratt - 04/Jan/08 12:48 PM
(wafflecone build r7719 - local build 4.0.8 RC)
 6) In the debugger window run: Debug.write(__LzDebug.whyAlive().toString());

You should see several entries like this (If it FAILS):
global.LzCSSStyle.__LZRuleCache.__U6820 (16): [[object Object], [object Object], [object Object], [object Object], [object Object]]
global.LzCSSStyle.__LZRuleCache.__U6563 (16): [[object Object], [object Object], [object Object], [object Object], [object Object]]

Got:
179 smoots [7 objects @ ~26 smoots each]:
global.LzFocus.lastfocus.__LZviewLinks: (£58) «Object#3| {_dbg_check: 58, _dbg_smoots: ...»
global.spriteroot.$m1.debugloader.loadmc1.reqobj: (£51) «Object#6| {_dbg_check: 51, _dbg_smoots: ...»
global.LzFocus.lastfocus.onx: (£27) «LzEvent#9| «lz.button».onx»
global.LzFocus.lastfocus.ony: (£27) «LzEvent#11| «lz.button».ony»
global.LzIdle.coi: (£8) «Array(1)#14| [Delegate for _level0.sprit...»
global.LzKeys.downKeysArray: (£8) «Array(2)#17| [17, 86]»
.: (£0) «¿movieclip?»
[object Object]

The above is okay
ptw@mac.com (3:36:09 PM): Yes, no LZRuleCache objects

========================

/trunk/test/style/metasuite.lzx continues to pass (this is ok, see bottom (known failure))

Tests: 532 Failures: 1 Errors: 0
TestFailure: SimpleTestCase >>> testBasics failed: undefined

Compilation Warnings
resources/resource-not-found.lzx:35:44: Can't import \resource\main.lzx: bad mime type
resources/resource-not-found.lzx:48:50: The resource named 'sillyresource' has not been declared

WARNING @attrselector/name-test.lzx#32: Redefining This is the canvas.title from 'css metasuite' to 'the title is here'
WARNING @attrselector/attrs.lzx#27: No CSS value found for node «lz.designerview#2| #gCanyon» for property name group
WARNING @attrselector/attrs.lzx#28: No CSS value found for node «lz.designerview#3| #gJareth» for property name group
WARNING @compiler/nicelibraryfile.lzx#5: No CSS value found for node «lz.designerview#4| #gBiblio» for property name group
WARNING @idselector/ids.lzx#6: No CSS value found for node «lz.designerview#5| #gPhilipAndrew» for property name group
WARNING @idselector/ids.lzx#7: No CSS value found for node «lz.designerview#6| #gGeorgeRobin» for property name group
WARNING @idselector/ids.lzx#8: No CSS value found for node «lz.designerview#7| #gIzzy» for property name group
WARNING @idselector/ids.lzx#9: No CSS value found for node «lz.designerview#8| #cabinet» for property name group
WARNING @idselector/ids.lzx#11: No CSS value found for node «lz.designerview#9» for property name group
WARNING @idselector/ids.lzx#12: No CSS value found for node «lz.designerview#10| #gFindMe» for property name group
WARNING @idselector/ids.lzx#13: No CSS value found for node «lz.designerview#11» for property name group
WARNING @resource/resource-not-found.lzx#25: No CSS value found for node «lz.view#12| #gMissing» for property name nostyledefined
this is not simple bbbb
WARNING @simple/simple.lzx#33: No CSS value found for node «lz.designerview#13| #gSoy» for property name group
WARNING @simple/simple.lzx#34: No CSS value found for node «lz.designerview#14| #gAngelica» for property name group
WARNING @simple/simple.lzx#35: No CSS value found for node «lz.designerview#15| #gTravis» for property name group
WARNING @simple/undefineds.lzx#24: No CSS value found for node «lz.box#16| #fazzleblarb» for property name idontexist
INFO: there should be a warning about a reference to an undefined property 'undef'
WARNING @neighborhood/kennedyfamily.lzx#4: No CSS value found for node «lz.street#17| #gEasyStreet» for property name streettype
WARNING @neighborhood/kennedyfamily.lzx#4: No CSS value found for node «lz.street#17| #gEasyStreet» for property name streetname
WARNING @neighborhood/kennedyfamily.lzx#5: No CSS value found for node «lz.house#18| #gKennedyHouse» for property name streetaddress
WARNING @neighborhood/kennedyfamily.lzx#5: No CSS value found for node «lz.house#18| #gKennedyHouse» for property name paintcolor
WARNING @neighborhood/kennedyfamily.lzx#5: No CSS value found for node «lz.house#18| #gKennedyHouse» for property name misc
WARNING @neighborhood/kennedyfamily.lzx#5: No CSS value found for node «lz.house#18| #gKennedyHouse» for property name paintcolor
WARNING @neighborhood/kennedyfamily.lzx#13: No CSS value found for node «lz.duck#19| #gDuck1» for property name bgcolor
WARNING @neighborhood/kennedyfamily.lzx#13: No CSS value found for node «lz.duck#19| #gDuck1» for property name misc
WARNING @neighborhood/kennedyfamily.lzx#14: No CSS value found for node «lz.duck#20| #gDuck2» for property name bgcolor
WARNING @neighborhood/kennedyfamily.lzx#14: No CSS value found for node «lz.duck#20| #gDuck2» for property name misc
WARNING @neighborhood/kennedyfamily.lzx#15: No CSS value found for node «lz.duck#21| #gDuck3» for property name bgcolor
WARNING @neighborhood/kennedyfamily.lzx#15: No CSS value found for node «lz.duck#21| #gDuck3» for property name misc
WARNING @neighborhood/kennedyfamily.lzx#16: No CSS value found for node «lz.duck#22| #gDuck4» for property name bgcolor
WARNING @neighborhood/kennedyfamily.lzx#16: No CSS value found for node «lz.duck#22| #gDuck4» for property name misc
WARNING @neighborhood/thestreet.lzx#3: No CSS value found for node «lz.street#23| #gStreet» for property name streettype
WARNING @neighborhood/thestreet.lzx#3: No CSS value found for node «lz.street#23| #gStreet» for property name streetname
WARNING @neighborhood/thestreet.lzx#4: No CSS value found for node «lz.house#24| #gSmithHouse» for property name streetaddress
WARNING @neighborhood/thestreet.lzx#4: No CSS value found for node «lz.house#24| #gSmithHouse» for property name paintcolor
WARNING @neighborhood/thestreet.lzx#4: No CSS value found for node «lz.house#24| #gSmithHouse» for property name misc
WARNING @neighborhood/thestreet.lzx#4: No CSS value found for node «lz.house#24| #gSmithHouse» for property name paintcolor
WARNING @neighborhood/thestreet.lzx#13: No CSS value found for node «lz.house#25| #gDowneyHouse» for property name streetaddress
WARNING @neighborhood/thestreet.lzx#13: No CSS value found for node «lz.house#25| #gDowneyHouse» for property name paintcolor
WARNING @neighborhood/thestreet.lzx#13: No CSS value found for node «lz.house#25| #gDowneyHouse» for property name misc
WARNING @neighborhood/thestreet.lzx#13: No CSS value found for node «lz.house#25| #gDowneyHouse» for property name paintcolor
WARNING @compiler/stylesheetelement-test.lzx#42: No CSS value found for node «lz.designerview#26| #gPlainDV» for property name group
WARNING @compiler/stylesheetelement-test.lzx#45: No CSS value found for node «lz.designerview#27| #gPhilip» for property name group
WARNING @compiler/stylesheetelement-test.lzx#46: No CSS value found for node «lz.designerview#28| #gGeorge» for property name group
WARNING @compiler/stylesheetelement-test.lzx#52: No CSS value found for node «lz.designerview#29| #mynewfun» for property name group
WARNING @elementselector/elementselector-test.lzx#8: No CSS value found for node «lz.designerview#30| #gRobbyElement» for property name group
WARNING @elementselector/elementselector-test.lzx#9: No CSS value found for node «lz.designerview#31| #gPatrickElement» for property name group
WARNING @elementselector/elementselector-test.lzx#10: No CSS value found for node «lz.designerview#32| #gSteveElement» for property name group
WARNING @simple/undefineds.lzx#20: reference to undefined property 'undef'
testBigParty
Lookup test took: 688
ERROR: Equals: expected 50 got 279
WARNING: expected 50 got 279 is a known failure in simple.lzx

Mamye Kratt - 04/Jan/08 12:49 PM
Need to test in trunk for ringding (after r7719)

Mamye Kratt - 30/Jan/08 04:20 PM
(trunk 4 local build r7930)
Successfully ran test case, both swf and dhtml, and followed the instructions in the bug.

Also ran test/style/metasuite.lzx in both swf and dhtml. It failed in dhtml, but I will file a separate bug because of the following warning when running in dhtml.

WARNING: Memory tracing is for experimental use only in this runtime.