Bug 355609 - HeadlessBuild Trouble
Summary: HeadlessBuild Trouble
Status: NEW
Alias: None
Product: CDT
Classification: Tools
Component: cdt-build-managed (show other bugs)
Version: 8.0   Edit
Hardware: PC Linux
: P3 normal with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact: Jonah Graham CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-24 03:55 EDT by Sphost CLA
Modified: 2020-09-04 15:17 EDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sphost CLA 2011-08-24 03:55:16 EDT
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.
Comment 1 James Blackburn CLA 2011-08-24 04:14:40 EDT
Please get a backtrace from eclipse so we can see what it's doing:
http://wiki.eclipse.org/How_to_report_a_deadlock
Comment 2 Sphost CLA 2011-08-24 04:51:47 EDT
(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)
Comment 3 James Blackburn CLA 2011-08-24 08:19:45 EDT
The indexer is running. 

We should cancel it at the end of the build.
Comment 4 Patrice B CLA 2013-10-18 07:06:47 EDT
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
Comment 5 Christian Walther CLA 2014-11-05 03:48:09 EST
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.