RFR: 8207025: JvmtiEnv::SetSystemProperty() does not handle OOM [v3]

Serguei Spitsyn sspitsyn at openjdk.java.net
Tue Mar 29 05:43:52 UTC 2022


On Tue, 29 Mar 2022 04:24:15 GMT, Ioi Lam <iklam at openjdk.org> wrote:

>> `JvmtiEnv::SetSystemProperty` eventually calls `PathString::set_value` in arguments.cpp, which aborts the VM when it fails to allocate a string copy of the property value.
>> 
>> 
>> bool PathString::set_value(const char *value) {
>>   if (_value != NULL) {
>>     FreeHeap(_value);
>>   }
>>   _value = AllocateHeap(strlen(value)+1, mtArguments   );
>>   // should pass AllocFailStrategy::RETURN_NULL -----^
>>   assert(_value != NULL, "Unable to allocate space for new path value");
>> 
>> 
>> This should be fixed so that `JvmtiEnv::SetSystemProperty` can return `JVMTI_ERROR_OUT_OF_MEMORY` in case of OOM. See https://docs.oracle.com/en/java/javase/17/docs/specs/jvmti.html#SetSystemProperty
>
> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
> 
>   @dholmes-ora comments: simplify the changes

Hi Ioi,
The fix looks good to me. I leave the decision about is_readable/readable to you and David. I have a very little preference to is_* variant for consistency with other places in HopSpot I'm aware off.
Thank you a lot for taking care about this!
-Serguei

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

Marked as reviewed by sspitsyn (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/7981


More information about the serviceability-dev mailing list