<div dir="ltr">Hi Ivan,<div><br></div><div>Looks like a OmitStackTraceInFastThrow kind of behavior. Have you tried -XX:-OmitStackTraceInFastThrow to turn off that behavior and see what happens?</div><div><br></div><div>Thanks,</div>
<div>Kris</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 20, 2014 at 10:46 PM, Ivan Kozik <span dir="ltr"><<a href="mailto:ivan@ludios.org" target="_blank">ivan@ludios.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">There is a long-standing HotSpot bug in tiered compilation when it<br>
upgrades code from tier 3 to tier 4.  After this code upgrade happens,<br>
stack traces are repeatedly thrown away, at least in Clojure programs.<br>
<br>
<br>
Repro steps are:<br>
<br>
wget <a href="http://repo2.maven.org/maven2/org/clojure/clojure/1.6.0-RC1/clojure-1.6.0-RC1.jar" target="_blank">http://repo2.maven.org/maven2/org/clojure/clojure/1.6.0-RC1/clojure-1.6.0-RC1.jar</a><br>
rlwrap java -jar clojure-1.6.0-RC1.jar<br>
(inc nil) (pst)<br>
<br>
keep repeating (inc nil) (pst) until you see:<br>
<br>
NullPointerException   [trace missing]<br>
<br>
<br>
or, to avoid having to hit Up/Enter as much:<br>
<br>
(dotimes [_ 1000] (try (inc nil) (catch Throwable e (.printStackTrace e))))<br>
<br>
which will usually require just 2 invocations, but sometimes up to 5.<br>
<br>
<br>
I see this bug in both IcedTea and Oracle Java 7 and 8, on all of<br>
Ubuntu, Windows 7, and Mountain Lion.  I don't see the bug when<br>
TieredCompilation is turned off, or when it is limited to tier 3.<br>
<br>
This was originally discovered in<br>
<a href="https://github.com/technomancy/leiningen/issues/1025" target="_blank">https://github.com/technomancy/leiningen/issues/1025</a> and the<br>
workaround (for leiningen users) was to limit the compilation tier.  I<br>
expect that Clojure users will be running into this problem more<br>
frequently now that tiered compilation is on by default.<br>
<br>
Unfortunately, I am not familiar with the internals of<br>
<a href="https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Compiler.java" target="_blank">https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Compiler.java</a><br>
to know if Clojure might be doing something peculiar with JVM<br>
bytecode.  It wouldn't be something new; Clojure 1.0, 1.1, 1.2.1, 1.3,<br>
1.4, 1.5.1, and 1.6.0-RC1 are affected.<br>
<br>
I originally reported this to <a href="http://bugs.sun.com" target="_blank">bugs.sun.com</a> in February 2013 and it was<br>
assigned internal review ID 2456988.  AFAIK, the bug did not make it<br>
into <a href="http://bugs.sun.com" target="_blank">bugs.sun.com</a> or <a href="http://bugs.openjdk.java.net" target="_blank">bugs.openjdk.java.net</a>.  I later asked #openjdk<br>
about it and was told to report it here.<br>
<br>
<br>
Thanks,<br>
<br>
Ivan<br>
</blockquote></div><br></div>