JDK-8133249 : Occasional SIGSEGV: non thread-safe use of strerr in getLastErrorString
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.io
  • Affected Version: 8u51
  • Priority: P4
  • Status: Closed
  • Resolution: Fixed
  • OS: linux
  • CPU: x86
  • Submitted: 2015-08-06
  • Updated: 2016-06-13
  • Resolved: 2015-10-01
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 8 JDK 9
8u72Fixed 9 b85Fixed
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) Server VM (build 25.51-b03, mixed mode)

FULL OS VERSION :
Linux vm-obs-103 2.6.22.5-31-bigsmp #32 SMP Tue Feb 23 10:17:55 CET 2010 i686 i686 i386 GNU/Linux
openSUSE 10.3

EXTRA RELEVANT SYSTEM CONFIGURATION :
Reproducibility depend on glibc version.
For instance, I can't reproduce this with CentOS 6.4 but I can reproduce it in OpenSUSE 10.3 (glibc 2.6.1)

A DESCRIPTION OF THE PROBLEM :
This is a revised version of the bug-report in JI-9023129 with more information.

When an Exception is thrown because of some OS-error, like FileNotFoundException or SocketTimeoutException, an error message is constructed using getLastErrorString() which calls strerror(). strerr() is documented to be not thread-safe in the man pages. Concurrent modification of the returned static char* string by Exceptions throw in other Threads cause occasional segmentation faults, depending on the actual implementation of strerr() in glibc.

THE PROBLEM WAS REPRODUCIBLE WITH -Xint FLAG: Yes

THE PROBLEM WAS REPRODUCIBLE WITH -server FLAG: Yes

REGRESSION.  Last worked in version 6u45

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
while true; do jdk1.8.0_51/bin/java -server -cp . StrerrBug; done

It usually will take several minutes units a core s dumped.

EXPECTED VERSUS ACTUAL BEHAVIOR :
dumps core.
should not dump core.
ERROR MESSAGES/STACK TRACES THAT OCCUR :
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0xb7e77a08, pid=15824, tid=2246953872
#
# JRE version: Java(TM) SE Runtime Environment (8.0_51-b16) (build 1.8.0_51-b16)
# Java VM: Java HotSpot(TM) Server VM (25.51-b03 mixed mode linux-x86 )
# Problematic frame:
# C  [libc.so.6+0x6ca08]  strcmp+0x8
#
# 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.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

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

Current thread (0x081cec00):  JavaThread "Test 1" [_thread_in_native, id=15837, stack(0x85e8c000,0x85edd000)]

siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x00000021

Registers:
EAX=0x00000021, EBX=0xb7f39ff4, ECX=0x00000021, EDX=0xa7a0af08
ESP=0x85edb904, EBP=0x85edb998, ESI=0x00000001, EDI=0x00000002
EIP=0xb7e77a08, EFLAGS=0x00010202, CR2=0x00000021

Top of Stack: (sp=0x85edb904)
0x85edb904:   b7e2f0e5 00000021 a7a0af08 081d92d8
0x85edb914:   02a5b229 0000027b 85edbbe0 8662f7e8
0x85edb924:   b7e31d0b b7f39ff4 b7f1e139 00000000
0x85edb934:   081dcf78 081dd060 85dff000 b7f1de61
0x85edb944:   00000012 000004e9 0000024c 85e15e33
0x85edb954:   00000026 00000019 00000422 a7a0af08
0x85edb964:   081d790c b7f3ac20 00000000 85e03eac
0x85edb974:   081d9228 8662f7e8 9d18e4d0 85edbcd0 

Instructions: (pc=0xb7e77a08)
0xb7e779e8:   40 c1 e9 10 84 c9 74 05 38 d1 74 d6 40 5f c3 90
0xb7e779f8:   90 90 90 90 90 90 90 90 8b 4c 24 04 8b 54 24 08
0xb7e77a08:   8a 01 3a 02 75 09 41 42 84 c0 75 f4 31 c0 c3 b8
0xb7e77a18:   01 00 00 00 b9 ff ff ff ff 0f 42 c1 c3 90 90 90 

Register to memory mapping:

EAX=0x00000021 is an unknown value
EBX=0xb7f39ff4: <offset 0x12eff4> in /lib/libc.so.6 at 0xb7e0b000
ECX=0x00000021 is an unknown value
EDX=0xa7a0af08 is an unknown value
ESP=0x85edb904 is pointing into the stack for thread: 0x081cec00
EBP=0x85edb998 is pointing into the stack for thread: 0x081cec00
ESI=0x00000001 is an unknown value
EDI=0x00000002 is an unknown value


Stack: [0x85e8c000,0x85edd000],  sp=0x85edb904,  free space=318k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libc.so.6+0x6ca08]  strcmp+0x8
C  [libc.so.6+0x24c54]
C  [libc.so.6+0x23b23]  dcgettext+0x43
C  [libc.so.6+0x6cf29]  __strerror_r+0x109
C  [libc.so.6+0x6cd85]  strerror+0x35
C  [libjava.so+0x16b68]  getLastErrorString+0x48
C  [libjava.so+0x16366]  throwFileNotFoundException+0x36
C  [libjava.so+0x17267]  fileOpen+0x117
C  [libjava.so+0xce1f]  Java_java_io_FileInputStream_open0+0x3f
j  java.io.FileInputStream.open0(Ljava/lang/String;)V+0
j  java.io.FileInputStream.open(Ljava/lang/String;)V+2
j  java.io.FileInputStream.<init>(Ljava/io/File;)V+106
j  java.io.FileInputStream.<init>(Ljava/lang/String;)V+17
j  StrerrBug$1.run()V+50
v  ~StubRoutines::call_stub
V  [libjvm.so+0x4f285f]  JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x101f
V  [libjvm.so+0x741849]  os::os_exception_wrapper(void (*)(JavaValue*, methodHandle*, JavaCallArguments*, Thread*), JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x19
V  [libjvm.so+0x4f2c72]  JavaCalls::call_virtual(JavaValue*, KlassHandle, Symbol*, Symbol*, JavaCallArguments*, Thread*)+0x262
V  [libjvm.so+0x4f30ab]  JavaCalls::call_virtual(JavaValue*, Handle, KlassHandle, Symbol*, Symbol*, Thread*)+0x4b
V  [libjvm.so+0x585120]  thread_entry(JavaThread*, Thread*)+0x90
V  [libjvm.so+0x876569]  JavaThread::thread_main_inner()+0x109
V  [libjvm.so+0x8766eb]  JavaThread::run()+0x14b
V  [libjvm.so+0x749269]  java_start(Thread*)+0x119
C  [libpthread.so.0+0x5192]  start_thread+0xd2
C  [libc.so.6+0xc302e]  clone+0x5e

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  java.io.FileInputStream.open0(Ljava/lang/String;)V+0
j  java.io.FileInputStream.open(Ljava/lang/String;)V+2
j  java.io.FileInputStream.<init>(Ljava/io/File;)V+106
j  java.io.FileInputStream.<init>(Ljava/lang/String;)V+17
j  StrerrBug$1.run()V+50
v  ~StubRoutines::call_stub

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

Java Threads: ( => current thread )
  0x081d9400 JavaThread "Test 3" [_thread_blocked, id=15839, stack(0x85d53000,0x85da4000)]
  0x081d8000 JavaThread "Test 2" [_thread_blocked, id=15838, stack(0x85da4000,0x85df5000)]
=>0x081cec00 JavaThread "Test 1" [_thread_in_native, id=15837, stack(0x85e8c000,0x85edd000)]
  0x081cdc00 JavaThread "Test 0" [_thread_in_native, id=15836, stack(0x85edd000,0x85f2e000)]
  0x081c6c00 JavaThread "Service Thread" daemon [_thread_blocked, id=15834, stack(0x85faf000,0x86000000)]
  0x08181800 JavaThread "C1 CompilerThread1" daemon [_thread_blocked, id=15833, stack(0x86134000,0x861b5000)]
  0x0817b400 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=15832, stack(0x861b5000,0x86236000)]
  0x08179c00 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=15831, stack(0x86236000,0x86287000)]
  0x08157800 JavaThread "Finalizer" daemon [_thread_blocked, id=15830, stack(0x86287000,0x862d8000)]
  0x08156000 JavaThread "Reference Handler" daemon [_thread_blocked, id=15829, stack(0x862d8000,0x86329000)]
  0x08050c00 JavaThread "main" [_thread_in_vm, id=15825, stack(0xb6f8f000,0xb6fe0000)]

Other Threads:
  0x08152c00 VMThread [stack: 0x86329000,0x863aa000] [id=15828]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event])
[0x0804f9f0] Threads_lock - owner thread: 0x08050c00

Heap:
 PSYoungGen      total 9472K, used 1311K [0x9d0c0000, 0x9db40000, 0xa7a00000)
  eden space 8192K, 16% used [0x9d0c0000,0x9d207d20,0x9d8c0000)
  from space 1280K, 0% used [0x9da00000,0x9da00000,0x9db40000)
  to   space 1280K, 0% used [0x9d8c0000,0x9d8c0000,0x9da00000)
 ParOldGen       total 22016K, used 0K [0x87e00000, 0x89380000, 0x9d0c0000)
  object space 22016K, 0% used [0x87e00000,0x87e00000,0x89380000)
 Metaspace       used 1810K, capacity 2204K, committed 2328K, reserved 4400K

Card table byte_map: [0xa7a53000,0xa7b52000] byte_map_base: 0xa7614000

Marking Bits: (ParMarkBitMap*) 0xb79f56e0
 Begin Bits: [0x86c74000, 0x87464000)
 End Bits:   [0x87464000, 0x87c54000)

Polling page: 0xb7f80000

CodeCache: size=245760Kb used=678Kb max_used=678Kb free=245081Kb
 bounds [0xa7f12000, 0xa8152000, 0xb6f12000]
 total_blobs=173 nmethods=16 adapters=73
 compilation: enabled

Compilation events (10 events):
Event: 0,059 Thread 0x08181800   12       1       java.lang.ref.Reference::get (5 bytes)
Event: 0,059 Thread 0x08181800 nmethod 12 0xa7fb9808 code [0xa7fb9900, 0xa7fb99a0]
Event: 0,061 Thread 0x08181800   13       3       java.util.Arrays::copyOfRange (63 bytes)
Event: 0,061 Thread 0x08181800 nmethod 13 0xa7fb9a08 code [0xa7fb9c00, 0xa7fba4c8]
Event: 0,064 Thread 0x08181800   14       1       java.lang.ThreadLocal::access$400 (5 bytes)
Event: 0,064 Thread 0x08181800 nmethod 14 0xa7fbac48 code [0xa7fbad40, 0xa7fbadc0]
Event: 0,065 Thread 0x08181800   15       3       java.lang.String::getChars (62 bytes)
Event: 0,065 Thread 0x08181800 nmethod 15 0xa7fbae48 code [0xa7fbafa0, 0xa7fbb2b0]
Event: 0,070 Thread 0x08181800   16       3       java.lang.System::getSecurityManager (4 bytes)
Event: 0,070 Thread 0x08181800 nmethod 16 0xa7fbb4c8 code [0xa7fbb5e0, 0xa7fbb6a0]

GC Heap History (0 events):
No events

Deoptimization events (0 events):
No events

Internal exceptions (7 events):
Event: 0,031 Thread 0x08050c00 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; name or signature does not match> (0x9d0d0418) thrown at [/HUDSON3/workspace/8-2-build-linux-i586/jdk8u51/3951/hotspot/src/share/vm/pri
Event: 0,031 Thread 0x08050c00 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.prefetchRead(Ljava/lang/Object;J)V name or signature does not match> (0x9d0d0698) thrown at [/HUDSON3/workspace/8-2-build-linux-i586/jdk8u51/3951/hotspot/src/share/vm/prims/jni.cpp, line 3
Event: 0,070 Thread 0x081d9400 Exception <a 'java/io/FileNotFoundException'> (0x9d1df070) thrown at [/HUDSON3/workspace/8-2-build-linux-i586/jdk8u51/3951/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 0,071 Thread 0x081d9400 Exception <a 'java/io/FileNotFoundException'> (0x9d1df9b8) thrown at [/HUDSON3/workspace/8-2-build-linux-i586/jdk8u51/3951/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 0,071 Thread 0x081cec00 Exception <a 'java/io/FileNotFoundException'> (0x9d18d258) thrown at [/HUDSON3/workspace/8-2-build-linux-i586/jdk8u51/3951/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 0,071 Thread 0x081cec00 Exception <a 'java/io/FileNotFoundException'> (0x9d18d848) thrown at [/HUDSON3/workspace/8-2-build-linux-i586/jdk8u51/3951/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 0,071 Thread 0x081cec00 Exception <a 'java/io/FileNotFoundException'> (0x9d18de38) thrown at [/HUDSON3/workspace/8-2-build-linux-i586/jdk8u51/3951/hotspot/src/share/vm/prims/jni.cpp, line 709]

Events (10 events):
Event: 0,069 Thread 0x081d8000 Thread added: 0x081d8000
Event: 0,070 Thread 0x081d9400 Thread added: 0x081d9400
Event: 0,070 loading class java/lang/Shutdown
Event: 0,070 loading class java/lang/Shutdown done
Event: 0,070 loading class java/lang/Shutdown$Lock
Event: 0,070 loading class java/lang/Shutdown$Lock done
Event: 0,070 loading class java/io/FileNotFoundException
Event: 0,070 loading class java/io/IOException
Event: 0,070 loading class java/io/IOException done
Event: 0,070 loading class java/io/FileNotFoundException done


Dynamic libraries:
08048000-08049000 r-xp 00000000 08:03 2665393    /home/pttest/jdk1.8.0_51/bin/java
08049000-0804a000 rw-p 00000000 08:03 2665393    /home/pttest/jdk1.8.0_51/bin/java
0804a000-08229000 rw-p 0804a000 00:00 0          [heap]
85aa7000-85cf7000 rw-p 85aa7000 00:00 0 
85cf7000-85cf9000 r-xp 00000000 08:03 1752720    /usr/lib/gconv/ISO8859-15.so
85cf9000-85cfb000 rw-p 00001000 08:03 1752720    /usr/lib/gconv/ISO8859-15.so
85cfb000-85d02000 r--s 00000000 08:03 1752768    /usr/lib/gconv/gconv-modules.cache
85d02000-85d53000 rw-p 85d02000 00:00 0 
85d53000-85d56000 ---p 85d53000 00:00 0 
85d56000-85da4000 rw-p 85d56000 00:00 0 
85da4000-85da7000 ---p 85da4000 00:00 0 
85da7000-85df5000 rw-p 85da7000 00:00 0 
85df5000-85dfd000 r-xp 00000000 08:03 2191198    /lib/libnss_files-2.6.1.so
85dfd000-85dff000 rw-p 00007000 08:03 2191198    /lib/libnss_files-2.6.1.so
85dff000-85e1e000 r--p 00000000 08:03 1639192    /usr/share/locale/de/LC_MESSAGES/libc.mo
85e1e000-85e53000 r--s 00000000 08:03 264633     /var/run/nscd/dbwKFSI7 (deleted)
85e53000-85e8c000 rw-p 85e53000 00:00 0 
85e8c000-85e8f000 ---p 85e8c000 00:00 0 
85e8f000-85edd000 rw-p 85e8f000 00:00 0 
85edd000-85ee0000 ---p 85edd000 00:00 0 
85ee0000-85f2e000 rw-p 85ee0000 00:00 0 
85f2e000-85f2f000 ---p 85f2e000 00:00 0 
85f2f000-85faf000 rw-p 85f2f000 00:00 0 
85faf000-85fb2000 ---p 85faf000 00:00 0 
85fb2000-86021000 rw-p 85fb2000 00:00 0 
86021000-86100000 ---p 86021000 00:00 0 
86105000-86114000 r-xp 00000000 08:03 2191209    /lib/libresolv-2.6.1.so
86114000-86116000 rw-p 0000e000 08:03 2191209    /lib/libresolv-2.6.1.so
86116000-86118000 rw-p 86116000 00:00 0 
86118000-8611c000 r-xp 00000000 08:03 2191196    /lib/libnss_dns-2.6.1.so
8611c000-8611e000 rw-p 00003000 08:03 2191196    /lib/libnss_dns-2.6.1.so
8611e000-86133000 r-xp 00000000 08:03 474498     /home/pttest/jdk1.8.0_51/jre/lib/i386/libnet.so
86133000-86134000 rw-p 00014000 08:03 474498     /home/pttest/jdk1.8.0_51/jre/lib/i386/libnet.so
86134000-86137000 ---p 86134000 00:00 0 
86137000-861b5000 rw-p 86137000 00:00 0 
861b5000-861b8000 ---p 861b5000 00:00 0 
861b8000-86236000 rw-p 861b8000 00:00 0 
86236000-86239000 ---p 86236000 00:00 0 
86239000-86287000 rw-p 86239000 00:00 0 
86287000-8628a000 ---p 86287000 00:00 0 
8628a000-862d8000 rw-p 8628a000 00:00 0 
862d8000-862db000 ---p 862d8000 00:00 0 
862db000-86329000 rw-p 862db000 00:00 0 
86329000-8632a000 ---p 86329000 00:00 0 
8632a000-863f9000 rw-p 8632a000 00:00 0 
863f9000-865d1000 r--s 03d0c000 08:03 279407     /home/pttest/jdk1.8.0_51/jre/lib/rt.jar
865d1000-86872000 rw-p 865d1000 00:00 0 
86872000-86a78000 ---p 86872000 00:00 0 
86a78000-87c54000 rw-p 86a78000 00:00 0 
87c54000-87c55000 ---p 87c54000 00:00 0 
87c55000-87cd5000 rw-p 87c55000 00:00 0 
87cd5000-87cd6000 ---p 87cd5000 00:00 0 
87cd6000-87d61000 rw-p 87cd6000 00:00 0 
87d61000-87e00000 ---p 87d61000 00:00 0 
87e00000-89380000 rw-p 87e00000 00:00 0 
89380000-9d0c0000 ---p 89380000 00:00 0 
9d0c0000-9db40000 rw-p 9d0c0000 00:00 0 
9db40000-a7a00000 ---p 9db40000 00:00 0 
a7a02000-a7a05000 rw-p a7a02000 00:00 0 
a7a05000-a7a07000 r-xp 00000000 08:03 2191388    /lib/libnss_mdns4_minimal.so.2
a7a07000-a7a09000 rw-p 00001000 08:03 2191388    /lib/libnss_mdns4_minimal.so.2
a7a09000-a7a3f000 r--p 00000000 08:03 1753994    /usr/lib/locale/de_DE@euro/LC_CTYPE
a7a3f000-a7a40000 r--p 00000000 08:03 1753988    /usr/lib/locale/de_DE@euro/LC_NUMERIC
a7a40000-a7a41000 r--p 00000000 08:03 1753312    /usr/lib/locale/de_DE@euro/LC_TIME
a7a41000-a7a47000 r--p 00000000 08:03 1767674    /usr/lib/locale/de_DE@euro/LC_COLLATE
a7a47000-a7a5e000 rw-p a7a47000 00:00 0 
a7a5e000-a7afc000 ---p a7a5e000 00:00 0 
a7afc000-a7b02000 rw-p a7afc000 00:00 0 
a7b02000-a7b51000 ---p a7b02000 00:00 0 
a7b51000-a7b5b000 rw-p a7b51000 00:00 0 
a7b5b000-a7f12000 ---p a7b5b000 00:00 0 
a7f12000-a8152000 rwxp a7f12000 00:00 0 
a8152000-b6f12000 ---p a8152000 00:00 0 
b6f12000-b6f2b000 r-xp 00000000 08:03 474519     /home/pttest/jdk1.8.0_51/jre/lib/i386/libzip.so
b6f2b000-b6f2c000 rw-p 00018000 08:03 474519     /home/pttest/jdk1.8.0_51/jre/lib/i386/libzip.so
b6f2c000-b6f61000 r--s 00000000 08:03 264492     /var/run/nscd/passwd
b6f61000-b6f85000 r-xp 00000000 08:03 474492     /home/pttest/jdk1.8.0_51/jre/lib/i386/libjava.so
b6f85000-b6f86000 rw-p 00023000 08:03 474492     /home/pttest/jdk1.8.0_51/jre/lib/i386/libjava.so
b6f86000-b6f8d000 r-xp 00000000 08:03 2191211    /lib/librt-2.6.1.so
b6f8d000-b6f8f000 rw-p 00006000 08:03 2191211    /lib/librt-2.6.1.so
b6f8f000-b6f92000 ---p b6f8f000 00:00 0 
b6f92000-b6fe0000 rw-p b6f92000 00:00 0 
b6fe0000-b7003000 r-xp 00000000 08:03 2191189    /lib/libm-2.6.1.so
b7003000-b7005000 rw-p 00022000 08:03 2191189    /lib/libm-2.6.1.so
b7005000-b7978000 r-xp 00000000 08:03 490784     /home/pttest/jdk1.8.0_51/jre/lib/i386/server/libjvm.so
b7978000-b79e4000 rw-p 00973000 08:03 490784     /home/pttest/jdk1.8.0_51/jre/lib/i386/server/libjvm.so
b79e4000-b7e0b000 rw-p b79e4000 00:00 0 
b7e0b000-b7f38000 r-xp 00000000 08:03 2191181    /lib/libc-2.6.1.so
b7f38000-b7f39000 r--p 0012c000 08:03 2191181    /lib/libc-2.6.1.so
b7f39000-b7f3b000 rw-p 0012d000 08:03 2191181    /lib/libc-2.6.1.so
b7f3b000-b7f3e000 rw-p b7f3b000 00:00 0 
b7f3e000-b7f40000 r-xp 00000000 08:03 2191187    /lib/libdl-2.6.1.so
b7f40000-b7f42000 rw-p 00001000 08:03 2191187    /lib/libdl-2.6.1.so
b7f42000-b7f56000 r-xp 00000000 08:03 98223      /home/pttest/jdk1.8.0_51/lib/i386/jli/libjli.so
b7f56000-b7f57000 rw-p 00014000 08:03 98223      /home/pttest/jdk1.8.0_51/lib/i386/jli/libjli.so
b7f57000-b7f6a000 r-xp 00000000 08:03 2191207    /lib/libpthread-2.6.1.so
b7f6a000-b7f6c000 rw-p 00013000 08:03 2191207    /lib/libpthread-2.6.1.so
b7f6c000-b7f6f000 rw-p b7f6c000 00:00 0 
b7f6f000-b7f70000 r--p 00000000 08:03 1767620    /usr/lib/locale/de_DE@euro/LC_MONETARY
b7f70000-b7f71000 r--p 00000000 08:03 1767636    /usr/lib/locale/de_DE@euro/LC_MESSAGES/SYS_LC_MESSAGES
b7f71000-b7f72000 r--p 00000000 08:03 1767697    /usr/lib/locale/de_DE@euro/LC_PAPER
b7f72000-b7f73000 r--p 00000000 08:03 1753310    /usr/lib/locale/de_DE@euro/LC_NAME
b7f73000-b7f74000 r--p 00000000 08:03 1753307    /usr/lib/locale/de_DE@euro/LC_ADDRESS
b7f74000-b7f75000 r--p 00000000 08:03 1753311    /usr/lib/locale/de_DE@euro/LC_TELEPHONE
b7f75000-b7f76000 r--p 00000000 08:03 1767702    /usr/lib/locale/de_DE@euro/LC_MEASUREMENT
b7f76000-b7f77000 r--p 00000000 08:03 1753308    /usr/lib/locale/de_DE@euro/LC_IDENTIFICATION
b7f77000-b7f7f000 rw-s 00000000 08:03 376308     /tmp/hsperfdata_pttest/15824
b7f7f000-b7f80000 rw-p b7f7f000 00:00 0 
b7f80000-b7f81000 r--p b7f80000 00:00 0 
b7f81000-b7f8c000 r-xp 00000000 08:03 474550     /home/pttest/jdk1.8.0_51/jre/lib/i386/libverify.so
b7f8c000-b7f8d000 rw-p 0000b000 08:03 474550     /home/pttest/jdk1.8.0_51/jre/lib/i386/libverify.so
b7f8d000-b7f8e000 rw-p b7f8d000 00:00 0 
b7f8e000-b7fa8000 r-xp 00000000 08:03 2191174    /lib/ld-2.6.1.so
b7fa8000-b7faa000 rw-p 0001a000 08:03 2191174    /lib/ld-2.6.1.so
bfaa5000-bfaa6000 rwxp bfaa5000 00:00 0 
bfae3000-bfaf9000 rw-p bfae3000 00:00 0          [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]

VM Arguments:
java_command: StrerrBug
java_class_path (initial): .
Launcher Type: SUN_STANDARD

Environment Variables:
JRE_HOME=/usr/lib/jvm/jre
PATH=/bin:/usr/bin
LD_LIBRARY_PATH=/home/pttest/jdk1.8.0_51/jre/lib/i386/server:/home/pttest/jdk1.8.0_51/jre/lib/i386:/home/pttest/jdk1.8.0_51/jre/../lib/i386::/usr/lib/jvm/jdk1.8.0_45/jre/lib/i386:/usr/lib/jvm/jdk1.8.0_45/jre/lib/i386/client
SHELL=/bin/bash
HOSTTYPE=i386
OSTYPE=linux
MACHTYPE=i686-suse-linux

Signal Handlers:
SIGSEGV: [libjvm.so+0x8c2ce0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGBUS: [libjvm.so+0x8c2ce0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGFPE: [libjvm.so+0x7434f0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGPIPE: [libjvm.so+0x7434f0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGXFSZ: [libjvm.so+0x7434f0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: [libjvm.so+0x7434f0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR2: [libjvm.so+0x744a80], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: [libjvm.so+0x745f30], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGINT: [libjvm.so+0x745f30], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGTERM: [libjvm.so+0x745f30], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
SIGQUIT: [libjvm.so+0x745f30], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO


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

OS:LSB_VERSION="core-2.0-noarch:core-3.0-noarch:core-2.0-ia32:core-3.0-ia32"

uname:Linux 2.6.22.5-31-bigsmp #32 SMP Tue Feb 23 10:17:55 CET 2010 i686
libc:glibc 2.6.1 NPTL 2.6.1 
rlimit: STACK 8192k, CORE 0k, NPROC 16384, NOFILE 8192, AS 2502640k
load average:0,44 0,27 0,24

/proc/meminfo:
MemTotal:      2076016 kB
MemFree:         78476 kB
Buffers:         21744 kB
Cached:        1641812 kB
SwapCached:      58224 kB
Active:        1651260 kB
Inactive:       271464 kB
HighTotal:     1179584 kB
HighFree:        13908 kB
LowTotal:       896432 kB
LowFree:         64568 kB
SwapTotal:     1052248 kB
SwapFree:       876480 kB
Dirty:            1424 kB
Writeback:           0 kB
AnonPages:      238384 kB
Mapped:        1112260 kB
Slab:            50752 kB
SReclaimable:    35544 kB
SUnreclaim:      15208 kB
PageTables:       6040 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   2090256 kB
Committed_AS:   753032 kB
VmallocTotal:   112632 kB
VmallocUsed:      5224 kB
VmallocChunk:   107288 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB


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

/proc/cpuinfo:
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Xeon(R) CPU E3-1270 V2 @ 3.50GHz
stepping	: 9
cpu MHz		: 3491.386
cache size	: 8192 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht nx rdtscp lm constant_tsc pni ssse3 cx16 popcnt lahf_lm
bogomips	: 6988.36
clflush size	: 64

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Xeon(R) CPU E3-1270 V2 @ 3.50GHz
stepping	: 9
cpu MHz		: 3491.386
cache size	: 8192 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht nx rdtscp lm constant_tsc pni ssse3 cx16 popcnt lahf_lm
bogomips	: 6984.61
clflush size	: 64



Memory: 4k page, physical 2076016k(78476k free), swap 1052248k(876480k free)

vm_info: Java HotSpot(TM) Server VM (25.51-b03) for linux-x86 JRE (1.8.0_51-b16), built on Jun  8 2015 18:05:11 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)

time: Thu Aug  6 17:45:22 2015
elapsed time: 0 seconds (0d 0h 0m 0s)



REPRODUCIBILITY :
This bug can be reproduced occasionally.

---------- BEGIN SOURCE ----------
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;

public class StrerrBug {
  
  public static void main(String[] args) { 
    for (int i = 0; i < 5; i++) {
      new Thread("Test " + i) {
        @Override
        public void run() {
          for (int c = 0; ; c++) {
            try {
              //XXX synchronized (getClass()) {    // this prevents the bug from showing up
              switch (((int)(Math.random() * 1000000)) % 4) {
              case 0:
                new FileInputStream("/tmp/hbfjkhsdbfjsadjhfbdsja");
                break;
              case 1:
                new FileOutputStream("/jglkdsjgldjlkg");
                break;
              case 2:
                Socket sock = new Socket();
                sock.connect(new InetSocketAddress("www.google.de", 3000), 1);
                break;
              case 3:
                System.exit(1);;
              }
              //XXX }
            } catch (Exception e) {
              System.out.println(getName() + ": " + e.getClass().getName());
            }
          }
        }
      }.start();
    }
  }
}

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


Comments
It may be that we should be using strerror_r instead of strerror in a number of places.
27-08-2015

Moved: Core-libs issue not hotspot
10-08-2015

Moving across JDK for further investigation by dev team.
10-08-2015