RFR: 8009204 : [dtrace] signatures returned by Java 7 jstack() are corrupted on Solaris

Tomas Hurka tomas.hurka at googlemail.com
Fri Jun 28 15:03:24 PDT 2013


Hi Coleen,
thanks a lot for review. pstack works fine. I can try to write a test, but first I need similar one. Is there a similar test for pstack? Are there any tests using dtrace?

On 28 Jun 2013, at 17:09, Coleen Phillimore wrote:

> This looks good.  Does pstack work?  Is the libjvm_db.c file still correct?  I thought I'd fixed this once but apparently not.  Is there a way to write a test for this for jtreg?
> 
> Thanks for doing this,
> Coleen
> 
> On 6/28/2013 9:29 AM, Tomas Hurka wrote:
>> Hi All,
>> I would like to ask for review of JDK-8009204 <http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8009204>
>> 
>> Description of the problem:
>> jstack() returns corrupted method signatures on Solaris. The issue can be easily reproduce using the following DTrace script:
>> 
>> 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 and Java 8, the output is roughly:
>> 
>>              java/io/FileOutputStream.riteBytes
>>              java/io/FileOutputStream.rite
>>              java/io/BufferedOutputStream.lushBuffer
>>              java/io/BufferedOutputStream.lush
>>              java/io/PrintStream.rite
>> 
>> Evaluation:
>> The problem is caused by SymbolTable changes JDK-6990754. jhelper.d was never updated with changes for CPSlot, so the low bit of the address of the Symbol is set, which causes the off by 1-ness of the output. The klass name uses a untagged constant pool entry, which is why it doesn't have the problem in the output. There is a very similar bug JDK-7019165 reported against pstack output and the proposed fix is basically backport of JDK-7019165 to jhelper.d.
>> 
>> Webrev:
>> <http://cr.openjdk.java.net/~thurka/8009204/webrev.00/>
>> 
>> I tested the fix using above D-script on latest JDK 8 and JDK 7u sources.
>>  Thanks,
>> --
>> Tomas Hurka   <mailto:tomas.hurka at oracle.com>
>> NetBeans Profiler http://profiler.netbeans.org
>> VisualVM http://visualvm.java.net
>> Software Developer
>> Oracle, Praha Czech Republic
>> 
> 

--
Tomas Hurka   <mailto:tomas.hurka at oracle.com>
NetBeans Profiler http://profiler.netbeans.org
VisualVM http://visualvm.java.net
Software Developer
Oracle, Praha Czech Republic





More information about the hotspot-dev mailing list