Author: bodewig
Date: Tue Oct 28 06:39:32 2008
New Revision: 708571

URL: http://svn.apache.org/viewvc?rev=708571&view=rev
Log:
turn PR 45499 into a FAQ since there is a workaround.

Modified:
    ant/core/trunk/docs/faq.html
    ant/core/trunk/xdocs/faq.xml

Modified: ant/core/trunk/docs/faq.html
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/docs/faq.html?rev=708571&r1=708570&r2=708571&view=diff
==============================================================================
--- ant/core/trunk/docs/faq.html (original)
+++ ant/core/trunk/docs/faq.html Tue Oct 28 06:39:32 2008
@@ -453,6 +453,12 @@
         worked fine with JDK 1.4.
       
       </a></li>
+                <li><a href="#oom-on-mac">
+  
+        Ant runs into an infinite loop/throws an OutOufMemoryError
+        when I compile my project under Mac OS X.
+      
+      </a></li>
             </ul>
     
       <h3 class="section">Answers</h3>
@@ -2204,6 +2210,50 @@
         to use this task with JDK 1.5 in older versions of Ant.</p>
                         <p>Starting with Ant 1.6.2 
<code>&lt;junitreport&gt;</code>
         supports JDK 1.5.</p>
+                    <p class="faq">
+      <a name="oom-on-mac"></a>
+      
+        Ant runs into an infinite loop/throws an OutOufMemoryError
+        when I compile my project under Mac OS X.
+      
+    </p>
+                  <p>Apple's Java VMs reside
+        in 
<code>/System/Library/Frameworks/JavaVM.framework/Versions/X.Y.Z</code>
+          and <code>JAVA_HOME</code> will usually be something
+        like 
<code>/System/Library/Frameworks/JavaVM.framework/Versions/X.Y.Z/Home</code>.</p>
+                        <p>Inside this home directory there is a symbolic link
+        named <code>shared_bundle</code> that links three levels up,
+        i.e. to <code>/System/Library/Frameworks/JavaVM.framework</code>.</p>
+                        <p>If your build file contains a <code>fileset</code> 
like</p>
+                        <pre class="code">
+&lt;fileset dir=&quot;${java.home}&quot; includes=&quot;**/*.jar&quot;/&gt;
+</pre>
+                        <p>Ant is going to follow the 
<code>shared_bundle</code>
+        symlink and ends up recursing into all your installed VMs.
+        Even worse, it will
+        enter 
<code>/System/Library/Frameworks/JavaVM.framework/Versions/X.Y.Z/Home</code>
+          and will once again follow the same symlink.</p>
+                        <p>Ant versions after Ant 1.7.1 will detect the 
infinite loop
+        they are in, but the resulting fileset may still be too big to
+        deal with, in particular if you have many different VM
+        versions installed.  The problem is amplified by the fact that
+        each installed version has a <code>shared_bundle</code>
+        symlink in it.</p>
+                        <p>One solution is to not allow the fileset to follow 
symbolic
+          links at all, like in</p>
+                        <pre class="code">
+&lt;fileset dir=&quot;${java.home}&quot; includes=&quot;**/*.jar&quot; 
followsymlinks=&quot;false&quot;/&gt;
+</pre>
+                        <p>another one excludes the <code>shared_bundle</code>
+        directories:</p>
+                        <pre class="code">
+&lt;fileset dir=&quot;${java.home}&quot; includes=&quot;**/*.jar&quot; 
excludes=&quot;**/shared_bundle/**&quot;/&gt;
+</pre>
+                        <p>For Ant 1.7.1 and earlier
+        excluding <code>shared_bundle</code> may not be enough since
+        there is another symlink <code>bundle</code> that points to
+        the <code>Home</code> directory and will cause infite
+        recursions as well.</p>
                     </div>
   </div>
 

Modified: ant/core/trunk/xdocs/faq.xml
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/xdocs/faq.xml?rev=708571&r1=708570&r2=708571&view=diff
==============================================================================
--- ant/core/trunk/xdocs/faq.xml (original)
+++ ant/core/trunk/xdocs/faq.xml Tue Oct 28 06:39:32 2008
@@ -1950,6 +1950,58 @@
 
       </answer>
     </faq>
+
+    <faq id="oom-on-mac">
+      <question>
+        Ant runs into an infinite loop/throws an OutOufMemoryError
+        when I compile my project under Mac OS X.
+      </question>
+
+      <answer>
+        <p>Apple's Java VMs reside
+        in 
<code>/System/Library/Frameworks/JavaVM.framework/Versions/X.Y.Z</code>
+          and <code>JAVA_HOME</code> will usually be something
+        like 
<code>/System/Library/Frameworks/JavaVM.framework/Versions/X.Y.Z/Home</code>.</p>
+
+        <p>Inside this home directory there is a symbolic link
+        named <code>shared_bundle</code> that links three levels up,
+        i.e. to <code>/System/Library/Frameworks/JavaVM.framework</code>.</p>
+
+        <p>If your build file contains a <code>fileset</code> like</p>
+        <source><![CDATA[
+<fileset dir="${java.home}" includes="**/*.jar"/>
+]]></source>
+        <p>Ant is going to follow the <code>shared_bundle</code>
+        symlink and ends up recursing into all your installed VMs.
+        Even worse, it will
+        enter 
<code>/System/Library/Frameworks/JavaVM.framework/Versions/X.Y.Z/Home</code>
+          and will once again follow the same symlink.</p>
+
+        <p>Ant versions after Ant 1.7.1 will detect the infinite loop
+        they are in, but the resulting fileset may still be too big to
+        deal with, in particular if you have many different VM
+        versions installed.  The problem is amplified by the fact that
+        each installed version has a <code>shared_bundle</code>
+        symlink in it.</p>
+
+        <p>One solution is to not allow the fileset to follow symbolic
+          links at all, like in</p>
+        <source><![CDATA[
+<fileset dir="${java.home}" includes="**/*.jar" followsymlinks="false"/>
+]]></source>
+        <p>another one excludes the <code>shared_bundle</code>
+        directories:</p>
+        <source><![CDATA[
+<fileset dir="${java.home}" includes="**/*.jar" 
excludes="**/shared_bundle/**"/>
+]]></source>
+
+        <p>For Ant 1.7.1 and earlier
+        excluding <code>shared_bundle</code> may not be enough since
+        there is another symlink <code>bundle</code> that points to
+        the <code>Home</code> directory and will cause infite
+        recursions as well.</p>
+      </answer>
+    </faq>
   </faqsection>
 
 </document>


Reply via email to