History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: GROOVY-2424
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Blocker Blocker
Assignee: Paul King
Reporter: René de Bloois
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
groovy

Stackoverflow with groovy & ant

Created: 20/Dec/07 12:25 PM   Updated: 17/Apr/08 07:26 AM
Component/s: Ant integration
Affects Version/s: 1.5
Fix Version/s: 1.5.2, 1.5.5

Time Tracking:
Issue & Sub-Tasks
Issue Only
Not Specified

File Attachments: 1. Zip Archive test.zip (0.6 kb)

Environment: Groovy 1.6 rev 9903, java 6, ant 1.7
Issue Links:
Related
 

Sub-Tasks  All   Open   

 Description  « Hide
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.



 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Guillaume Laforge - 20/Dec/07 12:31 PM
Have you tried with a build from SVN Trunk?
http://build.canoo.com/groovy/

René de Bloois - 21/Dec/07 05:39 AM
Still fails with build 985.

It has something to do with fork="yes".
If I set fork="no" the exception disappears.


René de Bloois - 21/Dec/07 05:42 AM
Forgot to mention, it also fails with ant 1.6.5 (I have ant 1.7 at work, and 1.6.5 at home).

Jochen Theodorou - 21/Dec/07 06:40 AM
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

René de Bloois - 21/Dec/07 10:01 AM
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.


Guillaume Laforge - 23/Dec/07 12:11 PM
Does 1.5.1 solve this?

René de Bloois - 24/Dec/07 04:51 AM
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.


Andrew Gaydenko - 24/Dec/07 06:31 AM
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>


René de Bloois - 24/Dec/07 07:29 AM
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.


Paul King - 10/Jan/08 08:09 PM
Can you try again with a build of HEAD. The appropriate jar should pop out here shortly:
http://build.canoo.com/groovy/

René de Bloois - 11/Jan/08 03:32 AM
It works, thanx.

Paul King - 17/Jan/08 08:25 AM - edited
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.

Guillaume Laforge - 25/Jan/08 11:31 AM
Should be fixed after the merges done on the 1.5 branch.

Paul King - 10/Mar/08 05:22 AM
adjusting fix version as I think some changes didn't make 1.5.2