JDK-6539567 : ShouldNotReachHere in mem2reg at c1_LIRAssembler_i486.cpp, 1135
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 6
  • Priority: P5
  • Status: Resolved
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2007-03-28
  • Updated: 2010-04-04
  • Resolved: 2007-05-24
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
Description
FULL PRODUCT VERSION :
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)

FULL OS VERSION :
Microsoft Windows XP [Version 5.1.2600]

A DESCRIPTION OF THE PROBLEM :
In the sampleId-List are about 30.000 entries and here is the code:

Connection c = null;
		PreparedStatement prestmt1 = null;
		try {
			c = SQLConnection.getConnection();
			c.setAutoCommit(false);
			prestmt1 = c.prepareStatement(SqlQuery.INSERT_SAMPLE_2_SUBMISSION);
			for (int i = 0; i < sampleId.size(); i++) {
				prestmt1.setBigDecimal(1, sampleId.get(i).getId());
				prestmt1.setBigDecimal(2, submissionId);
				prestmt1.addBatch();
			}
			prestmt1.executeBatch();
			c.commit();
		} catch (SQLException ex) {
			log.fatal(ex);
			try {
				c.rollback();
			} catch (SQLException ex1) {
				log.fatal(ex1);
			}
		} finally {
			try {
				if (prestmt1 != null)
					prestmt1.close();
				if (c != null)
					c.close();
			} catch (SQLException ex) {
				log.fatal(ex);
			}
		}

after executing this code, the software is closed in the debugmode and the following error appear in the console of eclipse:
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (43113F2C2932215353454D424C45523F491418160E435050046F), pid=2120, tid=2368
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode)
# An error report file with more information is saved as hs_err_pid2120.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

THE PROBLEM WAS REPRODUCIBLE WITH -Xint FLAG: Did not try

THE PROBLEM WAS REPRODUCIBLE WITH -server FLAG: Did not try

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
try to execute the query with about 30.000 insert-statements

EXPECTED VERSUS ACTUAL BEHAVIOR :
expected: system should query the statement
actual result: software shut down in debugmode and in the console appears the error:
 #
# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (43113F2C2932215353454D424C45523F491418160E435050046F), pid=2120, tid=2368
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode)
# An error report file with more information is saved as hs_err_pid2120.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
ERROR MESSAGES/STACK TRACES THAT OCCUR :
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (43113F2C2932215353454D424C45523F491418160E435050046F), pid=2120, tid=2368
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode)
# 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 (0x26c55c00):  JavaThread "CompilerThread0" daemon [_thread_in_native, id=2368]

Stack: [0x27060000,0x270b0000)
[error occurred during error reporting, step 110, id 0xc0000005]


Current CompileTask:
C1: 11% !   oracle.jdbc.driver.OraclePreparedStatement.executeBatch()[I @ 504 (544 bytes)


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

Java Threads: ( => current thread )
  0x2726a800 JavaThread "TimerQueue" daemon [_thread_blocked, id=3856]
  0x00387c00 JavaThread "DestroyJavaVM" [_thread_blocked, id=944]
  0x26c79c00 JavaThread "Timer-0" [_thread_blocked, id=3816]
  0x275d2400 JavaThread "AWT-EventQueue-0" [_thread_in_Java, id=2008]
  0x27569000 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2860]
  0x27567c00 JavaThread "AWT-Shutdown" [_thread_blocked, id=2144]
  0x27567000 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=3680]
  0x26c56c00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2164]
=>0x26c55c00 JavaThread "CompilerThread0" daemon [_thread_in_native, id=2368]
  0x26c52c00 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=2696]
  0x26c48000 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=1800]
  0x26c46000 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=264]
  0x26c3a000 JavaThread "Attach Listener" daemon [_thread_blocked, id=2564]
  0x26c39000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1128]
  0x26c28400 JavaThread "Finalizer" daemon [_thread_blocked, id=2712]
  0x26c24000 JavaThread "Reference Handler" daemon [_thread_blocked, id=3048]

Other Threads:
  0x26c20c00 VMThread [id=3624]
  0x26c71400 WatcherThread [id=3088]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 14336K, used 12523K [0x02960000, 0x038e0000, 0x050c0000)
  eden space 12800K,  85% used [0x02960000, 0x0341adb0, 0x035e0000)
  from space 1536K, 100% used [0x035e0000, 0x03760000, 0x03760000)
  to   space 1536K,   0% used [0x03760000, 0x03760000, 0x038e0000)
 tenured generation   total 190076K, used 124055K [0x050c0000, 0x10a5f000, 0x22960000)
   the space 190076K,  65% used [0x050c0000, 0x0c9e5c10, 0x0c9e5e00, 0x10a5f000)
 compacting perm gen  total 17408K, used 17384K [0x22960000, 0x23a60000, 0x26960000)
   the space 17408K,  99% used [0x22960000, 0x23a5a080, 0x23a5a200, 0x23a60000)
No shared spaces configured.

Dynamic libraries:
0x00400000 - 0x00423000 	C:\Programme\Java\jdk1.6.0\bin\javaw.exe
0x7c910000 - 0x7c9c7000 	C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c906000 	C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e4a000 	C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee1000 	C:\WINDOWS\system32\RPCRT4.dll
0x77d10000 - 0x77da0000 	C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f37000 	C:\WINDOWS\system32\GDI32.dll
0x76330000 - 0x7634d000 	C:\WINDOWS\system32\IMM32.DLL
0x7c340000 - 0x7c396000 	C:\Programme\Java\jdk1.6.0\jre\bin\msvcr71.dll
0x6d7c0000 - 0x6da07000 	C:\Programme\Java\jdk1.6.0\jre\bin\client\jvm.dll
0x76af0000 - 0x76b1e000 	C:\WINDOWS\system32\WINMM.dll
0x6d310000 - 0x6d318000 	C:\Programme\Java\jdk1.6.0\jre\bin\hpi.dll
0x76bb0000 - 0x76bbb000 	C:\WINDOWS\system32\PSAPI.DLL
0x6d400000 - 0x6d429000 	C:\Programme\Java\jdk1.6.0\jre\bin\jdwp.dll
0x6d6c0000 - 0x6d6c6000 	C:\Programme\Java\jdk1.6.0\jre\bin\npt.dll
0x6d770000 - 0x6d77c000 	C:\Programme\Java\jdk1.6.0\jre\bin\verify.dll
0x6d3b0000 - 0x6d3cf000 	C:\Programme\Java\jdk1.6.0\jre\bin\java.dll
0x6d7b0000 - 0x6d7bf000 	C:\Programme\Java\jdk1.6.0\jre\bin\zip.dll
0x6d280000 - 0x6d287000 	C:\Programme\Java\jdk1.6.0\jre\bin\dt_socket.dll
0x71a10000 - 0x71a27000 	C:\WINDOWS\system32\WS2_32.dll
0x77be0000 - 0x77c38000 	C:\WINDOWS\system32\msvcrt.dll
0x71a00000 - 0x71a08000 	C:\WINDOWS\system32\WS2HELP.dll
0x719b0000 - 0x719f0000 	C:\WINDOWS\System32\mswsock.dll
0x76ee0000 - 0x76f07000 	C:\WINDOWS\system32\DNSAPI.dll
0x76f70000 - 0x76f78000 	C:\WINDOWS\System32\winrnr.dll
0x76f20000 - 0x76f4d000 	C:\WINDOWS\system32\WLDAP32.dll
0x66210000 - 0x66219000 	C:\WINDOWS\system32\netware\NWWS2NDS.DLL
0x50d50000 - 0x50d98000 	C:\WINDOWS\system32\NETWIN32.DLL
0x50d00000 - 0x50d15000 	C:\WINDOWS\system32\CLNWIN32.DLL
0x50df0000 - 0x50e10000 	C:\WINDOWS\system32\LOCWIN32.DLL
0x50db0000 - 0x50ddc000 	C:\WINDOWS\system32\NCPWIN32.dll
0x71a30000 - 0x71a3a000 	C:\WINDOWS\system32\WSOCK32.dll
0x66220000 - 0x6622c000 	C:\WINDOWS\system32\netware\NWWS2SLP.DLL
0x66250000 - 0x66257000 	C:\WINDOWS\system32\NWSRVLOC.dll
0x76f80000 - 0x76f86000 	C:\WINDOWS\system32\rasadhlp.dll
0x66710000 - 0x66769000 	C:\WINDOWS\system32\hnetcfg.dll
0x719f0000 - 0x719f8000 	C:\WINDOWS\System32\wshtcpip.dll
0x6d000000 - 0x6d1c3000 	C:\Programme\Java\jdk1.6.0\jre\bin\awt.dll
0x72f70000 - 0x72f96000 	C:\WINDOWS\system32\WINSPOOL.DRV
0x774b0000 - 0x775ed000 	C:\WINDOWS\system32\ole32.dll
0x5b0f0000 - 0x5b128000 	C:\WINDOWS\system32\uxtheme.dll
0x736d0000 - 0x73719000 	C:\WINDOWS\system32\ddraw.dll
0x73b30000 - 0x73b36000 	C:\WINDOWS\system32\DCIMAN32.dll
0x746a0000 - 0x746eb000 	C:\WINDOWS\system32\MSCTF.dll
0x75250000 - 0x7527e000 	C:\WINDOWS\system32\msctfime.ime
0x7c9d0000 - 0x7d1f0000 	C:\WINDOWS\system32\shell32.dll
0x77f40000 - 0x77fb6000 	C:\WINDOWS\system32\SHLWAPI.dll
0x773a0000 - 0x774a3000 	C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll
0x5d450000 - 0x5d4ea000 	C:\WINDOWS\system32\comctl32.dll
0x6d2b0000 - 0x6d303000 	C:\Programme\Java\jdk1.6.0\jre\bin\fontmanager.dll
0x6d570000 - 0x6d583000 	C:\Programme\Java\jdk1.6.0\jre\bin\net.dll
0x6d590000 - 0x6d599000 	C:\Programme\Java\jdk1.6.0\jre\bin\nio.dll
0x6d450000 - 0x6d474000 	C:\Programme\Java\jdk1.6.0\jre\bin\jpeg.dll

VM Arguments:
jvm_args: -Djava.library.path=D:\workspace\metlib\lib -Djava.security.manager -Djava.security.policy==conf\ApiProviders.policy -Djava.security.auth.login.config==conf\metiq_jaas.config -Xmx512M -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:4595
java_command: com.biocrates.core.MetCore
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=C:\Programme\Oracle\bin;C:\Programme\Oracle\jre\1.4.2\bin\client;C:\Programme\Oracle\jre\1.4.2\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\nls;C:\WINDOWS\system32\nls\ENGLISH;C:\Programme\Novell\ZENworksUSERNAME=andresda
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 10, GenuineIntel



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

OS: Windows XP Build 2600 Service Pack 2

CPU:total 2 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht

Memory: 4k page, physical 1039720k(251116k free), swap 1714740k(950632k free)

vm_info: Java HotSpot(TM) Client VM (1.6.0-b105) for windows-x86, built on Nov 29 2006 00:48:48 by "java_re" with unknown MS VC++:1310



REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
public static void updateReferenceTable(BigDecimal submissionId, List<DBObjectAbstract> sampleId) {
		Connection c = null;
		PreparedStatement prestmt1 = null;
		try {
			c = SQLConnection.getConnection();
			c.setAutoCommit(false);
			prestmt1 = c.prepareStatement(SqlQuery.INSERT_SAMPLE_2_SUBMISSION);
			for (int i = 0; i < sampleId.size(); i++) {
				prestmt1.setBigDecimal(1, sampleId.get(i).getId());
				prestmt1.setBigDecimal(2, submissionId);
				prestmt1.addBatch();
			}
			prestmt1.executeBatch();
			c.commit();
		} catch (SQLException ex) {
			log.fatal(ex);
			try {
				c.rollback();
			} catch (SQLException ex1) {
				log.fatal(ex1);
			}
		} finally {
			try {
				if (prestmt1 != null)
					prestmt1.close();
				if (c != null)
					c.close();
			} catch (SQLException ex) {
				log.fatal(ex);
			}
		}
	}

---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
not using addBatch() and executeBatch() methods, instead commit each statement step by step which is time intensive!!!

Comments
SUGGESTED FIX Parent workspace: /net/jano.sfbay/export/disk05/hotspot/ws/main/c2_baseline Submitter: never PRT data: /net/prt-web.sfbay/prt-workspaces/20070501171158.never.6539567 Archived data: /net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2007/20070501171158.never.6539567/ Webrev: http://prt-web.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2007/20070501171158.never.6539567/workspace/webrevs/webrev-2007.05.01/index.html Fixed 6539567: ShouldNotReachHere in mem2reg at c1_LIRAssembler_i486.cpp, 1135 The new OSR entry point code in 1.6 uses LIR to load up the current state and if there's a T_ADDRESS value still live in the state we'll emit a load with the type of T_ADDRESS. The i486 code doens't have a path to handle this so we hit the ShouldNotReachHere. The fix is simply to handle that case like any other 32-bit load. It's already handled in the store case so this is just fixing an inconsistency. This should only happen when using JVMTI since it forces all locals to be live, so for instance this could occur when using jdb. I wasn't able to construct a test case for this but it clearly can happen and the submitter was using the debuggers wire protocal agent when it crashed: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:4595 http://javaweb.sfbay/~never/webrev/6539567 Reviewed by: nips, kvn Fix verified (y/n): n
02-05-2007

EVALUATION This should only happen when using JVMTI since it forces all locals to be live. So for instance this could occur when using jdb.
18-04-2007

EVALUATION The new OSR entry point code in 1.6 uses LIR to load up the current state and if there's a T_ADDRESS value still live in the state we'll emit a load with the type of T_ADDRESS. The i486 code doens't have a path to handle this so we hit the ShouldNotReachHere. The fix is simply to handle that case like any other 32-bit load.
18-04-2007