Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Blocker
-
Resolution: Fixed
-
Affects Version/s: 1.5
-
Component/s: Ant integration
-
Labels:None
-
Environment:Groovy 1.6 rev 9903, java 6, ant 1.7
-
Number of attachments :1
Description
I couldn't reopen GROOVY-2370, so I created a this new issue.
The script from GROOVY-2370 does indeed work correctly on my environment.
But I have attached a script that still fails.
It starts java from within the groovy script.
Issue Links
- relates to
-
GROOVY-2567
Antbuilder/Groovy ant task that uses forking java task causes StackOverflow in ANT script
-
Activity
Still fails with build 985.
It has something to do with fork="yes".
If I set fork="no" the exception disappears.
Forgot to mention, it also fails with ant 1.6.5 (I have ant 1.7 at work, and 1.6.5 at home).
it seems I am not able to reproduce the problem with my newest jar... I used ant 1.7.0. I will change the version to 1.5.2 for starters.Maybe you should show us the trace, then we might be able to find the problem without being able to reproduce it here.. But I suggest you test the 1.5.1 release first
C:\WORK\test>ant
Buildfile: build.xml
[echo] Java: 1.6.0_03
[echo] Ant: Apache Ant version 1.6.5 compiled on June 2 2005
compile:
dev:run:
[java] Exception in thread "Thread-3" java.lang.StackOverflowError
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] hello from the Test class
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:644)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:632)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1135)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:56)
I will try 1.5.1 when it comes out.
No it doesn't. I've installed a fresh WindowsXP (which was long overdue). Only one sun jdk available on the system. Only groovy-all-1.5.1 available. I still get the following:
C:\#WORK1\test>ant
Buildfile: build.xml
[echo] Java: 1.6.0_03
[echo] Ant: Apache Ant version 1.7.0 compiled on December 13 2006
compile:
[javac] Compiling 1 source file
dev:run:
[java] Exception in thread "Thread-3" java.lang.StackOverflowError
[java] at java.lang.ref.ReferenceQueue.poll(ReferenceQueue.java:82)
[java] at java.util.WeakHashMap.expungeStaleEntries(WeakHashMap.java:274)
[java] at java.util.WeakHashMap.getTable(WeakHashMap.java:302)
[java] at java.util.WeakHashMap.get(WeakHashMap.java:349)
[java] at java.util.Collections$SynchronizedMap.get(Collections.java:1975)
[java] at org.apache.tools.ant.Project.getThreadTask(Project.java:2300)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1244)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] hello from the Test class
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
[java] at org.apache.tools.ant.DemuxInputStream.read(DemuxInputStream.java:70)
[java] at java.io.FilterInputStream.read(FilterInputStream.java:116)
[java] at org.apache.tools.ant.taskdefs.Redirector.handleInput(Redirector.java:666)
[java] at org.apache.tools.ant.taskdefs.Java.handleInput(Java.java:667)
[java] at org.apache.tools.ant.Project.demuxInput(Project.java:1248)
Terminate batch job (Y/N)? ^C
C:\#WORK1\test>
And it hangs, which is also strange.
Can I also print the groovy version number during the build? It would be nice to show the exact buildnumber/revisionnumber during this test.
What are this fragment's goal and mean?
<groovy>
ant.java( classname: "Test", fork: "yes" )
</groovy>
Why do not use this? -
<java classname="Test" fork="true">
....
</java>
I'm aware of that, thanx. The test only tries to reproduce the problem.
The real life use case is to execute some complex groovy logic, but still make use of ant's strengths by calling its tasks.
Can you try again with a build of HEAD. The appropriate jar should pop out here shortly:
http://build.canoo.com/groovy/
Leaving main issue to track fix on 1.5.2, status on HEAD/1.6 is now associated with a subtask. I recommend merging HEAD to the branch and closing the issue. It would be best to wait until we have the test but if 1.5.2 needs to go out before, then it can be done now I believe.
Have you tried with a build from SVN Trunk?
http://build.canoo.com/groovy/