Bug 23995 - deadlock while running build.xml
Summary: deadlock while running build.xml
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Ant (show other bugs)
Version: 2.0   Edit
Hardware: PC Windows 2000
: P1 major (vote)
Target Milestone: 2.1 M2   Edit
Assignee: Luc Bourlier CLA
QA Contact:
URL:
Whiteboard:
Keywords: ui
Depends on:
Blocks:
 
Reported: 2002-09-23 16:29 EDT by John Wiegand CLA
Modified: 2002-10-13 09:05 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Wiegand CLA 2002-09-23 16:29:41 EDT
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
Comment 1 Darin Swanson CLA 2002-10-11 16:07:33 EDT
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
Comment 2 Darin Swanson CLA 2002-10-11 16:34:17 EDT
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.
Comment 3 Darin Swanson CLA 2002-10-11 16:34:39 EDT
Please verify the changes to LogConsoleDocument (Luc)
Comment 4 Luc Bourlier CLA 2002-10-11 19:08:36 EDT
Verified.
please update the build notes (darins)
Comment 5 Darin Swanson CLA 2002-10-13 09:05:44 EDT
Build notes updated.