RFR: 8292989: Avoid dynamic memory in AsyncLogWriter [v8]

Thomas Stuefe stuefe at openjdk.org
Mon Sep 12 14:13:47 UTC 2022


On Mon, 12 Sep 2022 13:37:56 GMT, Xin Liu <xliu at openjdk.org> wrote:

>> src/hotspot/share/logging/logAsyncWriter.cpp line 52:
>> 
>>> 50: // Reserve space for a flush token, so 'push_flush_token' always succeeds.
>>> 51: AsyncLogWriter::Buffer::Buffer(size_t capacity) : _pos(0), _capacity(capacity) {
>>> 52:   _buf = NEW_C_HEAP_ARRAY(char, capacity, mtLogging);
>> 
>> I would give it a low minimal size. It needs to be at least token size, but small enough to serve as a good test for simulating buffer overflows. Maybe 2-3 x header size + ~64 bytes or so. E.g. 96 bytes?
>
> HotSpot has a constraint in VMOption. The minimal number is 50K here. 
> https://github.com/openjdk/jdk/blob/master/src/hotspot/share/runtime/globals.hpp#L1905
> 
> I added a unit test in test_asynclog.cpp. Like you said, I feel it's more flexible to write tests if we don't limit size here. 
> 
> If buffer capacity is smaller than a token, it will hit assertion in `Buffer::push_flush_token`.

At least add an assert then? Just to show "we know and did not forget" to the casual reader.

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

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


More information about the hotspot-runtime-dev mailing list