Community
Participate
Working Groups
Build Identifier: 20100617-1415 Hi, I'm currently implemented a bash script to build automatically my C++ projects. I use the following code : #!/bin/sh echo "BEGIN" eclipse -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data ~/myWorkspace/ -importAll ~/myWorspace/myProjectsDir/ -build all echo "END" The problem is when the import and build are finished my last instruction (echo "END") is not performed. Having a look to CPU usage, I see the eclipse process still running, using 99%CPU. From my point of view, eclipse Process has imported and built every Projects inside MyProjectsDir (according to Standard Output trace) but it seems to have something else to do that I don't know. I change my script so that I only import projects without compile them : #!/bin/sh echo "BEGIN" eclipse -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data ~/myWorkspace/ -importAll ~/myWorspace/myProjectsDir/ echo "END" But I face the same problem. Reproducible: Always Steps to Reproduce: 1. Create Several Big C++ Projects 2. Start eclipse from command-line using following command : eclipse -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -data ~/myWorkspace/ -importAll ~/myWorspace/myProjectsDir/ 3.
Please get a backtrace from eclipse so we can see what it's doing: http://wiki.eclipse.org/How_to_report_a_deadlock
(In reply to comment #1) > Please get a backtrace from eclipse so we can see what it's doing: > http://wiki.eclipse.org/How_to_report_a_deadlock It seems that is the indexer which is still running ... 2011-08-24 10:49:33 Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.3-b02 mixed mode): "[ThreadPool Manager] - Idle Thread" daemon prio=10 tid=0x00002aab00fb6000 nid=0x6348 in Object.wait() [0x0000000041e46000..0x0000000041e46e20] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabfb717d8> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor) at java.lang.Object.wait(Object.java:485) at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106) - locked <0x00002aaabfb717d8> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor) "Worker-5" prio=10 tid=0x00002aaafee66800 nid=0x62fb in Object.wait() [0x0000000041941000..0x0000000041941ca0] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe55f6c0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185) - locked <0x00002aaabe55f6c0> (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:50) "Java indexing" daemon prio=10 tid=0x00002aaafec85000 nid=0x6283 in Object.wait() [0x0000000041b43000..0x0000000041b43da0] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabf29a438> (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 <0x00002aaabf29a438> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(Thread.java:619) "Worker-4" prio=10 tid=0x00002aab000db400 nid=0x614f in Object.wait() [0x0000000041a42000..0x0000000041a42b20] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe55f6c0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185) - locked <0x00002aaabe55f6c0> (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:50) "Worker-3" prio=10 tid=0x00002aaaffc9dc00 nid=0x6143 in Object.wait() [0x0000000041840000..0x0000000041840aa0] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe55f6c0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185) - locked <0x00002aaabe55f6c0> (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:50) "Worker-2" prio=10 tid=0x00002aaaff579000 nid=0x60c1 waiting on condition [0x000000004123a000..0x000000004123ae20] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob$ProgressUpdateJob.run(PDOMIndexerJob.java:46) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) "Worker-1" prio=10 tid=0x00002aaaff962400 nid=0x60bd in Object.wait() [0x000000004173f000..0x000000004173fda0] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe55f6c0> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185) - locked <0x00002aaabe55f6c0> (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:50) "Provisioning Event Dispatcher" daemon prio=10 tid=0x00002aaaff46f800 nid=0x60ba in Object.wait() [0x000000004163e000..0x000000004163eb20] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe55e760> (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 <0x00002aaabe55e760> (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=0x00002aaafeed7800 nid=0x60b6 runnable [0x000000004153c000..0x000000004153daa0] java.lang.Thread.State: RUNNABLE at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclSpecifier.accept(CPPASTSimpleDeclSpecifier.java:175) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration.accept(CPPASTSimpleDeclaration.java:89) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompositeTypeSpecifier.accept(CPPASTCompositeTypeSpecifier.java:163) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclaration.accept(CPPASTSimpleDeclaration.java:89) at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:268) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization.checkForDefinition(CPPClassSpecialization.java:160) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization.getSpecializationScope(CPPClassSpecialization.java:268) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization.getCompositeScope(CPPClassSpecialization.java:260) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassSpecialization.getCompositeScope(CPPClassSpecialization.java:1) at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BaseClassLookup.lookupInBaseClass(BaseClassLookup.java:228) at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.BaseClassLookup.lookupInBaseClasses(BaseClassLookup.java:53) at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.lookup(CPPSemantics.java:914) at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.resolveBinding(CPPSemantics.java:238) at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.resolveBinding(CPPVisitor.java:1208) at org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor.createBinding(CPPVisitor.java:260) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.createIntermediateBinding(CPPASTName.java:56) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNameBase.resolvePreBinding(CPPASTNameBase.java:74) at org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode.resolveAmbiguity(ASTAmbiguousNode.java:109) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguityResolver.visit(CPPASTAmbiguityResolver.java:55) at org.eclipse.cdt.internal.core.dom.parser.ASTAmbiguousNode.accept(ASTAmbiguousNode.java:58) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompoundStatement.accept(CPPASTCompoundStatement.java:72) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDefinition.accept(CPPASTFunctionDefinition.java:161) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTAmbiguityResolver.leave(CPPASTAmbiguityResolver.java:133) at org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit.accept(ASTTranslationUnit.java:271) at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTranslationUnit.resolveAmbiguities(CPPASTTranslationUnit.java:172) at org.eclipse.cdt.internal.core.dom.parser.AbstractGNUSourceCodeParser.resolveAmbiguities(AbstractGNUSourceCodeParser.java:664) at org.eclipse.cdt.internal.core.dom.parser.AbstractGNUSourceCodeParser.parse(AbstractGNUSourceCodeParser.java:651) at org.eclipse.cdt.core.dom.parser.AbstractCLikeLanguage.getASTTranslationUnit(AbstractCLikeLanguage.java:143) at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.createAST(AbstractIndexerTask.java:286) at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.createAST(AbstractIndexerTask.java:259) at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:753) at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:636) at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:345) at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:127) at org.eclipse.cdt.internal.core.pdom.indexer.PDOMRebuildTask.run(PDOMRebuildTask.java:84) at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:137) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) "Worker-JM" prio=10 tid=0x00002aaafede6800 nid=0x60b2 in Object.wait() [0x000000004143c000..0x000000004143cc20] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe4d4e60> (a java.util.ArrayList) at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:58) - locked <0x00002aaabe4d4e60> (a java.util.ArrayList) "[Timer] - Main Queue Handler" daemon prio=10 tid=0x00002aaafedf9400 nid=0x60b1 in Object.wait() [0x000000004133b000..0x000000004133bba0] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe4d54f8> (a java.lang.Object) at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:141) - locked <0x00002aaabe4d54f8> (a java.lang.Object) at java.lang.Thread.run(Thread.java:619) "Framework Event Dispatcher" daemon prio=10 tid=0x00002aaafede9c00 nid=0x60af in Object.wait() [0x0000000041139000..0x0000000041139ca0] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe57ffa0> (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 <0x00002aaabe57ffa0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:333) "Start Level Event Dispatcher" daemon prio=10 tid=0x00002aaafeb9f000 nid=0x60ae in Object.wait() [0x0000000041038000..0x0000000041038e20] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe4d62d8> (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 <0x00002aaabe4d62d8> (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=0x00002aaafeb6d000 nid=0x60ad waiting on condition [0x0000000040f37000..0x0000000040f37da0] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.java:319) at java.lang.Thread.run(Thread.java:619) "Low Memory Detector" daemon prio=10 tid=0x00002aaafe9d5800 nid=0x60a9 runnable [0x0000000000000000..0x0000000000000000] java.lang.Thread.State: RUNNABLE "CompilerThread1" daemon prio=10 tid=0x00002aaafe9d2c00 nid=0x60a8 waiting on condition [0x0000000000000000..0x0000000040c334e0] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x00002aaafe9cbc00 nid=0x60a7 waiting on condition [0x0000000000000000..0x0000000040b32440] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x00002aaafe9ca000 nid=0x60a6 waiting on condition [0x0000000000000000..0x0000000000000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=10 tid=0x00002aaafe9a5c00 nid=0x60a5 in Object.wait() [0x0000000040931000..0x0000000040931ca0] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe4f88f8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116) - locked <0x00002aaabe4f88f8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x00002aaafe7ee000 nid=0x60a4 in Object.wait() [0x0000000040830000..0x0000000040830e20] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00002aaabe427770> (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 <0x00002aaabe427770> (a java.lang.ref.Reference$Lock) "main" prio=10 tid=0x0000000040111000 nid=0x609e waiting on condition [0x0000000040229000..0x000000004022af60] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.eclipse.cdt.managedbuilder.internal.core.HeadlessBuilder.start(HeadlessBuilder.java:418) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 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:369) 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:619) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) at org.eclipse.equinox.launcher.Main.run(Main.java:1407) at org.eclipse.equinox.launcher.Main.main(Main.java:1383) "VM Thread" prio=10 tid=0x00002aaafe7eb800 nid=0x60a3 runnable "GC task thread#0 (ParallelGC)" prio=10 tid=0x000000004011b800 nid=0x609f runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x000000004011d400 nid=0x60a0 runnable "GC task thread#2 (ParallelGC)" prio=10 tid=0x000000004011ec00 nid=0x60a1 runnable "GC task thread#3 (ParallelGC)" prio=10 tid=0x0000000040120800 nid=0x60a2 runnable "VM Periodic Task Thread" prio=10 tid=0x00002aaafe9d7800 nid=0x60aa waiting on condition JNI global references: 866 Heap PSYoungGen total 258112K, used 118983K [0x00002aaae8d20000, 0x00002aaafe270000, 0x00002aaafe270000) eden space 178752K, 36% used [0x00002aaae8d20000,0x00002aaaecc528c0,0x00002aaaf3bb0000) from space 79360K, 68% used [0x00002aaaf94f0000,0x00002aaafc9ef5b0,0x00002aaafe270000) to space 85376K, 0% used [0x00002aaaf3bb0000,0x00002aaaf3bb0000,0x00002aaaf8f10000) PSOldGen total 518208K, used 413259K [0x00002aaabe270000, 0x00002aaaddc80000, 0x00002aaae8d20000) object space 518208K, 79% used [0x00002aaabe270000,0x00002aaad7602c48,0x00002aaaddc80000) PSPermGen total 42304K, used 40968K [0x00002aaaae270000, 0x00002aaab0bc0000, 0x00002aaabe270000) object space 42304K, 96% used [0x00002aaaae270000,0x00002aaab0a72208,0x00002aaab0bc0000)
The indexer is running. We should cancel it at the end of the build.
Is there a command line option to avoid indexer to run after the build ? Currently, I'm creating a ".metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.core.prefs" file containing indexer/indexerId=org.eclipse.cdt.core.nullindexer, but I would love a cleaner way to to that Thanks
A tentative implementation of a command line option to disable the indexer in a headless build is now at https://git.eclipse.org/r/35929 , as discussed at http://dev.eclipse.org/mhonarc/lists/cdt-dev/msg28326.html . We have shipped this in our product for 9 months and it appears to work well. Maybe there is no need for a command line option at all and the indexer could always be disabled. The code contains API warnings so it likely isn't a definitive solution yet. I tried using CCorePlugin.getIndexManager().addIndexerSetupParticipant() to indefinitely postpone indexer setup instead, but as expected that does not suppress the indexer reliably. It works when the project is imported into the workspace for the first time, and for some reason also the second time when it's already part of the workspace, but not any further times.
Gerrit change https://git.eclipse.org/r/35929 was merged to [master]. Commit: http://git.eclipse.org/c/cdt/org.eclipse.cdt.git/commit/?id=3e7f1d284b97d128a363c7bd5f466a81e5ab4c51