Subject:SS4.6 103s: Crash - Ran out of VirtMemory and died Author:Lee Humphries Date:14 Apr 2003 10:41 PM
I was running an XSLT that reprocesses a moderately sized XML (9Meg) through the Stylus debugging XSLT processor.
The XSLT was going through its output phase (of which it had completely the first part successfully) when it began consuming memory with reckless abandon. The 'commit charge' went from around 700Meg to 2Gig (I have 512Meg of RAM), along the way I had to approve Windoze 2K increasing the size of the paging file, shortly after that Stylus crashed.
Subject:SS4.6 103s: Crash - Ran out of VirtMemory and died Author:Lee Humphries Date:14 Apr 2003 11:04 PM
Hey it's repeatable - Well that's a first for me.
Here's the next log. This time I just ran it using the Stylus XSLT processor (no debugging, no breakpoints).
As an aside I had just previously run the same XSLT through MSXML4 without incident and it used substantially less memory (roughly two orders of magnitude less)!
Subject:SS4.6 103s: Crash - Ran out of VirtMemory and died Author:Lee Humphries Date:15 Apr 2003 12:18 AM
I've now tried this XSLT against the other XSLT processors available through Stylus:
None of them consumed large amounts of memory.
Xalan-J, Saxon and MSXML.Net all took so long (many tens of minutes) that I just cancelled them.
MSXML3 took 43s and MSXML4 took 15s.
Subject:SS4.6 103s: Crash - Ran out of VirtMemory and died Author:Lee Humphries Date:15 Apr 2003 02:00 AM
I fixed up a bug in the XSLT and reran it against the various processors. Stylus was still the biggest memory hog compared with any of the others but it did finish in reasonably respectable time compared with the other debugging processors.
Subject:Re: SS4.6 103s: Crash - Ran out of VirtMemory and died Author:(Deleted User) Date:16 Apr 2003 07:47 AM
Hi Lee,
thanks for the test case; the excessive amount of memory required to
perform the transformation was due to a memory leak occurring while
processing the xsl:key instruction.
Subject:Re: SS4.6 103s: Crash - Ran out of VirtMemory and died Author:Lee Humphries Date:16 Apr 2003 06:49 PM
Hi Alberto,
>the excessive amount of memory required to
>perform the transformation was due to a
>memory leak occurring while processing the
>xsl:key instruction.
Great, you found something. What about xsl:variable and xsl:param when used as globals. I espcially have suspicions about when I use the document() function and assign the result to a global variable.