<!-- 
RSS generated by JIRA (4.4#649-r158309) at Tue May 21 02:08:57 CDT 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://dev.clojure.org/jira/si/jira.issueviews:issue-xml/CLJ-444/CLJ-444.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Clojure JIRA</title>
    <link>http://dev.clojure.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>4.4</version>
        <build-number>649</build-number>
        <build-date>25-07-2011</build-date>
    </build-info>

<item>
            <title>[CLJ-444] Infinite recursion in Keyword.intern leads to stack overflow</title>
                <link>http://dev.clojure.org/jira/browse/CLJ-444</link>
                <project id="10010" key="CLJ">Clojure</project>
                        <description>&lt;p&gt;Keyword.intern keeps a table of SoftReferences to keywords, always preferring the existing one to making a new one. However, if the SoftReference has been pulled, the code tries to recurse as its way of &quot;trying again.&quot; &lt;/p&gt;

&lt;p&gt;Unfortunately, the way the logic is written, the code will work exactly the same way the second time around (and the third... it&apos;s turtles all the way down the stack) and eventually have a stack overflow.&lt;/p&gt;

&lt;p&gt;I found this in a long running web service that was using XML RPC and then &quot;keywordizing&quot; the keys of the result maps. Within an hour or so, it would blow up on this. From my read of the code, there is no work around once you&apos;re in this state since the expired reference is stuck in the keyword table.&lt;/p&gt;

&lt;p&gt;Patch coming momentarily.&lt;/p&gt;</description>
                <environment></environment>
            <key id="13841">CLJ-444</key>
            <summary>Infinite recursion in Keyword.intern leads to stack overflow</summary>
                <type id="1" iconUrl="http://dev.clojure.org/jira/images/icons/bug.gif">Defect</type>
                                        <status id="6" iconUrl="http://dev.clojure.org/jira/images/icons/status_closed.gif">Closed</status>
                    <resolution id="1">Completed</resolution>
                                <assignee username="richhickey">Rich Hickey</assignee>
                                <reporter username="-1">None</reporter>
                        <labels>
                    </labels>
                <created>Tue, 28 Sep 2010 19:14:00 -0500</created>
                <updated>Tue, 28 Sep 2010 21:30:00 -0500</updated>
                    <resolved>Tue, 28 Sep 2010 21:30:00 -0500</resolved>
                                            <fixVersion>Release 1.3</fixVersion>
                                        <due></due>
                    <votes>0</votes>
                        <watches>0</watches>
                        <comments>
                    <comment id="24251" author="importer" created="Tue, 28 Sep 2010 21:30:00 -0500"  >&lt;p&gt;Converted from &lt;a href=&quot;http://www.assembla.com/spaces/clojure/tickets/444&quot;&gt;http://www.assembla.com/spaces/clojure/tickets/444&lt;/a&gt;&lt;br/&gt;
Attachments:&lt;br/&gt;
keyword-intern.diff - &lt;a href=&quot;https://www.assembla.com/spaces/clojure/documents/a1Rf2-YY0r37R9eJe5cbLA/download/a1Rf2-YY0r37R9eJe5cbLA&quot;&gt;https://www.assembla.com/spaces/clojure/documents/a1Rf2-YY0r37R9eJe5cbLA/download/a1Rf2-YY0r37R9eJe5cbLA&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="24252" author="importer" created="Tue, 28 Sep 2010 21:30:00 -0500"  >&lt;p&gt;tomfaulhaber said: [&lt;a href=&quot;file:a1Rf2-YY0r37R9eJe5cbLA&quot;&gt;file:a1Rf2-YY0r37R9eJe5cbLA&lt;/a&gt;]: bug fix&lt;/p&gt;</comment>
                    <comment id="24253" author="importer" created="Tue, 28 Sep 2010 21:30:00 -0500"  >&lt;p&gt;richhickey said: I don&apos;t think this analysis or patch is quite right.&lt;/p&gt;

&lt;p&gt;The Util.clearCache call at the top of intern should delete the dead entry. I guess there can be a window in which the softreference hasn&apos;t yet been enqueued, if it has any extent you could spin and see your stack overflow.&lt;/p&gt;

&lt;p&gt;But slamming in a new entry without the putIfAbsent logic risks an alias (two keywords with the same name) in a race condition.&lt;/p&gt;

&lt;p&gt;Better to explicitly remove the entry (not waiting on the softref queue) and recur.&lt;/p&gt;

&lt;p&gt;I&apos;ll fix.&lt;/p&gt;</comment>
                    <comment id="24254" author="importer" created="Tue, 28 Sep 2010 21:30:00 -0500"  >&lt;p&gt;richhickey said: (In [&lt;span class=&quot;error&quot;&gt;&amp;#91;r:167a73857a746e8dbeeb6d9ea8f99083aca7dc69&amp;#93;&lt;/span&gt;]) don&apos;t rely on softref queue, explicitly remove dead entry when found, fixes #444&lt;/p&gt;

&lt;p&gt;Branch: master&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                            <customfield id="customfield_10010" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Global Rank</customfieldname>
                <customfieldvalues>
                    
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>
</channel>
</rss>