JDK-8046516 : Segmentation fault in JVM (easily reproducible)
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 7u60,8,9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: os_x
  • CPU: x86
  • Submitted: 2014-06-08
  • Updated: 2015-10-27
  • Resolved: 2014-06-12
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 7 JDK 8 JDK 9
7u80Fixed 8u20Fixed 9 b20Fixed
Description
FULL PRODUCT VERSION :
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)

FULL OS VERSION :
OSX 10.9.2
OSX 10.6.8
Ubuntu 14.04
Windows 7

A DESCRIPTION OF THE PROBLEM :
I have some simple code that causes a segmentation fault.
 
Running in the Eclipse debugger or with the interpreter (using -Xint option) prevents the segfault from occurring.

I made a stack overflow post here:
http://stackoverflow.com/questions/24101142/java-fatal-error-sigsegv
Several commenters, on several different machines, were able to reproduce the error.

My code involves cacheing some computations in logarithmic scale. Specifically, given log(X),log(Y),..., I have a small class that computes log(X+Y+...). And then I cache the result in a HashMap. My code is <100 lines long, and only uses classes from java.util (no native libraries).

THE PROBLEM WAS REPRODUCIBLE WITH -Xint FLAG: No

THE PROBLEM WAS REPRODUCIBLE WITH -server FLAG: Yes

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the small code I have attached.

Sometimes I have to run the code a couple of times for the error to occur, but it happens more often than not.

EXPECTED VERSUS ACTUAL BEHAVIOR :
Expected: print out a bunch of numbers and terminate

Actual: print out a bunch of numbers and get a segmentation fault at some point.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x000000010fda8262, pid=21419, tid=18435
#
# JRE version: Java(TM) SE Runtime Environment (7.0_60-b19) (build 1.7.0_60-b19)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.60-b09 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.dylib+0x3a8262]  PhaseIdealLoop::idom_no_update(Node*) const+0x12
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#

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

Current thread (0x00007fb742035800):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=18435, stack(0x0000000117a42000,0x0000000117b42000)]

siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000008

Registers:
RAX=0x0000000000000000, RBX=0x0000000000000002, RCX=0x00007fb741a54a10, RDX=0x00007fb741a27410
RSP=0x0000000117b3b5b0, RBP=0x0000000117b3b5b0, RSI=0x00007fb741701f10, RDI=0x0000000117b3d088
R8 =0x0000000000000000, R9 =0x0000000000000001, R10=0x000000000086b93a, R11=0x00000000000004e0
R12=0x0000000000000003, R13=0x00007fb743015c40, R14=0x0000000000000000, R15=0x00007fb741701f10
RIP=0x000000010fda8262, EFLAGS=0x0000000000010297, ERR=0x0000000000000004
  TRAPNO=0x000000000000000e

Top of Stack: (sp=0x0000000117b3b5b0)
0x0000000117b3b5b0:   0000000117b3b680 000000010fdbacd1
0x0000000117b3b5c0:   0000000117b3b620 000000000000001a
0x0000000117b3b5d0:   0000003643016490 000000000000001a
0x0000000117b3b5e0:   00007fb743016e50 00007fb74150cdf0
0x0000000117b3b5f0:   0000000000000000 0000000117b3ba90
0x0000000117b3b600:   0000000000000000 0000000000000000
0x0000000117b3b610:   00000b1543016648 00007fb743013468
0x0000000117b3b620:   00007fb743039f50 00007fb743016070
0x0000000117b3b630:   0000000117b3d088 00007fb74150cdf0
0x0000000117b3b640:   0000000100000008 00007fb742094f30
0x0000000117b3b650:   0000000100000003 00007fb7419f8a38
0x0000000117b3b660:   00007fb743016510 0000000117b41000
0x0000000117b3b670:   0000000000000000 0000000117b3d088
0x0000000117b3b680:   0000000117b3b720 000000010fdad350
0x0000000117b3b690:   00007fb7430164d0 fffffffe41988438
0x0000000117b3b6a0:   00007fb743015dd0 00007fb700000003
0x0000000117b3b6b0:   00007fb7419f8900 00007fb742060aa0
0x0000000117b3b6c0:   00007fb700000035 00007fb7419f89b0
0x0000000117b3b6d0:   0000000117b3ba90 00007fb743039f50
0x0000000117b3b6e0:   00007fb7419f8a38 0000000117b3d088
0x0000000117b3b6f0:   00007fb743016490 0000000117b3d088
0x0000000117b3b700:   000000011015c101 0000000117b41000
0x0000000117b3b710:   00007fb743039f50 00007fb7419f8a38
0x0000000117b3b720:   0000000117b3b770 000000010fdaf6f0
0x0000000117b3b730:   0000000117b3d088 00017fb743039f50
0x0000000117b3b740:   0000000117b3ba90 00007fb743039f50
0x0000000117b3b750:   000000011015c1ca 0000000117b410b8
0x0000000117b3b760:   0000000117b3ba90 0000000117b3d088
0x0000000117b3b770:   0000000117b3b7a0 000000010fdaf7c6
0x0000000117b3b780:   000000011015c1ca 00007fb743039ec0
0x0000000117b3b790:   0000000117b3ba90 0000000117b3d088
0x0000000117b3b7a0:   0000000117b3b7d0 000000010fdaf80a 

Instructions: (pc=0x000000010fda8262)
0x000000010fda8242:   2c 83 e1 07 83 f9 05 48 0f 45 c2 5d c3 90 55 48
0x000000010fda8252:   89 e5 8b 46 28 48 8b 8f e0 09 00 00 48 8b 04 c1
0x000000010fda8262:   48 8b 48 08 48 83 39 00 75 26 8b 4f 28 8b 40 28
0x000000010fda8272:   39 c1 77 0e 31 c0 48 8b 50 08 48 83 3a 00 74 ed 

Register to memory mapping:

RAX=0x0000000000000000 is an unknown value
RBX=0x0000000000000002 is an unknown value
RCX=0x00007fb741a54a10 is an unknown value
RDX=0x00007fb741a27410 is an unknown value
RSP=0x0000000117b3b5b0 is pointing into the stack for thread: 0x00007fb742035800
RBP=0x0000000117b3b5b0 is pointing into the stack for thread: 0x00007fb742035800
RSI=0x00007fb741701f10 is an unknown value
RDI=0x0000000117b3d088 is pointing into the stack for thread: 0x00007fb742035800
R8 =0x0000000000000000 is an unknown value
R9 =0x0000000000000001 is an unknown value
R10=0x000000000086b93a is an unknown value
R11=0x00000000000004e0 is an unknown value
R12=0x0000000000000003 is an unknown value
R13=0x00007fb743015c40 is an unknown value
R14=0x0000000000000000 is an unknown value
R15=0x00007fb741701f10 is an unknown value


Stack: [0x0000000117a42000,0x0000000117b42000],  sp=0x0000000117b3b5b0,  free space=997k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.dylib+0x3a8262]  PhaseIdealLoop::idom_no_update(Node*) const+0x12
V  [libjvm.dylib+0x3bacd1]  PhaseIdealLoop::clone_loop(IdealLoopTree*, Node_List&, int, Node*)+0xadf
V  [libjvm.dylib+0x3ad350]  PhaseIdealLoop::do_unroll(IdealLoopTree*, Node_List&, bool)+0xba4
V  [libjvm.dylib+0x3af6f0]  IdealLoopTree::iteration_split_impl(PhaseIdealLoop*, Node_List&)+0x206
V  [libjvm.dylib+0x3af7c6]  IdealLoopTree::iteration_split(PhaseIdealLoop*, Node_List&)+0xc2
V  [libjvm.dylib+0x3af80a]  IdealLoopTree::iteration_split(PhaseIdealLoop*, Node_List&)+0x106
V  [libjvm.dylib+0x3af80a]  IdealLoopTree::iteration_split(PhaseIdealLoop*, Node_List&)+0x106
V  [libjvm.dylib+0x3b7ad7]  PhaseIdealLoop::build_and_optimize(bool, bool)+0x883
V  [libjvm.dylib+0x1ba324]  Compile::Optimize()+0x3e4
V  [libjvm.dylib+0x1bce78]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool)+0x882
V  [libjvm.dylib+0x1667d7]  C2Compiler::compile_method(ciEnv*, ciMethod*, int)+0x9d
V  [libjvm.dylib+0x1c0018]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x3e0
V  [libjvm.dylib+0x1c1d5a]  CompileBroker::compiler_thread_loop()+0x12c
V  [libjvm.dylib+0x4f5c11]  JavaThread::thread_main_inner()+0x9b
V  [libjvm.dylib+0x4f7319]  JavaThread::run()+0x1a3
V  [libjvm.dylib+0x420b4e]  java_start(Thread*)+0x126
C  [libsystem_pthread.dylib+0x1899]  _pthread_body+0x8a
C  [libsystem_pthread.dylib+0x172a]  _pthread_struct_init+0x0
C  [libsystem_pthread.dylib+0x5fc9]  thread_start+0xd


Current CompileTask:
C2:    601   64             test.TestLogSum::computeSum (111 bytes)


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

Java Threads: ( => current thread )
  0x00007fb741852800 JavaThread "Service Thread" daemon [_thread_blocked, id=19459, stack(0x0000000117c48000,0x0000000117d48000)]
  0x00007fb741851000 JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=18947, stack(0x0000000117b45000,0x0000000117c45000)]
=>0x00007fb742035800 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=18435, stack(0x0000000117a42000,0x0000000117b42000)]
  0x00007fb742803800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=17923, stack(0x000000011793f000,0x0000000117a3f000)]
  0x00007fb742801800 JavaThread "Finalizer" daemon [_thread_blocked, id=13059, stack(0x00000001176fd000,0x00000001177fd000)]
  0x00007fb742010000 JavaThread "Reference Handler" daemon [_thread_blocked, id=12547, stack(0x00000001175fa000,0x00000001176fa000)]
  0x00007fb742001000 JavaThread "main" [_thread_in_Java, id=6915, stack(0x0000000110460000,0x0000000110560000)]

Other Threads:
  0x00007fb74184f800 VMThread [stack: 0x00000001174f7000,0x00000001175f7000] [id=12035]
  0x00007fb741851800 WatcherThread [stack: 0x0000000117d4b000,0x0000000117e4b000] [id=19971]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 PSYoungGen      total 19456K, used 5408K [0x00000007eaa80000, 0x00000007ec000000, 0x0000000800000000)
  eden space 16896K, 32% used [0x00000007eaa80000,0x00000007eafc8210,0x00000007ebb00000)
  from space 2560K, 0% used [0x00000007ebd80000,0x00000007ebd80000,0x00000007ec000000)
  to   space 2560K, 0% used [0x00000007ebb00000,0x00000007ebb00000,0x00000007ebd80000)
 ParOldGen       total 43520K, used 0K [0x00000007c0000000, 0x00000007c2a80000, 0x00000007eaa80000)
  object space 43520K, 0% used [0x00000007c0000000,0x00000007c0000000,0x00000007c2a80000)
 PSPermGen       total 21504K, used 2709K [0x00000007bae00000, 0x00000007bc300000, 0x00000007c0000000)
  object space 21504K, 12% used [0x00000007bae00000,0x00000007bb0a5728,0x00000007bc300000)

Card table byte_map: [0x0000000113622000,0x000000011384c000] byte_map_base: 0x000000010f84b000

Polling page: 0x000000010f174000

Code Cache  [0x0000000110562000, 0x00000001107d2000, 0x0000000113562000)
 total_blobs=252 nmethods=69 adapters=138 free_code_cache=48626Kb largest_free_block=49776000

Compilation events (10 events):
Event: 0.545 Thread 0x00007fb741851000   59             sun.nio.cs.StreamEncoder::writeBytes (132 bytes)
Event: 0.549 Thread 0x00007fb742035800 nmethod 56 0x00000001105df990 code [0x00000001105dfb80, 0x00000001105e0ec8]
Event: 0.549 Thread 0x00007fb742035800   60   !         java.io.PrintStream::write (69 bytes)
Event: 0.564 Thread 0x00007fb741851000 nmethod 59 0x00000001105e6a10 code [0x00000001105e6be0, 0x00000001105e7b48]
Event: 0.564 Thread 0x00007fb741851000   61  s          java.io.BufferedOutputStream::write (67 bytes)
Event: 0.565 Thread 0x00007fb742035800 nmethod 60 0x00000001105e8490 code [0x00000001105e8640, 0x00000001105e9388]
Event: 0.565 Thread 0x00007fb742035800   63             java.nio.Buffer::clear (20 bytes)
Event: 0.566 Thread 0x00007fb742035800 nmethod 63 0x00000001105d3750 code [0x00000001105d3880, 0x00000001105d38f8]
Event: 0.566 Thread 0x00007fb742035800   64             test.TestLogSum::computeSum (111 bytes)
Event: 0.569 Thread 0x00007fb741851000 nmethod 61 0x00000001105e4410 code [0x00000001105e4580, 0x00000001105e4b18]

GC Heap History (0 events):
No events

Deoptimization events (0 events):
No events

Internal exceptions (10 events):
Event: 0.107 Thread 0x00007fb742001000 Threw 0x00000007eab68400 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jvm.cpp:1244
Event: 0.107 Thread 0x00007fb742001000 Threw 0x00000007eab68528 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jvm.cpp:1244
Event: 0.109 Thread 0x00007fb742001000 Threw 0x00000007eab691e8 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jni.cpp:717
Event: 0.109 Thread 0x00007fb742001000 Threw 0x00000007eab69308 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jvm.cpp:1244
Event: 0.109 Thread 0x00007fb742001000 Threw 0x00000007eab69430 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jvm.cpp:1244
Event: 0.112 Thread 0x00007fb742001000 Threw 0x00000007eab7beb0 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jni.cpp:717
Event: 0.112 Thread 0x00007fb742001000 Threw 0x00000007eab7bfd0 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jvm.cpp:1244
Event: 0.112 Thread 0x00007fb742001000 Threw 0x00000007eab7c0f8 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jvm.cpp:1244
Event: 0.112 Thread 0x00007fb742001000 Threw 0x00000007eab7c348 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jvm.cpp:1244
Event: 0.120 Thread 0x00007fb742001000 Threw 0x00000007eab84d40 at /HUDSON/workspace/7u-2-build-macosx-x86_64/jdk7u60/1081/hotspot/src/share/vm/prims/jvm.cpp:1244

Events (10 events):
Event: 0.122 loading class 0x0000000116268730
Event: 0.122 loading class 0x0000000116268730 done
Event: 0.122 loading class 0x000000011628bae0
Event: 0.122 loading class 0x000000011628bae0 done
Event: 0.123 loading class 0x000000011628e630
Event: 0.123 loading class 0x000000011628e730
Event: 0.123 loading class 0x000000011628e730 done
Event: 0.123 loading class 0x000000011628e630 done
Event: 0.261 loading class 0x000000011628e700
Event: 0.261 loading class 0x000000011628e700 done


Dynamic libraries:
0x0000000000481000 	/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
0x0000000000481000 	/System/Library/Frameworks/Security.framework/Versions/A/Security
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
0x0000000000481000 	/usr/lib/libz.1.dylib
0x0000000000481000 	/usr/lib/libSystem.B.dylib
0x0000000000481000 	/usr/lib/libobjc.A.dylib
0x0000000000481000 	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x0000000000481000 	/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x0000000000481000 	/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
0x0000000000481000 	/System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
0x0000000000481000 	/System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
0x0000000000481000 	/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
0x0000000000481000 	/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
0x0000000000481000 	/System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
0x0000000000481000 	/System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x0000000000481000 	/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
0x0000000000481000 	/usr/lib/libauto.dylib
0x0000000000481000 	/usr/lib/libicucore.A.dylib
0x0000000000481000 	/usr/lib/libxml2.2.dylib
0x0000000000481000 	/System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
0x0000000000481000 	/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
0x0000000000481000 	/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
0x0000000000481000 	/usr/lib/liblangid.dylib
0x0000000000481000 	/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
0x0000000000481000 	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x0000000000481000 	/usr/lib/libDiagnosticMessagesClient.dylib
0x0000000000481000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
0x0000000000481000 	/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
0x0000000000481000 	/System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
0x0000000000481000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
0x0000000000481000 	/System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
0x0000000000481000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
0x0000000000481000 	/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
0x0000000000481000 	/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
0x0000000000481000 	/System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
0x0000000000481000 	/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x0000000000481000 	/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x0000000000481000 	/usr/lib/libCRFSuite.dylib
0x0000000000481000 	/usr/lib/libc++.1.dylib
0x0000000000481000 	/usr/lib/libc++abi.dylib
0x0000000000481000 	/usr/lib/system/libcache.dylib
0x0000000000481000 	/usr/lib/system/libcommonCrypto.dylib
0x0000000000481000 	/usr/lib/system/libcompiler_rt.dylib
0x0000000000481000 	/usr/lib/system/libcopyfile.dylib
0x0000000000481000 	/usr/lib/system/libcorecrypto.dylib
0x0000000000481000 	/usr/lib/system/libdispatch.dylib
0x0000000000481000 	/usr/lib/system/libdyld.dylib
0x0000000000481000 	/usr/lib/system/libkeymgr.dylib
0x0000000000481000 	/usr/lib/system/liblaunch.dylib
0x0000000000481000 	/usr/lib/system/libmacho.dylib
0x0000000000481000 	/usr/lib/system/libquarantine.dylib
0x0000000000481000 	/usr/lib/system/libremovefile.dylib
0x0000000000481000 	/usr/lib/system/libsystem_asl.dylib
0x0000000000481000 	/usr/lib/system/libsystem_blocks.dylib
0x0000000000481000 	/usr/lib/system/libsystem_c.dylib
0x0000000000481000 	/usr/lib/system/libsystem_configuration.dylib
0x0000000000481000 	/usr/lib/system/libsystem_dnssd.dylib
0x0000000000481000 	/usr/lib/system/libsystem_info.dylib
0x0000000000481000 	/usr/lib/system/libsystem_kernel.dylib
0x0000000000481000 	/usr/lib/system/libsystem_m.dylib
0x0000000000481000 	/usr/lib/system/libsystem_malloc.dylib
0x0000000000481000 	/usr/lib/system/libsystem_network.dylib
0x0000000000481000 	/usr/lib/system/libsystem_notify.dylib
0x0000000000481000 	/usr/lib/system/libsystem_platform.dylib
0x0000000000481000 	/usr/lib/system/libsystem_pthread.dylib
0x0000000000481000 	/usr/lib/system/libsystem_sandbox.dylib
0x0000000000481000 	/usr/lib/system/libsystem_stats.dylib
0x0000000000481000 	/usr/lib/system/libunc.dylib
0x0000000000481000 	/usr/lib/system/libunwind.dylib
0x0000000000481000 	/usr/lib/system/libxpc.dylib
0x0000000000481000 	/usr/lib/libbsm.0.dylib
0x0000000000481000 	/usr/lib/libsqlite3.dylib
0x0000000000481000 	/usr/lib/libxar.1.dylib
0x0000000000481000 	/usr/lib/libpam.2.dylib
0x0000000000481000 	/usr/lib/libOpenScriptingUtil.dylib
0x0000000000481000 	/usr/lib/libbz2.1.0.dylib
0x0000000000481000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
0x0000000000481000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
0x0000000000481000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
0x0000000000481000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x0000000000481000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x0000000000481000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
0x0000000000481000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
0x0000000000481000 	/System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
0x0000000000481000 	/usr/lib/system/libkxld.dylib
0x0000000000481000 	/System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
0x0000000000481000 	/System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
0x0000000000481000 	/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
0x0000000000481000 	/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
0x0000000000481000 	/usr/lib/libxslt.1.dylib
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
0x0000000000481000 	/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
0x0000000000481000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
0x0000000000481000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
0x0000000000481000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
0x0000000000481000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
0x0000000000481000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
0x0000000000481000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
0x0000000000481000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
0x0000000000481000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
0x0000000000481000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
0x0000000000481000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
0x0000000000481000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
0x0000000000481000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
0x0000000000481000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
0x0000000000481000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
0x0000000000481000 	/usr/lib/libcups.2.dylib
0x0000000000481000 	/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
0x0000000000481000 	/System/Library/Frameworks/GSS.framework/Versions/A/GSS
0x0000000000481000 	/usr/lib/libresolv.9.dylib
0x0000000000481000 	/usr/lib/libiconv.2.dylib
0x0000000000481000 	/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
0x0000000000481000 	/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
0x0000000000481000 	/usr/lib/libheimdal-asn1.dylib
0x0000000000481000 	/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
0x0000000000481000 	/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
0x0000000000481000 	/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
0x0000000000481000 	/System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom
0x0000000000481000 	/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
0x0000000000481000 	/System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/CoreImage.framework/Versions/A/CoreImage
0x0000000000481000 	/System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/ScalableUserInterface.framework/Versions/A/ScalableUserInterface
0x0000000000481000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
0x0000000000481000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
0x0000000000481000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
0x0000000000481000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
0x0000000000481000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
0x0000000000481000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
0x0000000000481000 	/System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
0x0000000000481000 	/System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
0x0000000000481000 	/System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
0x0000000000481000 	/System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
0x0000000000481000 	/System/Library/PrivateFrameworks/Ubiquity.framework/Versions/A/Ubiquity
0x0000000000481000 	/System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
0x0000000000481000 	/System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
0x0000000000481000 	/System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
0x0000000000481000 	/System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
0x0000000000481000 	/System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
0x000000010fa00000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/server/libjvm.dylib
0x0000000000481000 	/usr/lib/libstdc++.6.dylib
0x000000010f137000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/libverify.dylib
0x000000010f144000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/libjava.dylib
0x000000010f17e000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre/lib/libzip.dylib
0x00000001177ff000 	/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/JavaRuntimeSupport
0x0000000117817000 	/System/Library/Frameworks/JavaVM.framework/Versions/A/Frameworks/JavaNativeFoundation.framework/Versions/A/JavaNativeFoundation
0x000000010f1ef000 	/System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
0x000000011782c000 	/System/Library/PrivateFrameworks/JavaLaunching.framework/Versions/A/JavaLaunching
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
0x0000000000481000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI

VM Arguments:
jvm_args: -XX:-UseLoopPredicate -Dfile.encoding=UTF-8 
java_command: test.TestLogSum
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=/usr/bin:/bin:/usr/sbin:/sbin
SHELL=/bin/bash
DISPLAY=/tmp/launch-XDqolO/org.macosforge.xquartz:0

Signal Handlers:
SIGSEGV: [libjvm.dylib+0x52b7b1], sa_mask[0]=0xfffefeff, sa_flags=0x00000043
SIGBUS: [libjvm.dylib+0x52b7b1], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGFPE: [libjvm.dylib+0x41e28a], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGPIPE: [libjvm.dylib+0x41e28a], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGXFSZ: [libjvm.dylib+0x41e28a], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGILL: [libjvm.dylib+0x41e28a], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000002
SIGUSR2: [libjvm.dylib+0x41dd7c], sa_mask[0]=0x00000004, sa_flags=0x00000042
SIGHUP: [libjvm.dylib+0x41c00b], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGINT: [libjvm.dylib+0x41c00b], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGTERM: [libjvm.dylib+0x41c00b], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
SIGQUIT: [libjvm.dylib+0x41c00b], sa_mask[0]=0xfffefeff, sa_flags=0x00000042


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

OS:Bsduname:Darwin 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64
rlimit: STACK 8192k, CORE 0k, NPROC 709, NOFILE 10240, AS infinity
load average:1.87 2.58 3.25

CPU:total 4 (2 cores per cpu, 2 threads per core) family 6 model 37 stepping 2, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, aes, ht, tsc, tscinvbit

Memory: 4k page, physical 4194304k(1048576k free)

/proc/meminfo:


vm_info: Java HotSpot(TM) 64-Bit Server VM (24.60-b09) for bsd-amd64 JRE (1.7.0_60-b19), built on May  7 2014 12:52:25 by "java_re" with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

time: Sun Jun  8 12:45:07 2014
elapsed time: 0 seconds

 

REPRODUCIBILITY :
This bug can be reproduced often.

---------- BEGIN SOURCE ----------
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestLogSum {
    public static void main(String[] args) {

        for (int i = 0; i < 6; i++) {
            for (int n = 2; n < 30; n++) {
                for (int j = 1; j <= n; j++) {
                    for (int k = 1; k <= j; k++) {
                        System.out.println(computeSum(k, j));                       
                    }
                }
            }
        }
    }

    private static Map<List<Integer>, Double> cache = new HashMap<List<Integer>, Double>();
    public static double computeSum(int x, int y) {     
        List<Integer> key = Arrays.asList(new Integer[] {x, y});

        if (!cache.containsKey(key)) {

            // explicitly creating/updating a double[] array, instead of using the LogSumArray wrapper object, will prevent the error
            LogSumArray toReturn = new LogSumArray(x);

            // changing loop indices will prevent the error
            // in particular, for(z=0; z<x-1; z++), and then using z+1 in place of z, will not produce error
//          for (int z = 0; z < x; z++) {
//              double logSummand = Math.log(1 + z + x + y);
            for (int z = 1; z < x+1; z++) {
                double logSummand = Math.log(z + x + y);
                toReturn.addLogSummand(logSummand);
            }

            // returning the value here without cacheing it will prevent the segfault
            cache.put(key, toReturn.retrieveLogSum());
        }
        return cache.get(key);
    }

    /*
     * Given a bunch of logarithms log(X),log(Y),log(Z),...
     * This class is used to compute the log of the sum, log(X+Y+Z+...)
     */
    private static class LogSumArray {      
        private double[] logSummandArray;
        private int currSize;

        private double maxLogSummand;

        public LogSumArray(int maxEntries) {
            this.logSummandArray = new double[maxEntries];

            this.currSize = 0;
            this.maxLogSummand = Double.NEGATIVE_INFINITY;
        }

        public void addLogSummand(double logSummand) {
            logSummandArray[currSize] = logSummand;
            currSize++;
            // removing this line will prevent the error
            maxLogSummand = Math.max(maxLogSummand, logSummand);
        }

        public double retrieveLogSum() {
            if (maxLogSummand == Double.NEGATIVE_INFINITY) return Double.NEGATIVE_INFINITY;

            assert currSize <= logSummandArray.length;

            double factorSum = 0;
            for (int i = 0; i < currSize; i++) {
                factorSum += Math.exp(logSummandArray[i] - maxLogSummand);
            }

            return Math.log(factorSum) + maxLogSummand;
        }
    }
}

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

CUSTOMER SUBMITTED WORKAROUND :
Rather than using an array to store all the log summands and then compute the logarithm of the sum in the most numerically stable way possible, I just store the sum and update it one number at a time (this is slightly less numerically stable).


Comments
Fix. Place loop invariant arithmetic on previous loop exit (don't place it inside following loop where it is used): src/share/vm/opto/loopopts.cpp Wed Jun 11 18:15:32 2014 -0700 @@ -2771,11 +2771,11 @@ // Hit! Refactor use to use the post-incremented tripcounter. // Compute a post-increment tripcounter. Node *opaq = new Opaque2Node( C, cle->incr() ); - register_new_node( opaq, u_ctrl ); + register_new_node(opaq, exit); Node *neg_stride = _igvn.intcon(-cle->stride_con()); set_ctrl(neg_stride, C->root()); Node *post = new AddINode( opaq, neg_stride); - register_new_node( post, u_ctrl ); + register_new_node(post, exit); _igvn.rehash_node_delayed(use); for (uint j = 1; j < use->req(); j++) { if (use->in(j) == phi)
12-06-2014

Reproduced with 8, 8u20, 9 with -XX:-TieredCompilation flag (it is on by default in 8 and 9).
11-06-2014

Verified that the reproducer crashed 100% with JDK 6 and JDK 7. However, in JDK 8 it didn't crash, so this seems to be fixed in later releases. Please re-open if this is seen in JDK 8
11-06-2014