Forum Discussion

Jon's avatar
Jon
Contributor
16 years ago

Crash in soapui pro

Good morning!

I've scaled up my test rig to add a base list of 10,000 objects.  Then, I enter an infinite loop (with a 5s delay before repeating) which:


  • Deletes a group

  • Adds a new group

  • Adds all 10,000 previously created objects to the new group

  • Adds a config element to each of the 10,000 objects in the group (via a command sent to the group)

  • Delay 5s

  • Rinse and repeat until stopped by the operator


This ran for a short while last night before crashing:

17:42:24,771 INFO  [SchemaUtils] Loading schema types from [http://192.168.2.39/
MyProjectServicesBinding.wsdl]
17:42:24,771 INFO  [SchemaUtils] Getting schema http://192.168.2.39/MyProjectSe
rvicesBinding.wsdl
17:42:29,177 INFO  [HttpClientSupport$Helper] Initializing SSL
17:47:09,849 INFO  [WsdlProject] Saved project [MyProject] to [C:\Documents an
d Settings\Jon\My Documents\MyProject-soapui-project-idc.xml - 187303 bytes

17:47:09,849 INFO  [WorkspaceImpl] Saved workspace to [C:\Documents and Settings
\Jon\default-soapui-workspace.xml]
17:48:28,818 INFO  [WsdlProject] Saved project [MyProject] to [C:\Documents an
d Settings\Jon\My Documents\MyProject-soapui-project-idc.xml - 187303 bytes

17:48:28,818 INFO  [WorkspaceImpl] Saved workspace to [C:\Documents and Settings
\Jon\default-soapui-workspace.xml]
Exception in thread "MemoryMonitor" java.lang.OutOfMemoryError: Java heap space
        at com.eviware.soapui.support.monitor.MonitorPanel$Surface.run(MonitorPa
nel.java:203)
        at java.lang.Thread.run(Unknown Source)
Exception in thread "Image Fetcher 3" java.lang.OutOfMemoryError: Java heap spac
e
        at java.awt.image.RGBImageFilter.filterIndexColorModel(Unknown Source)
        at java.awt.image.RGBImageFilter.setColorModel(Unknown Source)
        at sun.awt.image.ImageDecoder.setColorModel(Unknown Source)
        at sun.awt.image.GifImageDecoder.readImage(Unknown Source)
        at sun.awt.image.GifImageDecoder.produceImage(Unknown Source)
        at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
        at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
        at sun.awt.image.ImageFetcher.run(Unknown Source)
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap spac
e
        at sun.awt.image.GifImageDecoder.<init>(Unknown Source)
        at sun.awt.image.InputStreamImageSource.getDecoder(Unknown Source)
        at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
        at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
        at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
        at sun.awt.image.ImageFetcher.run(Unknown Source)
23:02:41,520 ERROR [SoapUI] An error occured [Java heap space], see error log fo
r details

9 Replies

  • Jon's avatar
    Jon
    Contributor
    Good morning,

    I scaled back that test to 2000 nodes... same procedure as before. 

    First thing I noticed was this error in the console log, after which, things seemed to slow down dramatically:

    15:21:09,421 INFO  [WorkspaceImpl] Saved workspace to [C:\Documents and Settings
    \Jon\default-soapui-workspace.xml]
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at javax.swing.BufferStrategyPaintManager.flushAccumulatedRegion(Unknown
    Source)
            at javax.swing.BufferStrategyPaintManager.endPaint(Unknown Source)
            at javax.swing.RepaintManager.endPaint(Unknown Source)
            at javax.swing.JComponent._paintImmediately(Unknown Source)
            at javax.swing.JComponent.paintImmediately(Unknown Source)
            at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
            at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
            at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
            at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknow
    n Source)
            at java.awt.event.InvocationEvent.dispatch(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)


    After that, it was working, but slowly and I could see the memory utilization steadily climb.  I've got 2GB in the machine (500MB used by a vmware instance, leaving 1.5GB for WinXP).  Last evening, soapUI ran out of memory and popped up a dialog asking me if I wanted to exit without saving.  I don't know how many loop iterations it was able to complete before crashing (well, technically, it didn't actually "crash" - I was able to control the program and tell it to exit) - but it did stop the test with the out of memory error.

    A screen dump from the console window:

    23:11:51,890 ERROR [WsdlTestCaseRunner] Exception during TestCase Execution
    java.lang.OutOfMemoryError: Java heap space
            at org.apache.xmlbeans.impl.store.CharUtil.allocate(CharUtil.java:397)
            at org.apache.xmlbeans.impl.store.CharUtil.saveChars(CharUtil.java:441)
            at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.text(Cur.java:2922)

            at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.xmlns(Cur.java:3023
    )
            at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale.
    java:3248)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.j
    ava:1082)
            at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.
    java:4957)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290)

            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:140
    0)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714)
            at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3444
    )
            at org.apache.xmlbeans.impl.store.Locale.parse(Locale.java:711)
            at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:69
    5)
            at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:68
    2)
            at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaType
    LoaderBase.java:208)
            at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:580)
            at com.eviware.soapui.support.xml.XmlUtils.prettyPrintXml(XmlUtils.java:
    486)
            at com.eviware.soapui.impl.wsdl.submit.transports.http.SinglePartHttpRes
    ponse.getContentAsString(SinglePartHttpResponse.java:155)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlResponseMessageExchange.ge
    tResponseContent(WsdlResponseMessageExchange.java:97)
            at com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange.hasResponse(W
    sdlMessageExchange.java:50)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion.assertRes
    ponse(WsdlMessageAssertion.java:139)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.assertResponse
    (WsdlTestRequest.java:144)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.setResponse(Ws
    dlTestRequest.java:130)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.run(WsdlTe
    stRequestStep.java:298)
            at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.run(WsdlTest
    CaseRunner.java:185)
            at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
            at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
            at java.util.concurrent.FutureTask.run(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source
    )
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa
    ce
            at org.apache.xmlbeans.impl.store.CharUtil.allocate(CharUtil.java:397)
            at org.apache.xmlbeans.impl.store.CharUtil.saveChars(CharUtil.java:441)
            at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.text(Cur.java:2922)

            at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.xmlns(Cur.java:3023
    )
            at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale.
    java:3248)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.j
    ava:1082)
            at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.
    java:4957)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290)

            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:140
    0)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714)
            at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3444
    )
            at org.apache.xmlbeans.impl.store.Locale.parse(Locale.java:711)
            at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:69
    5)
            at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:68
    2)
            at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaType
    LoaderBase.java:208)
            at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:580)
            at com.eviware.soapui.support.xml.XmlUtils.prettyPrintXml(XmlUtils.java:
    486)
            at com.eviware.soapui.impl.wsdl.submit.transports.http.SinglePartHttpRes
    ponse.getContentAsString(SinglePartHttpResponse.java:155)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlResponseMessageExchange.ge
    tResponseContent(WsdlResponseMessageExchange.java:97)
            at com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange.hasResponse(W
    sdlMessageExchange.java:50)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getAssertionSt
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getIcon(WsdlTe
    stRequest.java:269)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.getIcon(Ws
    dlTestRequestStep.java:219)
            at com.eviware.soapui.impl.wsdl.panels.testcase.TestStepList$TestStepCel
    lRenderer.getListCellRendererComponent(TestStepList.java:227)
            at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
            at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Sou
    rce)
            at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
            at javax.swing.JComponent.getPreferredSize(Unknown Source)
            at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
            at java.awt.Container.preferredSize(Unknown Source)
            at java.awt.Container.getPreferredSize(Unknown Source)
            at javax.swing.JComponent.getPreferredSize(Unknown Source)
    Exception occurred during event dispatching:
    java.lang.OutOfMemoryError: Java heap space
            at org.apache.xmlbeans.impl.store.CharUtil.allocate(CharUtil.java:397)
            at org.apache.xmlbeans.impl.store.CharUtil.saveChars(CharUtil.java:441)
            at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.text(Cur.java:2922)

            at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.xmlns(Cur.java:3023
    )
            at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale.
    java:3248)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.j
    ava:1082)
            at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.
    java:4957)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290)

            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:140
    0)
            at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714)
            at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3444
    )
            at org.apache.xmlbeans.impl.store.Locale.parse(Locale.java:711)
            at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:69
    5)
            at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:68
    2)
            at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaType
    LoaderBase.java:208)
            at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:580)
            at com.eviware.soapui.support.xml.XmlUtils.prettyPrintXml(XmlUtils.java:
    486)
            at com.eviware.soapui.impl.wsdl.submit.transports.http.SinglePartHttpRes
    ponse.getContentAsString(SinglePartHttpResponse.java:155)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlResponseMessageExchange.ge
    tResponseContent(WsdlResponseMessageExchange.java:97)
            at com.eviware.soapui.impl.wsdl.submit.WsdlMessageExchange.hasResponse(W
    sdlMessageExchange.java:50)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getAssertionSt
    atus(WsdlTestRequest.java:229)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getIcon(WsdlTe
    stRequest.java:269)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.getIcon(Ws
    dlTestRequestStep.java:219)
            at com.eviware.soapui.impl.wsdl.panels.testcase.TestStepList$TestStepCel
    at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.getIcon(WsdlTe
    stRequest.java:269)
            at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.getIcon(Ws
    dlTestRequestStep.java:219)
            at com.eviware.soapui.impl.wsdl.panels.testcase.TestStepList$TestStepCel
    lRenderer.getListCellRendererComponent(TestStepList.java:227)
            at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
            at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Sou
    rce)
            at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
            at javax.swing.JComponent.getPreferredSize(Unknown Source)
            at java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
            at java.awt.Container.preferredSize(Unknown Source)
            at java.awt.Container.getPreferredSize(Unknown Source)
            at javax.swing.JComponent.getPreferredSize(Unknown Source)
    Exception occurred during event dispatching:
    java.lang.OutOfMemoryError: Java heap space
            at java.awt.image.DataBufferInt.<init>(Unknown Source)
            at java.awt.image.Raster.createPackedRaster(Unknown Source)
            at java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknow
    n Source)
            at sun.awt.image.SunVolatileImage.getBackupImage(Unknown Source)
            at sun.awt.image.VolatileSurfaceManager.getBackupSurface(Unknown Source)

            at sun.awt.image.VolatileSurfaceManager.initialize(Unknown Source)
            at sun.awt.image.SunVolatileImage.<init>(Unknown Source)
            at sun.awt.image.SunVolatileImage.<init>(Unknown Source)
            at java.awt.GraphicsConfiguration.createCompatibleVolatileImage(Unknown
    Source)
            at java.awt.GraphicsConfiguration.createCompatibleVolatileImage(Unknown
    Source)
            at javax.swing.RepaintManager.getVolatileOffscreenBuffer(Unknown Source)

            at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
            at javax.swing.RepaintManager.paint(Unknown Source)
            at javax.swing.JComponent.paint(Unknown Source)
            at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
            at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
            at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
            at java.awt.Container.paint(Unknown Source)
            at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
            at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
            at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
            at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknow
    n Source)
            at java.awt.event.InvocationEvent.dispatch(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.Dialog$1.run(Unknown Source)
            at java.awt.event.InvocationEvent.dispatch(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    Exception occurred during event dispatching:
    java.lang.OutOfMemoryError: Java heap space
    Exception occurred during event dispatching:
    java.lang.OutOfMemoryError: Java heap space
    Exception occurred during event dispatching:
    java.lang.OutOfMemoryError: Java heap space


    Going to scale back to < 1000 nodes and try again.
  • Jon's avatar
    Jon
    Contributor
    I scaled back the test to 1000 nodes and changed the order of steps slightly (to create a objects which broadcast packets on the network AFTER the 1000 nodes are created, rather than before).  The reordering means I have a second loop to create the packet generating objects rather than combineing that step in the first loop which sets up the parameters for those objects.

    Regardless, the test is proceeding, however, it will fail... memory is still being consumes at a great rate.  Check out these images.  The first three are from the original test setup, the last is from the adjusted setup (where the packet generators are setup after the nodes are created).



    The long rise in this next image indicates that the test is now in the add a group, add nodes to the group, send command to the group, delete the group loop.



    Finally, the test exhausted the allocated memory and flatlined.  The test still runs though tere are a lot of nullpointer exceptions and out of bounds errors in the console log.  As well, the test step numbers appear to be decrementing when in a loop.. check out this pic to see what I mean:
  • omatzura's avatar
    omatzura
    Super Contributor
    Hi Jon,

    thanks for all your detailed info.. could you please try selecting the "Errors Only" option in the TestCase Log Options dialog to see if that helps (at least in the short term..) If you need/want to see all log entries, maybe you can use the "Discard Removed" option instead. (Internally all teststep results are kept and will fill up memory in a long-running test like this..)

    I'll have a closer look at this meanwhile..

    regards!

    /Ole
    eviware.com
  • Jon's avatar
    Jon
    Contributor
    That does work to keep the test running.  It's currently using around 150MB with 5000 nodes being created (down to around 100 MB in the infinite loop portion of the test).

    Update: It's actually varying between loop iterations... some loops use less memory than others (each ramp is a llop iteratin, followed by a delay and "gototeststep" call).  The last run (right-most ramp) used over 150MB RAM and bumped the allocation to over 170MB).  Currently, it's nearly 4/5 through a loop iteration and it's using around 125MB.



    What is the difference between the "Discard OK Results" setting in the testcase options dialog and the "Discard Removed" setting in the testcase log options dialog?  As well, what is the "Follow" setting (testcase log options) for?  I tried searching for the docs for this dialog but couldn't seem to find any.
  • omatzura's avatar
    omatzura
    Super Contributor
    Hi Jon,

    The "Discard OK Results" option discards the actual contents of a TestStep Result (for example the request/response messages) if the step passed ok, but still shows/keeps the TestStep Result in the log. The "Discard Removed" option removes TestStep results rolled out from the log from memory alltogether (the previous option does not do this); you can safely check this if you are not accessing results or want to create reports after the run of your TestCase. Finally, the "Follow" setting should automatically always highlight/scroll the last result into view.

    regards!

    /Ole
    eviware.com
  • Jon's avatar
    Jon
    Contributor
    Hey Ole,

    Thank you for the clarification.

    This morning, the test was still running and memory usage was up to around 175MB (245MB allocated at some point between yesterday afternoon and this morning).

    Anything else I can do to ease memory usage?

    Cheers!
    Jon
  • omatzura's avatar
    omatzura
    Super Contributor
    Hi Jon,

    hmm.. you could decrease the size of the TestCase Log (default is 1000 rows), but you shouldn't be seing any more constant increase in memory consumption (even if it's slow).. do you?

    regards!

    /Ole
    eviware.com
  • Jon's avatar
    Jon
    Contributor
    Hi Ole,

    Yes, memory is still being slowly consumed.  It's improved, in that I can now run an overnight test, but it's still consuming memory.  We've not yet scaled up the test to really hammer our system... we still have much more to do, so this is a huge concern for us going forward.

    Cheers!
    Jon
  • omatzura's avatar
    omatzura
    Super Contributor
    Hi Jon,

    ok, I wonder if you could send me the soapUI project file containing this test so I can try to run it locally with a profiler.. !? (ole@eviware.com)

    regards,

    /Ole
    eviware.com