Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 334796 - To many open files
Summary: To many open files
Status: RESOLVED FIXED
Alias: None
Product: PTP
Classification: Tools
Component: Photran.Managed Make (show other bugs)
Version: 4.0.3   Edit
Hardware: PC Linux
: P3 major (vote)
Target Milestone: 7.0   Edit
Assignee: Jeffrey Overbey CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-01-19 10:41 EST by Nathan Tucker CLA
Modified: 2011-02-22 23:42 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nathan Tucker CLA 2011-01-19 10:41:55 EST
Build Identifier: Eclipse IDE for C/C++ Developers, Version: Helios Service Release 1, Build id: 20100917-0705, with PTP 4.0.3

I have created a new Fortran static library project then imported a Fortran code that contains about 250 files.  I have determined that during the Make process, not the actual compile step, I get an error of "Too many open files".  I have determined the number of opened files by "while true; do lsof | grep java | wc -l; done".  From more experienced personnel who use Eclipse, this error does not occur with a C/C++ project of even larger size. 

Error Window
------------
Problems occurred building the selected resources.
Errors running builder 'CDT Builder' on project 'X'.
Could not write file: /home/.../workspace/X/Debug/makefile.
/home/.../workspace/X/Debug/makefile (Too many open files)

Terminal Window
---------------
!ENTRY org.eclipse.core.filesystem 4 271 2011-01-19 08:34:10.867
!MESSAGE Could not read file: /home/.../workspace/X/Debug/src/subdir.mk.
!STACK 0
java.io.FileNotFoundException: /home/.../workspace/X/Debug/src/subdir.mk (Too many open files)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(Unknown Source)
        at org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:362)
        at org.eclipse.core.filesystem.provider.FileStore.copyFile(FileStore.java:217)
        at org.eclipse.core.filesystem.provider.FileStore.copy(FileStore.java:140)
        at org.eclipse.core.internal.filesystem.local.LocalFile.copy(LocalFile.java:111)
        at org.eclipse.core.internal.localstore.BlobStore.addBlob(BlobStore.java:57)
        at org.eclipse.core.internal.localstore.HistoryStore2.addState(HistoryStore2.java:92)
        at org.eclipse.core.internal.localstore.FileSystemResourceManager.write(FileSystemResourceManager.java:996)
        at org.eclipse.core.internal.resources.File.internalSetContents(File.java:325)
        at org.eclipse.core.internal.resources.File.setContents(File.java:364)
        at org.eclipse.core.internal.resources.File.setContents(File.java:468)
        at org.eclipse.cdt.internal.core.model.Util.save(Util.java:154)
        at org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.populateFragmentMakefile(GnuMakefileGenerator.java:980)
        at org.eclipse.cdt.managedbuilder.makegen.gnu.GnuMakefileGenerator.regenerateMakefiles(GnuMakefileGenerator.java:894)
        at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performMakefileGeneration(CommonBuilder.java:1455)
        at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.performPrebuildGeneration(CommonBuilder.java:1322)
        at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:787)
        at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:552)
        at org.eclipse.cdt.managedbuilder.internal.core.CommonBuilder.build(CommonBuilder.java:498)
        at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
        at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
        at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
        at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
        at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
        at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)


Reproducible: Always

Steps to Reproduce:
1. Select -> Project -> Build Project
2.
3.
Comment 1 Jeffrey Overbey CLA 2011-02-22 23:42:45 EST
Thanks for the bug report.  It looks like the managed make dependency calculator was failing to close files after reading them.  The fix will be in Photran 7.0/Indigo (to be released in June); unfortunately, I'm too late to get it into Helios SR2.

=====
Fix in org.eclipse.photran.managedbuilder.core.makegen.DefaultFortranDependencyCalculator rev 1.7