On Fri, 2 Sep 2022 20:33:37 GMT, David Holmes <dhol...@openjdk.org> wrote:

>> This is an MR which partially reverts JDK-8289091 such that 
>> JavaThread::threadObj() does not call Thread::current().
>> 
>> A JVMTI operation could call threadObj() and clear the Windows GetLastError 
>> value.
>> 
>> Partial, because I haven't reverted changes in JavaThread::print_on_error(), 
>> they aren't connected to the problems seen.
>
> src/hotspot/share/runtime/javaThread.cpp line 165:
> 
>> 163: oop JavaThread::threadObj() const {
>> 164:   // Using Thread::current_or_null_safe() here risks that calling 
>> threadObj() can
>> 165:   // overwrite a native thread local, e.g. JVMTI operations clearing 
>> GetLastError on Windows.
> 
> Suggestion:
> 
> // Ideally we would verify the current thread is oop_safe when this is 
> called, but as we can
> // be called from a signal handler we would have to use 
> Thread::current_or_null_safe(). That
> // has overhead and also interacts poorly with GetLastError on Windows due to 
> the use of TLS.
> // Instead callers must verify oop safe access.

Thanks David, will update comment and check Dan is OK with this.

-------------

PR: https://git.openjdk.org/jdk/pull/10147

Reply via email to