(XS) RFR: 8146222: assert(_initialized) failed: TLS not initialized yet!
Daniel D. Daugherty
daniel.daugherty at oracle.com
Fri Jan 8 14:47:31 UTC 2016
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