<div><br></div><div>Hi Tom.</div><div><br></div><div>Apologies for not providing a broader context, it follows.</div><div><br></div><meta http-equiv="content-type" content="text/html; charset=utf-8">&gt; Is it hanging, as in making no progress, or not terminating?  <div>

<br></div><div>It is hanging as in: it consumes 100% of a single core, never terminates (when executed without debugging), in the debugging mode it does not terminate until a JVM breakpoint is set inside the loop below, then it breaks out to the debugger and you can step-by-step execute the code or re-run it and, magically, it will terminate.</div>

<div><br></div><div>&gt; Does it terminate if given a lot more time?  It&#39;s not GC bound?  By debugger do you mean gdb or a Java debugger?</div><div><br></div><div>No, it never terminates... at least not in a reasonable time. Normally this loop ends in 2-3 seconds and when hung it does not terminate after 30 minutes or so (the longest we waited to kill it on the build server).</div>

<div><br></div><div>To me It looks like it JITs into something that causes an endless loop. I also checked with jrockit and J9 and these never hung, so it&#39;s probably hotspot.</div><div><br></div><div>Talking about the debugger, that was a Java debugger, I didn&#39;t inspect JIT dumps of what this method compiles to yet, didn&#39;t have the time and wanted to check if it&#39;s a known issue first. </div>

<div><br></div><div>I&#39;ll try to reproduce it with JIT code dumps, I&#39;ll let you know if I succeed.</div><div><br></div><div>Dawid<br><br><div class="gmail_quote">On Thu, Mar 3, 2011 at 9:37 PM, Tom Rodriguez <span dir="ltr">&lt;<a href="mailto:tom.rodriguez@oracle.com">tom.rodriguez@oracle.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><br>
On Mar 3, 2011, at 4:39 AM, Dawid Weiss wrote:<br>
<br>
&gt; Hi. We see an infrequent, but very annoying VM hangups in purely<br>
&gt; computational code, as in here:<br>
&gt;<br>
&gt; <a href="http://builds.carrot2.org/build/result/viewBuildResultsFailedTests.action?buildKey=JSA-JSAHEAD-JOB1&amp;buildNumber=8" target="_blank">http://builds.carrot2.org/build/result/viewBuildResultsFailedTests.action?buildKey=JSA-JSAHEAD-JOB1&amp;buildNumber=8</a><br>


&gt;<br>
&gt; The loop in question is like this:<br>
&gt;<br>
&gt;            for (c0 = ALPHABET_SIZE - 2, j = m; 0 &lt; j; --c0)<br>
&gt;            {<br>
&gt;                for (c1 = ALPHABET_SIZE - 1; c0 &lt; c1; j = i, --c1)<br>
&gt;                {<br>
&gt;                    i = bucket_B[(c0) * ALPHABET_SIZE + (c1)];<br>
&gt;                    if (1 &lt; (j - i))<br>
&gt;                    {<br>
&gt;                        ssSort(PAb, i, j, buf, bufsize, 2, n, SA[i] == (m - 1));<br>
&gt;                    }<br>
&gt;                }<br>
&gt;            }<br>
&gt;<br>
&gt; Unfortunately I cannot provide an always-halting example, but the bug<br>
&gt; seems to be JVM-related because:<br>
&gt;<br>
&gt; 1) once the VM hangs in debugging mode, breaking out to the debugger<br>
&gt; and stepping through the code terminates normally (so a deopt. I<br>
&gt; assume),<br>
<br>
</div>Is it hanging, as in making no progress, or not terminating?  Does it terminate if given a lot more time?  It&#39;s not GC bound?  By debugger do you mean gdb or a Java debugger?<br>
<font color="#888888"><br>
tom<br>
</font><div><div></div><div class="h5"><br>
&gt;<br>
&gt; 2) the freeze is non-deterministic, while the test is (regardless of<br>
&gt; the &#39;randomness&#39;, it always starts from the same seed),<br>
&gt;<br>
&gt; 3) we could reproduce this occasionally under different VMs and<br>
&gt; different OSs (64-bit linux, 64-bit Windows).<br>
&gt;<br>
&gt; Has there been any bug in the JIT that might be causing this? Thanks<br>
&gt; for pointers if you recognize an evil code pattern above.<br>
&gt;<br>
&gt; Dawid<br>
&gt;<br>
&gt; P.S. The above code is a translation from another person&#39;s C snippet,<br>
&gt; so I can&#39;t easily explain why the loop is built this way or why c0 is<br>
&gt; passed between the inner and outer loop :).<br>
<br>
</div></div></blockquote></div><br></div>