A deadlock in the designer

Swing Designer allows you to quickly create the frames, panels, dialogs, applets and other UI elements that comprise Java Swing applications.

Moderators: Konstantin.Scheglov, gnebling, Alexander.Mitin, jwren, Eric Clayberg

A deadlock in the designer

Postby Shlomi » Tue Jan 18, 2011 6:09 am

Hello,

We were working on some windows we built using older versions of the designer (6.x) with the newest version (8.1.1), and got a deadlock, between three threads..

here is the summary of the deadlock:
Found one Java-level deadlock:
=============================
"Worker-6":
waiting to lock monitor 0x09025404 (object 0x6606dbe0, a java.util.HashMap),
which is held by "Worker-4"
"Worker-4":
waiting to lock monitor 0xb79196d8 (object 0x685df5e8, a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader),
which is held by "main"
"main":
waiting to lock monitor 0x09024b08 (object 0x65f70330, a org.eclipse.equinox.launcher.Main$StartupClassLoader),
which is held by "Worker-4"

and the complete thread-dump:

Code: Select all
./eclipse
Parsing...2011-01-09 16:34:00
Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode, sharing):

"Worker-7" prio=10 tid=0x09a9dc00 nid=0x3c4 in Object.wait() [0x051a6000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x666f3ea8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
        - locked <0x666f3ea8> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-6" prio=10 tid=0xb756f000 nid=0x3c3 waiting for monitor entry [0x03bbe000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.osgi.framework.internal.core.Framework.getAdminPermission(Framework.java:1185)
        - waiting to lock <0x6606dbe0> (a java.util.HashMap)
        at org.eclipse.osgi.framework.internal.core.Framework.checkAdminPermission(Framework.java:1178)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.getEntry(AbstractBundle.java:1223)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.fetchLightPresentation(ComponentPresentationHelper.java:568)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.fillPresentations(ComponentPresentationHelper.java:547)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.access$1(ComponentPresentationHelper.java:523)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper$1.run(ComponentPresentationHelper.java:510)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"AWT-XAWT" daemon prio=10 tid=0x08dec400 nid=0x3c2 runnable [0x071de000]
   java.lang.Thread.State: RUNNABLE
        at sun.awt.X11.XToolkit.waitForEvents(Native Method)
        at sun.awt.X11.XToolkit.run(XToolkit.java:548)
        at sun.awt.X11.XToolkit.run(XToolkit.java:523)
        at java.lang.Thread.run(Thread.java:619)

"Java2D Disposer" daemon prio=10 tid=0x099d8400 nid=0x3c1 in Object.wait() [0x03da2000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x699c60b8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
        - locked <0x699c60b8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
        at sun.java2d.Disposer.run(Disposer.java:125)
        at java.lang.Thread.run(Thread.java:619)

"Worker-5" prio=10 tid=0x096a6000 nid=0x3b6 waiting for monitor entry [0x03b6d000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.osgi.internal.loader.BundleLoaderProxy.getBundleLoader(BundleLoaderProxy.java:56)
        at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
        at org.eclipse.osgi.internal.loader.MultiSourcePackage.loadClass(MultiSourcePackage.java:31)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:454)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        - locked <0x69239f18> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
        at org.eclipse.mylyn.commons.core.DelegatingProgressMonitor.attach(DelegatingProgressMonitor.java:52)
        at org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeRepositoriesJob.run(SynchronizeRepositoriesJob.java:86)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-4" prio=10 tid=0x090b4c00 nid=0x3b5 waiting for monitor entry [0x07fef000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at com.instantiations.designer.core.DesignerPlugin$5.isExitVM(DesignerPlugin.java:271)
        at com.instantiations.designer.core.DesignerPlugin$5.checkPermission(DesignerPlugin.java:242)
        at java.lang.SecurityManager.checkSecurityAccess(SecurityManager.java:1698)
        at java.security.Provider.check(Provider.java:386)
        at java.security.Provider.putAll(Provider.java:224)
        - locked <0x639a1588> (a sun.security.provider.Sun)
        at sun.security.action.PutAllAction.run(PutAllAction.java:35)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.security.provider.Sun.<init>(Sun.java:254)
        at sun.security.util.ManifestEntryVerifier.setEntry(ManifestEntryVerifier.java:110)
        at java.util.jar.JarVerifier.beginEntry(JarVerifier.java:145)
        at java.util.jar.JarVerifier$VerifierStream.<init>(JarVerifier.java:381)
        at java.util.jar.JarFile.getInputStream(JarFile.java:396)
        - locked <0x65f703b0> (a java.util.jar.JarFile)
        at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:689)
        at sun.misc.Resource.cachedInputStream(Resource.java:61)
        - locked <0x6399fca0> (a sun.misc.URLClassPath$JarLoader$2)
        at sun.misc.Resource.getByteBuffer(Resource.java:144)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:249)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
        - locked <0x65f70330> (a org.eclipse.equinox.launcher.Main$StartupClassLoader)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        - locked <0x65f70330> (a org.eclipse.equinox.launcher.Main$StartupClassLoader)
        at org.eclipse.osgi.framework.internal.core.Framework.getAdminPermission(Framework.java:1193)
        - locked <0x6606dbe0> (a java.util.HashMap)
        at org.eclipse.osgi.framework.internal.core.Framework.checkAdminPermission(Framework.java:1178)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.getEntry(AbstractBundle.java:1223)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.fetchLightPresentation(ComponentPresentationHelper.java:565)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.fillPresentations(ComponentPresentationHelper.java:544)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.access$1(ComponentPresentationHelper.java:520)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper$1.run(ComponentPresentationHelper.java:507)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-3" prio=10 tid=0x08d94800 nid=0x3b4 in Object.wait() [0x08ac4000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x698ac740> (a org.eclipse.ui.internal.Semaphore)
        at org.eclipse.ui.internal.Semaphore.acquire(Semaphore.java:43)
        - locked <0x698ac740> (a org.eclipse.ui.internal.Semaphore)
        at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:168)
        at org.eclipse.swt.widgets.Display.syncExec(Display.java:4113)
        at org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator.ensureFontAndColorsCreated(CVSLightweightDecorator.java:88)
        at org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator.<init>(CVSLightweightDecorator.java:73)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:170)
        at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:874)
        at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
        at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
        at org.eclipse.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugin.java:267)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:52)
        at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:263)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition$1.run(LightweightDecoratorDefinition.java:124)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.runtime.Platform.run(Platform.java:888)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.internalGetDecorator(LightweightDecoratorDefinition.java:120)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:251)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:81)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:365)
        at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:347)
        at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:371)
        at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:331)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-2" prio=10 tid=0x092f7000 nid=0x3b3 waiting for monitor entry [0x03e82000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.osgi.framework.internal.core.Framework.getAdminPermission(Framework.java:1185)
        - waiting to lock <0x6606dbe0> (a java.util.HashMap)
        at org.eclipse.osgi.framework.internal.core.Framework.checkAdminPermission(Framework.java:1178)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.getEntry(AbstractBundle.java:1223)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.fetchLightPresentation(ComponentPresentationHelper.java:568)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.fillPresentations(ComponentPresentationHelper.java:547)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.access$1(ComponentPresentationHelper.java:523)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper$1.run(ComponentPresentationHelper.java:510)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-1" prio=10 tid=0x08d45c00 nid=0x3b2 waiting for monitor entry [0x0587b000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.osgi.framework.internal.core.Framework.getAdminPermission(Framework.java:1185)
        - waiting to lock <0x6606dbe0> (a java.util.HashMap)
        at org.eclipse.osgi.framework.internal.core.Framework.checkAdminPermission(Framework.java:1178)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.getEntry(AbstractBundle.java:1223)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.fetchLightPresentation(ComponentPresentationHelper.java:565)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.fillPresentations(ComponentPresentationHelper.java:544)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.access$1(ComponentPresentationHelper.java:520)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper$1.run(ComponentPresentationHelper.java:507)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=10 tid=0xb773b800 nid=0x38a in Object.wait() [0x07f9f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x68847fd8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)
        at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
        - locked <0x68847fd8> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"Common Core Background Startup" daemon prio=10 tid=0x09270400 nid=0x388 waiting for monitor entry [0x08b19000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:253)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.basicOpen(ZipBundleFile.java:88)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.getZipFile(ZipBundleFile.java:101)
        - locked <0x6610f5b0> (a org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.checkedOpen(ZipBundleFile.java:74)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.getEntry(ZipBundleFile.java:246)
        - locked <0x6610f5b0> (a org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:527)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
        - locked <0x68683530> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
        at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:381)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:457)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        - locked <0x68683530> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
        at com.instantiations.common.core.PlatformInfo.getIDECompatibilityWarningMessage(Unknown Source)
        at com.instantiations.common.core.PlatformInfo.checkCompatibility(Unknown Source)
        at com.instantiations.common.core.CommonPlugin$1.run(Unknown Source)

"Java indexing" daemon prio=10 tid=0x0917b400 nid=0x387 in Object.wait() [0x039ea000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x68592ad8> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:381)
        - locked <0x68592ad8> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
        at java.lang.Thread.run(Thread.java:619)

"[Timer] - Main Queue Handler" daemon prio=10 tid=0x09026c00 nid=0x381 waiting for monitor entry [0x03999000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:253)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.basicOpen(ZipBundleFile.java:88)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.getZipFile(ZipBundleFile.java:101)
        - locked <0x66123ca8> (a org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.checkedOpen(ZipBundleFile.java:74)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.getEntry(ZipBundleFile.java:246)
        - locked <0x66123ca8> (a org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:527)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
        - locked <0x666931e0> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
        at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:381)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:457)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        - locked <0x666931e0> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
        at org.eclipse.equinox.internal.util.impl.tpt.threadpool.ThreadPoolManagerImpl.getInstance(ThreadPoolManagerImpl.java:84)
        at org.eclipse.equinox.internal.util.pool.ObjectPool.getObject(ObjectPool.java:156)
        - locked <0x6800a538> (a [[Ljava.lang.Object;)
        at org.eclipse.equinox.internal.util.impl.tpt.threadpool.ThreadPoolManagerImpl.getObject(ThreadPoolManagerImpl.java:95)
        at org.eclipse.equinox.internal.util.impl.tpt.threadpool.ThreadPoolManagerImpl.execute(ThreadPoolManagerImpl.java:201)
        - locked <0x6800a538> (a [[Ljava.lang.Object;)
        at org.eclipse.equinox.internal.util.impl.tpt.threadpool.ThreadPoolFactoryImpl.execute0(ThreadPoolFactoryImpl.java:112)
        at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:110)
        - locked <0x67ffa628> (a org.eclipse.equinox.internal.util.impl.tpt.timer.TimerQueue)
        at java.lang.Thread.run(Thread.java:619)

"Provisioning Event Dispatcher" daemon prio=10 tid=0xb7541c00 nid=0x37f in Object.wait() [0x03948000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x67753500> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:397)
        - locked <0x67753500> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:333)

"Worker-0" prio=10 tid=0xb7730800 nid=0x37e in Object.wait() [0x04bc6000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x699c65f8> (a org.eclipse.ui.internal.Semaphore)
        at org.eclipse.ui.internal.Semaphore.acquire(Semaphore.java:43)
        - locked <0x699c65f8> (a org.eclipse.ui.internal.Semaphore)
        at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:168)
        at org.eclipse.swt.widgets.Display.syncExec(Display.java:4113)
        at com.instantiations.designer.os.linux.Activator.earlyStartup(Activator.java:155)
        at org.eclipse.ui.internal.EarlyStartupRunnable.runEarlyStartup(EarlyStartupRunnable.java:87)
        at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:73)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.ui.internal.Workbench$55.run(Workbench.java:2192)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Bundle File Closer" daemon prio=10 tid=0xb77d8c00 nid=0x37d in Object.wait() [0x038f7000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x666da078> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:397)
        - locked <0x666da078> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:333)

"Framework Event Dispatcher" daemon prio=10 tid=0x08e6f000 nid=0x379 in Object.wait() [0x05b6f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x662062a8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:397)
        - locked <0x662062a8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:333)

"State Saver" daemon prio=10 tid=0x08e97800 nid=0x378 waiting for monitor entry [0x06925000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.osgi.internal.baseadaptor.BaseStorage.saveBundleDatas(BaseStorage.java:541)
        at org.eclipse.osgi.internal.baseadaptor.BaseStorage.saveAllData(BaseStorage.java:433)
        at org.eclipse.osgi.internal.baseadaptor.BaseStorage.access$1(BaseStorage.java:423)
        at org.eclipse.osgi.internal.baseadaptor.BaseStorage$StateSaver.run(BaseStorage.java:1199)
        - locked <0x6619da90> (a org.eclipse.osgi.internal.resolver.SystemState)
        at java.lang.Thread.run(Thread.java:619)

"Start Level Event Dispatcher" daemon prio=10 tid=0x08e4ac00 nid=0x377 in Object.wait() [0x038a6000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x661c3798> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:397)
        - locked <0x661c3798> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:333)

"State Data Manager" daemon prio=10 tid=0x08e53c00 nid=0x376 waiting on condition [0x03855000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.java:306)
        at java.lang.Thread.run(Thread.java:619)

"Low Memory Detector" daemon prio=10 tid=0x08d5ec00 nid=0x374 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x08d5bc00 nid=0x373 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x08d51800 nid=0x372 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0x08d49c00 nid=0x371 in Object.wait() [0x00bac000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x65f70238> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
        - locked <0x65f70238> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x08d48800 nid=0x370 in Object.wait() [0x004fa000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x65f702c0> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0x65f702c0> (a java.lang.ref.Reference$Lock)

"main" prio=10 tid=0x08d22800 nid=0x362 waiting for monitor entry [0xbfd3f000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.eclipse.osgi.internal.loader.BundleLoaderProxy.getBundleLoader(BundleLoaderProxy.java:56)
        at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:454)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        - locked <0x685df5e8> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
        at com.instantiations.designer.core.parser.JavaInfoParser.<init>(JavaInfoParser.java:191)
        at com.instantiations.designer.core.parser.JavaInfoParser.parse(JavaInfoParser.java:137)
        at com.instantiations.designer.core.editor.DesignPage.internal_refreshGEF(DesignPage.java:407)
        at com.instantiations.designer.core.editor.DesignPage.access$10(DesignPage.java:399)
        at com.instantiations.designer.core.editor.DesignPage$7$1.run(DesignPage.java:334)
        at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179)
        at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
        at org.eclipse.swt.widgets.Display.syncExec(Display.java:4113)
        at com.instantiations.designer.core.editor.DesignPage$7.run(DesignPage.java:331)
        at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
        at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
        at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
        at com.instantiations.designer.core.editor.DesignPage.internal_refreshGEF_withProgress(DesignPage.java:350)
        at com.instantiations.designer.core.editor.DesignPage.internal_refreshGEF(DesignPage.java:301)
        at com.instantiations.designer.core.editor.UndoManager.refreshDesignerEditor(UndoManager.java:362)
        at com.instantiations.designer.core.editor.UndoManager.activate(UndoManager.java:75)
        at com.instantiations.designer.core.editor.DesignPage.handleActiveState_True(DesignPage.java:207)
        at com.instantiations.designer.core.editor.DesignPage.handleActiveState(DesignPage.java:194)
        at com.instantiations.designer.core.editor.multi.DefaultMultiMode.showPage(DefaultMultiMode.java:101)
        at com.instantiations.designer.core.editor.multi.DefaultMultiMode$1.widgetSelected(DefaultMultiMode.java:48)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1176)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1200)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1185)
        at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1025)
        at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3256)
        at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:2045)
        at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:323)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1176)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3493)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3112)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1311)

"VM Thread" prio=10 tid=0x08d46c00 nid=0x36f runnable

"VM Periodic Task Thread" prio=10 tid=0x08d60800 nid=0x375 waiting on condition

JNI global references: 1251


Found one Java-level deadlock:
=============================
"Worker-6":
  waiting to lock monitor 0x09025404 (object 0x6606dbe0, a java.util.HashMap),
  which is held by "Worker-4"
"Worker-4":
  waiting to lock monitor 0xb79196d8 (object 0x685df5e8, a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader),
  which is held by "main"
"main":
  waiting to lock monitor 0x09024b08 (object 0x65f70330, a org.eclipse.equinox.launcher.Main$StartupClassLoader),
  which is held by "Worker-4"

Java stack information for the threads listed above:
===================================================
"Worker-6":
        at org.eclipse.osgi.framework.internal.core.Framework.getAdminPermission(Framework.java:1185)
        - waiting to lock <0x6606dbe0> (a java.util.HashMap)
        at org.eclipse.osgi.framework.internal.core.Framework.checkAdminPermission(Framework.java:1178)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.getEntry(AbstractBundle.java:1223)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.fetchLightPresentation(ComponentPresentationHelper.java:568)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.fillPresentations(ComponentPresentationHelper.java:547)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper.access$1(ComponentPresentationHelper.java:523)
        at com.instantiations.designer.core.xml.model.description.ComponentPresentationHelper$1.run(ComponentPresentationHelper.java:510)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
"Worker-4":
        at com.instantiations.designer.core.DesignerPlugin$5.isExitVM(DesignerPlugin.java:271)
        at com.instantiations.designer.core.DesignerPlugin$5.checkPermission(DesignerPlugin.java:242)
        at java.lang.SecurityManager.checkSecurityAccess(SecurityManager.java:1698)
        at java.security.Provider.check(Provider.java:386)
        at java.security.Provider.putAll(Provider.java:224)
        - locked <0x639a1588> (a sun.security.provider.Sun)
        at sun.security.action.PutAllAction.run(PutAllAction.java:35)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.security.provider.Sun.<init>(Sun.java:254)
        at sun.security.util.ManifestEntryVerifier.setEntry(ManifestEntryVerifier.java:110)
        at java.util.jar.JarVerifier.beginEntry(JarVerifier.java:145)
        at java.util.jar.JarVerifier$VerifierStream.<init>(JarVerifier.java:381)
        at java.util.jar.JarFile.getInputStream(JarFile.java:396)
        - locked <0x65f703b0> (a java.util.jar.JarFile)
        at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:689)
        at sun.misc.Resource.cachedInputStream(Resource.java:61)
        - locked <0x6399fca0> (a sun.misc.URLClassPath$JarLoader$2)
        at sun.misc.Resource.getByteBuffer(Resource.java:144)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:249)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
        - locked <0x65f70330> (a org.eclipse.equinox.launcher.Main$StartupClassLoader)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        - locked <0x65f70330> (a org.eclipse.equinox.launcher.Main$StartupClassLoader)
        at org.eclipse.osgi.framework.internal.core.Framework.getAdminPermission(Framework.java:1193)
        - locked <0x6606dbe0> (a java.util.HashMap)
        at org.eclipse.osgi.framework.internal.core.Framework.checkAdminPermission(Framework.java:1178)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.getEntry(AbstractBundle.java:1223)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.fetchLightPresentation(ComponentPresentationHelper.java:565)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.fillPresentations(ComponentPresentationHelper.java:544)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper.access$1(ComponentPresentationHelper.java:520)
        at com.instantiations.designer.core.model.description.helpers.ComponentPresentationHelper$1.run(ComponentPresentationHelper.java:507)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
"main":
        at org.eclipse.osgi.internal.loader.BundleLoaderProxy.getBundleLoader(BundleLoaderProxy.java:56)
        at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:454)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
        - locked <0x685df5e8> (a org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader)
        at com.instantiations.designer.core.parser.JavaInfoParser.<init>(JavaInfoParser.java:191)
        at com.instantiations.designer.core.parser.JavaInfoParser.parse(JavaInfoParser.java:137)
        at com.instantiations.designer.core.editor.DesignPage.internal_refreshGEF(DesignPage.java:407)
        at com.instantiations.designer.core.editor.DesignPage.access$10(DesignPage.java:399)
        at com.instantiations.designer.core.editor.DesignPage$7$1.run(DesignPage.java:334)
        at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179)
        at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
        at org.eclipse.swt.widgets.Display.syncExec(Display.java:4113)
        at com.instantiations.designer.core.editor.DesignPage$7.run(DesignPage.java:331)
        at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
        at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
        at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
        at com.instantiations.designer.core.editor.DesignPage.internal_refreshGEF_withProgress(DesignPage.java:350)
        at com.instantiations.designer.core.editor.DesignPage.internal_refreshGEF(DesignPage.java:301)
        at com.instantiations.designer.core.editor.UndoManager.refreshDesignerEditor(UndoManager.java:362)
        at com.instantiations.designer.core.editor.UndoManager.activate(UndoManager.java:75)
        at com.instantiations.designer.core.editor.DesignPage.handleActiveState_True(DesignPage.java:207)
        at com.instantiations.designer.core.editor.DesignPage.handleActiveState(DesignPage.java:194)
        at com.instantiations.designer.core.editor.multi.DefaultMultiMode.showPage(DefaultMultiMode.java:101)
        at com.instantiations.designer.core.editor.multi.DefaultMultiMode$1.widgetSelected(DefaultMultiMode.java:48)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1176)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1200)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1185)
        at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1025)
        at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3256)
        at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:2045)
        at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:323)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1176)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3493)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3112)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1311)

Found 1 deadlock.

Heap
def new generation   total 6912K, used 2719K [0x63810000, 0x63f90000, 0x65f70000)
  eden space 6144K,  35% used [0x63810000, 0x63a30e48, 0x63e10000)
  from space 768K,  70% used [0x63e10000, 0x63e96e30, 0x63ed0000)
  to   space 768K,   0% used [0x63ed0000, 0x63ed0000, 0x63f90000)
tenured generation   total 91332K, used 60460K [0x65f70000, 0x6b8a1000, 0x83810000)
   the space 91332K,  66% used [0x65f70000, 0x69a7b0e0, 0x69a7b200, 0x6b8a1000)
compacting perm gen  total 49152K, used 49096K [0x83810000, 0x86810000, 0x93810000)
   the space 49152K,  99% used [0x83810000, 0x868022e0, 0x86802400, 0x86810000)
    ro space 8192K,  74% used [0x93810000, 0x93e093f0, 0x93e09400, 0x94010000)
    rw space 12288K,  59% used [0x94010000, 0x947276e0, 0x94727800, 0x94c10000)


Thanks,
Shlomi
Shlomi
 
Posts: 14
Joined: Thu Mar 02, 2006 7:03 am

Re: A deadlock in the designer

Postby Eric Clayberg » Tue Jan 18, 2011 9:05 am

Are you able to easily reproduce this?

Do you have any sort of test case that we can use to reproduce this?
Eric Clayberg
Software Engineering Manager
Google
http://code.google.com/webtoolkit/download.html

Author: "Eclipse Plug-ins"
http://www.qualityeclipse.com
Eric Clayberg
Moderator
 
Posts: 4503
Joined: Tue Sep 30, 2003 6:39 am
Location: Boston, MA USA


Return to Swing Designer

Who is online

Users browsing this forum: No registered users and 1 guest

cron