(XS) RFR: 8146222: assert(_initialized) failed: TLS not initialized yet!

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Tue Jan 12 22:25:44 UTC 2016


David,

It looks good.

Thanks,
Serguei


On 1/8/16 06:47, Daniel D. Daugherty wrote:
> On 1/7/16 9:01 PM, David Holmes wrote:
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8146222
>>
>> webrev: http://cr.openjdk.java.net/~dholmes/8146222/webrev/
>
> src/share/vm/runtime/thread.cpp
>     No comments.
>
> Thumbs up.
>
> Dan
>
>
>>
>> JDK-8144947 showed an error path, on Windows, where we can call 
>> Thread::current_or_null before TLS has been initialized and so hit 
>> the assertion failure - see bug report for details.
>>
>> Simple fix is to move the ThreadLocalStorage::init() prior to any 
>> argument parsing code. As it contains simple OS library calls it can 
>> be initialized very early. Even the asserts in it still work 
>> (somewhat surprisingly) after the move.
>>
>> Failure mode of 
>> com/sun/management/HotSpotDiagnosticMXBean/CheckOrigin.java before 
>> the fix:
>>
>> Agent[1].stdout: ## nof_mallocs = 674, nof_frees = 38
>> Agent[1].stdout: ## memory stomp:
>> Agent[1].stdout: GuardedMemory(0x0000000000fbf690) 
>> base_addr=0x0000000000fbf3f0 tag=0x00000000000da360 
>> user_size=16512112 user_data=0x0000000000fbf410
>> Agent[1].stdout: Header guard @0x0000000000fbf3f0 is BROKEN
>> Agent[1].stdout: # To suppress the following error report, specify 
>> this argument
>> Agent[1].stdout: # after -XX: or in .hotspotrc: 
>> SuppressErrorAt=\threadLocalStorage_windows.cpp:52
>> Agent[1].stdout: #
>> Agent[1].stdout: # A fatal error has been detected by the Java 
>> Runtime Environment:
>> Agent[1].stdout: #
>> Agent[1].stdout: # Internal Error 
>> (C:\jprt\T\P1\020042.daholme\s\hotspot\src\os\windows\vm\threadLocalStorage_windows.cpp:52), 
>> pid=5076, tid=4348
>> Agent[1].stdout: # assert(_initialized) failed: TLS not initialized yet!
>>
>> Failure mode after:
>>
>> Agent[1].stdout: ## nof_mallocs = 601, nof_frees = 36
>> Agent[1].stdout: ## memory stomp:
>> Agent[1].stdout: GuardedMemory(0x00f1fc44) base_addr=0x00f1fb40 
>> tag=0x003a9bc0 user_size=1942466404 user_data=0x00f1fb58
>> Agent[1].stdout: Header guard @0x00f1fb40 is BROKEN
>> Agent[1].stdout: #
>> Agent[1].stdout: # A fatal error has been detected by the Java 
>> Runtime Environment:
>> Agent[1].stdout: #
>> Agent[1].stdout: # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at 
>> pc=0x73bb8ab6, pid=10328, tid=7672
>>
>> Testing:
>>   - JPRT
>>   - com/sun/management/HotSpotDiagnosticMXBean/CheckOrigin.java
>>   - testing that the asserts in the relocated init() method fire 
>> correctly
>>
>> Thanks,
>> David
>



More information about the hotspot-runtime-dev mailing list