Community
Participate
Working Groups
920 - likely not reproducable. I was exploring using javac instead of the eclipse jdt adaptor when I encountered the deadlock below. There appear to be several errors here. I will try to reproduce this. Full thread dump Java HotSpot(TM) Client VM (1.4.1-rc-b15 mixed mode): "ModalContext" prio=5 tid=0x0C302738 nid=0x284 in Object.wait() [d57e000..d57fd8 8] at java.lang.Object.wait(Native Method) - waiting on <02E0D098> (a org.eclipse.swt.widgets.RunnableLock) at java.lang.Object.wait(Object.java:426) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:141) - locked <02E0D098> (a org.eclipse.swt.widgets.RunnableLock) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:1 8) at org.eclipse.swt.widgets.Display.syncExec(Display.java:1906) at org.eclipse.ui.externaltools.internal.ui.LogConsoleDocument.append(Lo gConsoleDocument.java:63) at org.eclipse.ui.externaltools.internal.ui.ant.AntBuildLogger.logMessag e(AntBuildLogger.java:144) at org.eclipse.ui.externaltools.internal.ui.ant.AntBuildLogger.messageLo gged(AntBuildLogger.java:115) at org.apache.tools.ant.Project.fireMessageLoggedEvent(Project.java:982) at org.apache.tools.ant.Project.fireMessageLogged(Project.java:998) at org.apache.tools.ant.Project.log(Project.java:250) at org.apache.tools.ant.Task.log(Task.java:207) at org.apache.tools.ant.Task.handleErrorOutput(Task.java:187) at org.apache.tools.ant.Project.demuxOutput(Project.java:571) at org.apache.tools.ant.taskdefs.Ant.handleErrorOutput(Ant.java:211) at org.apache.tools.ant.taskdefs.CallTarget.handleErrorOutput(CallTarget .java:142) at org.apache.tools.ant.Project.demuxOutput(Project.java:571) at org.apache.tools.ant.DemuxOutputStream.processBuffer(DemuxOutputStrea m.java:132) at org.apache.tools.ant.DemuxOutputStream.write(DemuxOutputStream.java:1 14) at java.io.OutputStream.write(OutputStream.java:99) at java.io.PrintStream.write(PrintStream.java:258) - locked <0461EF40> (a java.io.PrintStream) at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:334) at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java :402) at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:406) at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:150) - locked <046B1D28> (a java.io.OutputStreamWriter) at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213) at java.io.BufferedWriter.flush(BufferedWriter.java:230) - locked <046B1D28> (a java.io.OutputStreamWriter) at java.io.PrintWriter.newLine(PrintWriter.java:256) - locked <046B0008> (a java.io.BufferedWriter) at java.io.PrintWriter.println(PrintWriter.java:405) at java.io.PrintWriter.println(PrintWriter.java:516) - locked <046B0008> (a java.io.BufferedWriter) at com.sun.tools.javac.v8.util.Log.printLines(Log.java:265) at com.sun.tools.javac.v8.Main.bugMessage(Main.java:554) at com.sun.tools.javac.v8.Main.compile(Main.java:540) at com.sun.tools.javac.Main.compile(Main.java:36) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.tools.ant.taskdefs.compilers.Javac13.execute(Javac13.java: 92) at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:557) at org.apache.tools.ant.Task.perform(Task.java:217) at org.apache.tools.ant.Target.execute(Target.java:184) at org.apache.tools.ant.Target.performTasks(Target.java:202) at org.apache.tools.ant.Project.executeTarget(Project.java:601) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:266) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:120) at org.apache.tools.ant.Task.perform(Task.java:217) at org.apache.tools.ant.Target.execute(Target.java:184) at org.apache.tools.ant.Target.performTasks(Target.java:202) at org.apache.tools.ant.Project.executeTarget(Project.java:601) at org.apache.tools.ant.Project.executeTargets(Project.java:560) at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRu nner.java:293) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.ant.core.AntRunner.run(AntRunner.java:282) at org.eclipse.ui.externaltools.internal.core.AntFileRunner.execute(AntF ileRunner.java:58) at org.eclipse.ui.externaltools.internal.core.DefaultRunnerContext.execu teRunner(DefaultRunnerContext.java:334) at org.eclipse.ui.externaltools.internal.core.DefaultRunnerContext.run(D efaultRunnerContext.java:384) at org.eclipse.ui.externaltools.internal.ui.AntLaunchWizard$1.run(AntLau nchWizard.java:116) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(Modal Context.java:98) "Debug async queue" prio=5 tid=0x0AE0C008 nid=0x730 in Object.wait() [c7ef000..c 7efd88] at java.lang.Object.wait(Native Method) - waiting on <039747D0> (a org.eclipse.debug.core.DebugPlugin$AsynchRunn er) at java.lang.Object.wait(Object.java:426) at org.eclipse.debug.core.DebugPlugin$AsynchRunner.run(DebugPlugin.java: 612) - locked <039747D0> (a org.eclipse.debug.core.DebugPlugin$AsynchRunner) at java.lang.Thread.run(Thread.java:536) "Java indexing" daemon prio=4 tid=0x0AF39B80 nid=0x718 waiting on condition [bc8 f000..bc8fd88] at java.lang.Thread.sleep(Native Method) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobMan ager.java:319) at java.lang.Thread.run(Thread.java:536) "Signal Dispatcher" daemon prio=10 tid=0x00877F38 nid=0x6cc waiting on condition [0..0] "Finalizer" daemon prio=9 tid=0x0023E658 nid=0x6dc in Object.wait() [aacf000..aa cfd88] at java.lang.Object.wait(Native Method) - waiting on <02E64E18> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <02E64E18> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x0023D230 nid=0x6e4 in Object.wait() [aa 8f000..aa8fd88] at java.lang.Object.wait(Native Method) - waiting on <02E64E80> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:426) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:113) - locked <02E64E80> (a java.lang.ref.Reference$Lock) "main" prio=5 tid=0x00234B88 nid=0x6d4 waiting for monitor entry [6f000..6fc3c] at java.io.PrintStream.println(PrintStream.java:585) - waiting to lock <0461EF40> (a java.io.PrintStream) at org.eclipse.ui.internal.WorkbenchPlugin.log(WorkbenchPlugin.java:516) at org.eclipse.ui.internal.ExceptionHandler.log(ExceptionHandler.java:13 1) at org.eclipse.ui.internal.ExceptionHandler.handleException(ExceptionHan dler.java:91) at org.eclipse.jface.window.Window.runEventLoop(Window.java:565) at org.eclipse.jface.window.Window.open(Window.java:542) at org.eclipse.ui.externaltools.internal.ui.AntAction.run(AntAction.java :77) at org.eclipse.ui.externaltools.internal.ui.AntRunActionDelegate.run(Ant RunActionDelegate.java:32) at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:2 10) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection (ActionContributionItem.java:407) at org.eclipse.jface.action.ActionContributionItem.handleWidgetEvent(Act ionContributionItem.java:361) at org.eclipse.jface.action.ActionContributionItem.access$0(ActionContri butionItem.java:352) at org.eclipse.jface.action.ActionContributionItem$ActionListener.handle Event(ActionContributionItem.java:47) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:833) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1622) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1368) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1256) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1239) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoa der.java:775) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:462) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:247) at org.eclipse.core.launcher.Main.run(Main.java:703) at org.eclipse.core.launcher.Main.main(Main.java:539) "VM Thread" prio=5 tid=0x00875050 nid=0x738 runnable "VM Periodic Task Thread" prio=10 tid=0x00876C38 nid=0x6ec waiting on condition "Suspend Checker Thread" prio=10 tid=0x00877580 nid=0x6b4 runnable
I have a reproduceable case: Define a Document xdoclet taks (using the preferences pages etc) Inside a build file define the following: <path id="xdoclet.classpath"> <pathelement location="c:\darinsstuff\lib\xdoclet.jar"/> </path> <document sourcepath="src" destdir="scripts" classpathref="xdoclet.classpath"> <fileset dir="src"> <include name="**/*.java"/> </fileset> <info header="To do list" projectname="Custom Ant Task" tag="todo"/> </document> Set up an external tools builder that points to the build file containing the above. Make a change to the build file This fires up the external tool builder deadlock
All of the syncExec's in LogConsoleView seem very dangerous and unnecessary. Removing these (changing to asynch) fixes the reproducable deadlock and does not seem to affect the behavior of the LogConsoleView.
Please verify the changes to LogConsoleDocument (Luc)
Verified. please update the build notes (darins)
Build notes updated.