jstack() is returning corrupt method signatures on Solaris. To reproduce, you can use DTrace:
dtrace -x jstackstrsize=2048 -Z \
-n 'hotspot_jni$target::: /0/{}' \
-n 'syscall::write:entry /pid==$target/{jstack(1024)}' \
-c 'java -version'
With Java 6, the output is roughly:
java/io/FileOutputStream.writeBytes([BII)V
java/io/FileOutputStream.write([BII)V
java/io/BufferedOutputStream.flushBuffer()V
java/io/BufferedOutputStream.flush()V
java/io/PrintStream.write([BII)V
With Java 7, the output is roughly:
java/io/FileOutputStream.riteBytes
java/io/FileOutputStream.rite
java/io/BufferedOutputStream.lushBuffer
java/io/BufferedOutputStream.lush
java/io/PrintStream.rite
As you can see, the method names are truncated.
As of 2013-02-27, Solaris is not yet built with Java 7. You can contact me (sam.falkner at oracle dot com) if you need access to a machine that reproduces the bug.