Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 157073

Summary: Eclipse fails to launch - ZipException: Too many open files
Product: [Eclipse Project] Platform Reporter: Bobby Joseph <use_bobs>
Component: RuntimeAssignee: platform-runtime-inbox <platform-runtime-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: critical    
Priority: P3    
Version: 3.2   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
List of files downloaded (eclipse + plugins)
none
Eclipse logs none

Description Bobby Joseph CLA 2006-09-12 14:07:58 EDT
I am facing a problem while trying to launch eclipse on LINUX. Any help would be great. It is consistently failing to launch eclipse (with 9 plugins + NLpack1+ NLpack2 + NLpack2a + NLpackBidi which amounts to a lot of jar files). 

After extracting eclipse and all the plugins, when I try to launch eclipse, it pops the following error message instead of prompting for the workspace location:

An error has occurred. See the log file
/home/bhanu/preethi/orig/eclipse/configuration/1157723656180.log.

After clicking on the OK button on the above pop-up, following exception appears on the console/command prompt:
!ENTRY org.eclipse.ui.navigator.nl1 4 0 2006-09-08 19:24:24.544
!MESSAGE FrameworkEvent.ERROR
!STACK 0
java.util.zip.ZipException: Too many open files /home/bhanu/preethi/orig/eclipse/plugins/org.eclipse.ui.navigator.nl1_3.2.0.v200606220026.jar
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:238)
        at java.util.zip.ZipFile.<init>(ZipFile.java:268)
        at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:226)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.basicOpen(ZipBundleFile.java:79)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.getZipFile(ZipBundleFile.java:92)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.checkedOpen(ZipBundleFile.java:65)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.getEntry(ZipBundleFile.java:227)
        at org.eclipse.osgi.baseadaptor.BaseData.getEntry(BaseData.java:93)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.getEntry(AbstractBundle.java:1281)
        at org.eclipse.core.internal.registry.osgi.EclipseBundleListener.addBundle(EclipseBundleListener.java:121)
        at org.eclipse.core.internal.registry.osgi.EclipseBundleListener.processBundles(EclipseBundleListener.java:79)
        at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.onStart(RegistryStrategyOSGI.java:196)
        at org.eclipse.core.internal.registry.ExtensionRegistry.<init>(ExtensionRegistry.java:595)
        at org.eclipse.core.runtime.RegistryFactory.createRegistry(RegistryFactory.java:55)
        at org.eclipse.core.internal.registry.osgi.Activator.startRegistry(Activator.java:128)
        at org.eclipse.core.internal.registry.osgi.Activator.start(Activator.java:54)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:995)
        at java.security.AccessController.doPrivileged(AccessController.java:241)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:989)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:970)
        at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:317)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:256)
        at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.preFindLocalClass(EclipseLazyStarter.java:86)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:409)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:188)
        at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:339)
        at org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:37)
        at org.eclipse.osgi.framework.internal.core.MultiSourcePackage.loadClass(MultiSourcePackage.java:32)
        at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:388)
        at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:352)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:561)
        at java.lang.ClassLoader.defineClassImpl(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:222)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:160)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:498)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:468)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:427)
        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:410)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:188)
        at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:339)
        at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:391)
        at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:352)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:561)
        at org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:276)
        at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:227)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:134)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:966)
        at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:317)
        at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:329)
        at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1037)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:573)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:495)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:275)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:455)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:189)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:291)

Note: 
1) This has started occuring ever since WTP, JEM and GEF was added to the package, in other words increase in the number of jar files which is leading to exception  'java.util.zip.ZipException: Too many open files' during the launch of eclipse.

2) We are not encountering this problem on Windows even though it has the same set of files except the eclipse platform runtime files. We are getting this problem very consistently on all our LINUX machines. 

3) I rebooted the machine and tried but no use.

4) The error occurs in both Java 1.5 and 1.4.2
Comment 1 Bobby Joseph CLA 2006-09-12 14:21:25 EDT
Created attachment 49960 [details]
List of files downloaded (eclipse + plugins)
Comment 2 Bobby Joseph CLA 2006-09-12 14:32:46 EDT
Created attachment 49965 [details]
Eclipse logs
Comment 3 Thomas Watson CLA 2006-09-12 14:41:02 EDT
In Eclipse 3.2.1 I would recommend setting the osgi.bundlefile.limit property
on linux in your config.ini to:

osgi.bundlefile.limit=100

Unfortunately this option has some threading issues in 3.2 which have been
fixed in 3.2.1.  If you cannot wait until 3.2.1 then you should try running
with -initialize on the very first time you launch eclipse after extracting it.
 This should allow the platform to be successfully installed.  On next startup
we should only open jars as they are needed. 

Also see bug 106396 for a similar issue.
Comment 4 Pascal Rapicault CLA 2006-09-13 15:03:36 EDT
Bobby did you try the workaround provided by Tom?
Comment 5 Pascal Rapicault CLA 2006-09-13 15:38:09 EDT

*** This bug has been marked as a duplicate of 140549 ***
Comment 6 Bobby Joseph CLA 2006-09-13 18:58:07 EDT
1) Running with -initialize ---> Didn't help!

[root@acdevx8 eclipse]# ./eclipse -initialize
!SESSION 2006-09-13 22:25:42.458 -----------------------------------------------
eclipse.buildId=M20060629-1905
java.fullversion=J2RE 1.4.2 IBM build cxia32142ifx-20060209 (SR4-1) (JIT enabled: jitc)
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86 -initialize
 
!ENTRY org.eclipse.jst.server.tomcat.ui.nlBidi 4 0 2006-09-13 22:25:45.655
!MESSAGE FrameworkEvent.ERROR
!STACK 0
java.util.zip.ZipException: Too many open files /opt/IBM/PD_BtM_Toolkit/ACLT_GLA/eclipse/plugins/org.eclipse.jst.server.tomcat.ui.nlBidi_1.0.102.v200606220026.jar
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:140)
        at java.util.zip.ZipFile.<init>(ZipFile.java:155)
        at org.eclipse.osgi.framework.util.SecureAction.getZipFile(SecureAction.java:226)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.basicOpen(ZipBundleFile.java:79)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.getZipFile(ZipBundleFile.java:92)        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.checkedOpen(ZipBundleFile.java:65)
        at org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile.getEntry(ZipBundleFile.java:227)
        at org.eclipse.osgi.baseadaptor.BaseData.getEntry(BaseData.java:93)
        at org.eclipse.osgi.internal.baseadaptor.AdaptorUtil.loadManifestFrom(AdaptorUtil.java:189)
        at org.eclipse.core.runtime.internal.adaptor.EclipseStorageHook.getGeneratedManifest(EclipseStorageHook.java:294)
        at org.eclipse.core.runtime.internal.adaptor.EclipseStorageHook.createCachedManifest(EclipseStorageHook.java:290)
        at org.eclipse.core.runtime.internal.adaptor.EclipseStorageHook.getManifest(EclipseStorageHook.java:395)
        at org.eclipse.osgi.internal.baseadaptor.BaseStorage.loadManifest(BaseStorage.java(Compiled Code))
        at org.eclipse.osgi.internal.baseadaptor.BaseStorage.readStateData(BaseStorage.java:678)
        at org.eclipse.osgi.internal.baseadaptor.BaseStorage.getStateManager(BaseStorage.java:633)        at org.eclipse.osgi.baseadaptor.BaseAdaptor.getPlatformAdmin(BaseAdaptor.java:385)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAdaptorHook.frameworkStart(EclipseAdaptorHook.java:80)
        at org.eclipse.osgi.baseadaptor.BaseAdaptor.frameworkStart(BaseAdaptor.java:260)
        at org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start(SystemBundleActivator.java:55)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:995)
        at java.security.AccessController.doPrivileged1(Native Method)
        at java.security.AccessController.doPrivileged(AccessController.java:351)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:989)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:970)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:549)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:484)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:275)
        at org.eclipse.osgi.framework.internal.core.StartLevelManager.launch(StartLevelManager.java:245)
        at org.eclipse.osgi.framework.internal.core.SystemBundle.resume(SystemBundle.java:155)
        at org.eclipse.osgi.framework.internal.core.Framework.launch(Framework.java:503)
        at org.eclipse.osgi.framework.internal.core.OSGi.launch(OSGi.java:51)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:289)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:173)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
        at java.lang.reflect.Method.invoke(Method.java:391)
        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)
[root@acdevx8 eclipse]#

2) osgi.bundlefile.limit=100 --> WORKS!

See the eclipse version details:
name=Eclipse Platform
id=org.eclipse.platform
version=3.2.0

I am part of the IBM Autonomic Computing Toolkit team and we ship eclipse with it. Since Tom mentioned about some threading issues, what do you suggest? When can we expect Eclipse 3.2.1? We are already in our internal beta!

Tom, thanks for the prompt response.
Comment 7 Thomas Watson CLA 2006-09-13 19:33:17 EDT
We are in the middle of release candidate builds for 3.2.1.  I'm not sure on the final release date (I think it is by the end of Sept.).

Maybe you should use the latest 3.2.1 release candidate for beta and 3.2.1 final for your final released product?
Comment 8 Pascal Rapicault CLA 2006-09-14 09:15:41 EDT
In fact 3.2.1 is scheduled for this week.