<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">FTR, here's a test case I just minimized. &nbsp;It may be related to some of the failures we've been seeing.<div><br></div><div>-- John<br><div><br></div><div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">/*</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp;Minimized test case for stack walking bug.</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp;JVM crash occurs when compiled code calls DMH to compiled code.</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br></span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp;To reproduce:</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br></span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp;$JAVA7X_HOME/bin/javac -XDinvokedynamic $BUGDIR/ThrowBug.java</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp;$JAVA7X_HOME/bin/java -Xbatch -XX:+PrintCompilation -XX:+EnableMethodHandles -cp $BUGDIR ThrowBug</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br></span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp;continues to reproduce with -XX:CompileCommand=compileonly,ThrowBug.* (2 methods compiled only)</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;*/</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br></span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">import java.dyn.*;</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">import static java.dyn.MethodHandles.*;</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br></span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">class ThrowBug {</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;public static void main(String... av) throws Throwable {</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (int i = 0; i &lt; 10001; i++) {</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catcher(THROWER);</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;System.out.println("catches="+catches);</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;}</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br></span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;static final Exception blintz = new ClassCastException("blintz");</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;static Object thrower() throws Throwable {</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;throw blintz; &nbsp;// food fight!!</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;}</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;static final MethodHandle THROWER</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;= lookup().findStatic(ThrowBug.class, "thrower", methodType(Object.class));</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br></span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;static Object catcher(MethodHandle thrower) {</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;try {</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return THROWER.invoke();</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} catch (Throwable ex) {</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catches++;</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return null;</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;}</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">&nbsp;&nbsp; &nbsp;static int catches;</span></font></div><div><font class="Apple-style-span" face="'Lucida Sans Typewriter'" size="3"><span class="Apple-style-span" style="font-size: 12px;">}</span></font></div><div><br></div></div></div></body></html>