RFR: 8268638: semaphores of AsyncLogWriter may be broken when JVM is exiting. [v4]
David Holmes
dholmes at openjdk.java.net
Tue Jun 15 06:31:43 UTC 2021
On Tue, 15 Jun 2021 06:19:15 GMT, Xin Liu <xliu at openjdk.org> wrote:
>> All 3 semaphores used by AsyncLogWriter are static member data. CRT(`libsystem_c.dylib __cxa_finalize_ranges`) deletes them on MacOS. Currently, AsyncLog Thread doesn't exit at all. As a result, semaphore_wait/signal
>> returns with KERN_INVALID_NAME(15) After those semaphore are destroyed.
>>
>> This patch change those to regular data members. This prevents from deleting.
>> This patch also provides a general RAII class AsyncLogLocker which is analogous MutexLocker.
>
> Xin Liu has updated the pull request incrementally with one additional commit since the last revision:
>
> Do not do sanity check for AsyncLogLocker
src/hotspot/share/logging/logAsyncWriter.cpp line 36:
> 34: public:
> 35: AsyncLogLocker(Semaphore* sem): _sem(sem) {
> 36: _sem->wait();
This class is not general purpose. It does not need to accept an arbitrary semaphore. There is only one semaphore this class works with and that is AsyncLogWriter::_instance->_lock, so it can just use it directly.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4479
More information about the hotspot-runtime-dev
mailing list