Re: Memory leak in WOLips?

From: Guillaume Polet (guillaumedenal..mail.com)
Date: Tue May 15 2007 - 08:54:41 EDT

  • Next message: Mike Schrag: "Re: Memory leak in WOLips?"

    You're the best Mike. Everybody tells it, but it is the truth. Never
    seen a bug solved so fast.

    For the fact that it is the first time you heard of this, it is probably
    due to that not so many people use the automatic refresh (default is set
    to false) and that I don't think many people update hundreds of files
    simultaneaously. WOLips is used quite intensively here because we use
    generators of components, resources and classes.

    Anyway, Mike, you rule! Thank you very much,

    Guillaume

    Mike Schrag a écrit :
    > By the way, I use Eclipse all day for many many (many) hours without a
    > crash, so while this was definitely leaking, I'm not sure why yours
    > would be outright crashing. This is the first I've heard of that
    > behavior.
    >
    > ms
    >
    > On May 15, 2007, at 8:32 AM, Mike Schrag wrote:
    >
    >> Yes it would appear so ... Strange it was never noticed before. I
    >> just committed a fix for this.
    >>
    >> ms
    >>
    >> On May 15, 2007, at 8:01 AM, Guillaume Polet wrote:
    >>
    >>> Hello everybody,
    >>>
    >>> once again, many thanks for this great tool that has been
    >>> simplifying our work for several years now.
    >>>
    >>> I was wondering if any of you had knowledge about a possible memory
    >>> leak in WOLips. I have this bug now for a little while, and I see
    >>> the same error constantly in the logs: 'SWTError: No more handles'.
    >>> So far, I cannot be 100% sure that WOlips is the cause of the crash
    >>> I get constantly so I was wondering if any of you encountered the
    >>> same problem or if you have found the cause of such problem.
    >>>
    >>> Here is what I have tested to try to isolate the problem:
    >>> I opened my Eclipse on a new workspace in which I checked out a
    >>> single Framework project containing lots of resources/web-resources
    >>> (over 500) and a single Java class (which is empty). Then I change
    >>> the setting "refresh automatically workspace" so that the automatic
    >>> refresh is active.
    >>> Finally, I take a command line, set the current directory to be the
    >>> project I have checked out and type "touch *", wait for Eclipse to
    >>> catch the modification, wait for Eclipse rebuild, then I re-execute
    >>> the "touch *" a few times and Eclipse ends up by crashing (last time
    >>> I tried, I only had to do it twice to make Eclipe crash).
    >>>
    >>> I have tested the same operation in a Java project (making the touch
    >>> on java source code) and the problem never occurs. I reported my
    >>> configuration and the stacktrace below.
    >>>
    >>> Thank you again,
    >>>
    >>>
    >>> Guillaume Polet
    >>>
    >>> Denali S.A., "Bridging the gap between Business and IT"
    >>> Rue de Clairvaux 8, B-1348 Louvain-la-Neuve, Belgium
    >>> Office: +32 10 43 99 51 Fax: +32 10 43 99 52
    >>> http://www.denali.be
    >>>
    >>> My configuration is the following:
    >>> Eclipse 3.2 (M20060629-1905)
    >>> OS: Windows XP
    >>> JVM: JRE 1.5.0_09
    >>> Memory: 2Gb
    >>> CPU: Pentium D 2.8GHz
    >>> Installed plugins:
    >>> * WST
    >>> * WOLips build 2.0.0.3921
    >>> * Epic (Perl Editor)
    >>> * VelocityEditor
    >>> Cygwin is installed and its bin directory has been added to the PATH
    >>> variable.
    >>>
    >>> The stacktrace I get:
    >>> org.eclipse.swt.SWTError: No more handles
    >>> at org.eclipse.swt.SWT.error(SWT.java:3400)
    >>> at org.eclipse.swt.SWT.error(SWT.java:3297)
    >>> at org.eclipse.swt.SWT.error(SWT.java:3268)
    >>> at org.eclipse.swt.graphics.Image.init(Image.java:1803)
    >>> at org.eclipse.swt.graphics.Image.init(Image.java:1901)
    >>> at org.eclipse.swt.graphics.Image.<init>(Image.java:490)
    >>> at
    >>> org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:295)
    >>>
    >>> at
    >>> org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:233)
    >>>
    >>> at
    >>> org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:211)
    >>>
    >>> at
    >>> org.objectstyle.wolips.ui.labeldecorator.ResourcesLabelDecorator.createImagewithName(Unknown
    >>> Source)
    >>> at
    >>> org.objectstyle.wolips.ui.labeldecorator.ResourcesLabelDecorator.webServerResourcesImage(Unknown
    >>> Source)
    >>> at
    >>> org.objectstyle.wolips.ui.labeldecorator.ResourcesLabelDecorator.decorateImage(Unknown
    >>> Source)
    >>> at
    >>> org.eclipse.ui.internal.decorators.FullDecoratorDefinition.decorateImage(FullDecoratorDefinition.java:114)
    >>>
    >>> at
    >>> org.eclipse.ui.internal.decorators.FullImageDecoratorRunnable.run(FullImageDecoratorRunnable.java:28)
    >>>
    >>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
    >>> at org.eclipse.core.runtime.Platform.run(Platform.java:843)
    >>> at
    >>> org.eclipse.ui.internal.decorators.DecoratorManager.safeDecorateImage(DecoratorManager.java:418)
    >>>
    >>> at
    >>> org.eclipse.ui.internal.decorators.DecoratorManager.decorateImage(DecoratorManager.java:372)
    >>>
    >>> at
    >>> org.eclipse.jface.viewers.DecoratingLabelProvider.getImage(DecoratingLabelProvider.java:89)
    >>>
    >>> at
    >>> org.eclipse.jface.viewers.DecoratingLabelProvider.updateLabel(DecoratingLabelProvider.java:356)
    >>>
    >>> at
    >>> org.eclipse.jface.viewers.StructuredViewer.buildLabel(StructuredViewer.java:2077)
    >>>
    >>> at
    >>> org.eclipse.jface.viewers.TreeViewer.doUpdateItem(TreeViewer.java:252)
    >>> at
    >>> org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:95)
    >>>
    >>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
    >>> at org.eclipse.core.runtime.Platform.run(Platform.java:843)
    >>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:44)
    >>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:149)
    >>> at
    >>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:840)
    >>>
    >>> at
    >>> org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.doUpdateItem(ProblemTreeViewer.java:74)
    >>>
    >>> at
    >>> org.eclipse.jdt.internal.ui.viewsupport.ResourceToItemsMapper.updateItem(ResourceToItemsMapper.java:74)
    >>>
    >>> at
    >>> org.eclipse.jdt.internal.ui.viewsupport.ResourceToItemsMapper.resourceChanged(ResourceToItemsMapper.java:63)
    >>>
    >>> at
    >>> org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.handleLabelProviderChanged(ProblemTreeViewer.java:127)
    >>>
    >>> at
    >>> org.eclipse.jface.viewers.ContentViewer$1.labelProviderChanged(ContentViewer.java:74)
    >>>
    >>> at
    >>> org.eclipse.ui.internal.decorators.DecoratorManager$1.run(DecoratorManager.java:239)
    >>>
    >>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
    >>> at org.eclipse.core.runtime.Platform.run(Platform.java:843)
    >>> at
    >>> org.eclipse.ui.internal.decorators.DecoratorManager.fireListener(DecoratorManager.java:237)
    >>>
    >>> at
    >>> org.eclipse.ui.internal.decorators.DecorationScheduler$3.runInUIThread(DecorationScheduler.java:490)
    >>>
    >>> at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:94)
    >>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    >>> at
    >>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
    >>>
    >>> at
    >>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3325)
    >>> at
    >>> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2971)
    >>> at
    >>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
    >>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
    >>> at
    >>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
    >>>
    >>> at
    >>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    >>> at
    >>> org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
    >>> at
    >>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
    >>>
    >>> at
    >>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
    >>>
    >>> at
    >>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
    >>>
    >>> at
    >>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
    >>>
    >>> at
    >>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
    >>>
    >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    >>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    >>> at java.lang.reflect.Method.invoke(Unknown Source)
    >>> at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
    >>> at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
    >>> at org.eclipse.core.launcher.Main.run(Main.java:977)
    >>> at org.eclipse.core.launcher.Main.main(Main.java:952)
    >>>
    >>
    >>
    >
    >
    >

    -- 
    Guillaume Polet
    

    Denali S.A., "Bridging the gap between Business and IT" Rue de Clairvaux 8, B-1348 Louvain-la-Neuve, Belgium Office: +32 10 43 99 51 Fax: +32 10 43 99 52 http://www.denali.be

    Legal notice: this message and its attachments may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message by mistake, please advise the sender immediately by return e-mail and delete this message from your system. Thank you for your cooperation.



    This archive was generated by hypermail 2.0.0 : Tue May 15 2007 - 08:55:20 EDT