JDK-6570219 : REG: VM crash when printing an image in different orientations, SolSparc
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 7
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: sparc
  • Submitted: 2007-06-15
  • Updated: 2011-03-08
  • Resolved: 2011-03-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u4Fixed 7Fixed hs10Fixed
Related Reports
Relates :  
Description
Run the attached test on SolSparc10 with JDK7-b13. Make sure you have a printer available on your system. A frame would popup with a button. Click on the 'Print' button. This would print an image in 3 all supported orientations and you will get the respective message on the console, if successful. 

But I noticed that the VM crashes immediately after pressing the 'Print' button. This is reproducible only from JDK7-b13 and not reproducible on b12. Not reproducible on JDK6. Reproducible only on SolSparc and not reproducible on Win32 \ Linux. Hence this is a regression introduced in JDK7-b13. Reproducible on JDK7-b14 PIT as well.

Here is the crash log: 
----------------------

#
# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0xfc038b0c, pid=21865, tid=19
#
# Java VM: Java HotSpot(TM) Tiered VM (1.7.0-ea-b13 mixed mode solaris-sparc)
# Problematic frame:
# v  ~BufferBlob::StubRoutines (2)
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x00224000):  
[error occurred during error reporting (printing current thread), id 0xb]

siginfo:si_signo=SIGSEGV: si_errno=0, si_code=2 (SEGV_ACCERR), si_addr=0xf1c00000

Registers:
 O0=0xf1788430 O1=0xf1789050 O2=0x1ff712bb O3=0x3c352338
 O4=0x00476fb0 O5=0x00476fb8 O6=0xd667eb80 O7=0xfc07c158
 G1=0x00000000 G2=0x00224000 G3=0x263c2f20 G4=0x00000003
 G5=0xffffffff G6=0x00000000 G7=0xfe3d3800 Y=0x00000000
 PC=0xfc038b0c nPC=0xfc038b10


Top of Stack: (sp=0xd667eb80)
0xd667eb80:   f178842c f1789050 fffffff8 000000b6
0xd667eb90:   00000c14 000005af f1788420 00224000
0xd667eba0:   f1789040 f15d1968 00000000 f17889cc
0xd667ebb0:   f15d1f65 00000000 d667ec08 fc0058c0
0xd667ebc0:   f1787594 fc0058c0 00000000 0000004f
0xd667ebd0:   00000000 00000000 f15bb470 00000c14
0xd667ebe0:   f1788420 f178842c f1787cc8 f15bb470
0xd667ebf0:   40a51901 c0000000 40a51a00 00000000 

Instructions: (pc=0xfc038b0c)
0xfc038afc:   01 00 00 00 d6 5a 00 0c c6 5a 00 0d 94 a2 a0 02
0xfc038b0c:   d6 72 40 0c 98 03 20 10 c6 72 40 0d 16 4f ff fa 

Stack: [0xd6600000,0xd6680000],  sp=0xd667eb80,  free space=506k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
v  ~BufferBlob::StubRoutines (2)
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::StubRoutines (1)
V  [libjvm.so+0x132b44]
V  [libjvm.so+0x47c370]
V  [libjvm.so+0x1d3040]
V  [libjvm.so+0x1e640c]
V  [libjvm.so+0x715328]
V  [libjvm.so+0x66ba78]


---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x00030800 
[error occurred during error reporting (printing all threads), id 0xb]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 PSYoungGen      total 10752K, used 9366K [0xf1000000, 0xf1c00000, 0xfbc00000)
  eden space 9216K, 84% used [0xf1000000,0xf17a6518,0xf1900000)
  from space 1536K, 99% used [0xf1900000,0xf1a7f6d0,0xf1a80000)
  to   space 1536K, 0% used [0xf1a80000,0xf1a80000,0xf1c00000)
 PSOldGen        total 24576K, used 1693K [0xdb800000, 0xdd000000, 0xf1000000)
  object space 24576K, 6% used [0xdb800000,0xdb9a7660,0xdd000000)
 PSPermGen       total 16384K, used 7018K [0xd7800000, 0xd8800000, 0xdb800000)
  object space 16384K, 42% used [0xd7800000,0xd7eda808,0xd8800000)

Dynamic libraries:
0x00010000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/bin/java
0xff3f8000 	/lib/libthread.so.1
0xff380000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/bin/../jre/lib/sparc/jli/libjli.so
0xff3a0000 	/lib/libdl.so.1
0xff200000 	/lib/libc.so.1
0xff350000 	/platform/SUNW,Sun-Blade-2500/lib/libc_psr.so.1
0xfe800000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/server/libjvm.so
0xff310000 	/lib/libsocket.so.1
0xff340000 	/usr/lib/libsched.so.1
0xff1e0000 	/lib/libm.so.1
0xff1a0000 	/usr/lib/libCrun.so.1
0xff180000 	/lib/libdoor.so.1
0xfe700000 	/lib/libnsl.so.1
0xfe600000 	/lib/libm.so.2
0xff150000 	/lib/libscf.so.1
0xfe7e0000 	/lib/libuutil.so.1
0xfe6e0000 	/lib/libmd5.so.1
0xfe5e0000 	/platform/SUNW,Sun-Blade-2500/lib/libmd5_psr.so.1
0xfe5c0000 	/lib/libmp.so.2
0xfe530000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/native_threads/libhpi.so
0xfe450000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libverify.so
0xfe410000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libjava.so
0xfe3f0000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libzip.so
0xd6d80000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libawt.so
0xd6c00000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libmlib_image.so
0xfe020000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/xawt/libmawt.so
0xfe390000 	/usr/openwin/lib/libXext.so.0
0xd6b00000 	/usr/openwin/lib/libX11.so.4
0xfe2d0000 	/usr/openwin/lib/libXtst.so.1
0xfbfd0000 	/usr/openwin/lib/libXi.so.5
0xfbe90000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libt2k.so
0xfbdb0000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libfontmanager.so
0xfbfa0000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libnet.so
0xfe2b0000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libnio.so
0xfbd90000 	/lib/librt.so.1
0xfbce0000 	/lib/libaio.so.1
0xfbcc0000 	/usr/lib/libsendfile.so.1
0xfbc50000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libkcms.so
0xd7530000 	/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/libjpeg.so

VM Arguments:
java_command: OrientationTest
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=/net/sqindia/export/disk05/2d-SQE/PIT/7/2007-06-13-int.jdk7.pit/solaris-sparc
PATH=/home/pm143956/gnu_utils/sparc:/net/sqindia/export/disk05/2d-SQE/PIT/7/2007-06-13-int.jdk7.pit/solaris-sparc/bin:/net/sqindia/export/disk09/jdk/1.6.0/latest/binaries/solsparc/bin:/usr/dist/share/devpro,v4.2/5.x-sparc/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin:/usr/bin:/bin:/usr/ucb:/usr/sbin:/sbin:/usr/local/bin:/usr/dist/local/exe:/usr/sfw/bin:/usr/dist/exe:/usr/lib/lp/postscript:.:/usr/openwin/bin:/usr/dt/bin
LD_LIBRARY_PATH=/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc/server:/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/lib/sparc:/net/sqindia/export/disk09/jdk/7/b13/binaries/solsparc/jre/../lib/sparc
SHELL=/bin/bash
DISPLAY=:0.0

Signal Handlers:
SIGSEGV: [libjvm.so+0x765160], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGBUS: [libjvm.so+0x765160], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGFPE: [libjvm.so+0x1a4c58], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGPIPE: [libjvm.so+0x1a4c58], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGXFSZ: [libjvm.so+0x1a4c58], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGILL: [libjvm.so+0x1a4c58], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c
SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
SIGUSR2: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000
SIGQUIT: [libjvm.so+0x66dc6c], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGHUP: [libjvm.so+0x66dc6c], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGINT: [libjvm.so+0x66dc6c], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIGTERM: [libjvm.so+0x66dc6c], sa_mask[0]=0xffbffeff, sa_flags=0x00000004
SIG39: [libjvm.so+0x671274], sa_mask[0]=0x00000000, sa_flags=0x00000008
SIG40: [libjvm.so+0x1a4c58], sa_mask[0]=0xffbffeff, sa_flags=0x0000000c


---------------  S Y S T E M  ---------------

OS:                         Solaris 10 3/05 s10_74L2a SPARC
           Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                            Assembled 22 January 2005

uname:SunOS 5.10 Generic_118822-25 sun4u  (T2 libthread)
rlimit: STACK 8192k, CORE infinity, NOFILE 65536, AS infinity
load average:0.07 0.07 0.05

CPU:total 2 has_v8, has_v9, has_vis1, has_vis2, is_ultra3

Memory: 8k page, physical 2097152k(972760k free)

vm_info: Java HotSpot(TM) Tiered VM (1.7.0-ea-b13) for solaris-sparc, built on May 24 2007 02:23:12 by "" with unknown Workshop:0x580

time: Fri Jun 15 20:52:30 2007
elapsed time: 9 seconds

Comments
SUGGESTED FIX Solution: 1. Use 'srl' instead of 'srlx' in the disjoint_byte_copy stub. 2. Use 'brx' instead of 'br' when comparing klass pointers. Webrev: http://prt-web.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2007/20070619110823.kvn.6570219/workspace/webrevs/webrev-2007.06.19/index.html
19-06-2007

EVALUATION The changes in the fix for 6498658 incorrectly use 'srlx(R, 3)' instruction instead of 'srl(R, 3)' when calculating 'longs' counter from 'bytes' counter in 32-bits VM. As result a garbage bits from upper 32-bits are shifted into low 32-bits creating possible very large counter.
19-06-2007