RFR: 8146632: Add descriptive error messages for removed non-product logging flags.

Max Ockner max.ockner at oracle.com
Wed Mar 16 17:40:50 UTC 2016


I have made this change. Thanks for your suggestion. I was hoping 
someone would comment on this.
webrev coming soon.
Max
On 3/16/2016 4:47 AM, Dmitry Dmitriev wrote:
> Hi Max,
>
> If develop flag exist in removed_develop_logging_flags then flag 
> search is performed second time. I think that 
> is_removed_develop_logging_flag and removed_develop_logging_flag_name 
> can be refactored. Actually, I think that we only need 
> removed_develop_logging_flag_name function and 
> is_removed_develop_logging_flag can be removed. E.g.:
>   const char* Arguments::removed_develop_logging_flag_name(const char* 
> name){
>     for (size_t i = 0; removed_develop_logging_flags[i].alias_name != 
> NULL; i++) {
>       const AliasedFlag& flag = removed_develop_logging_flags[i];
>       if (strcmp(flag.alias_name, name) == 0) {
>         return flag.real_name;
>       }
>     }
>     return NULL;
>   }
> ...
>    // Only make the obsolete check for valid arguments.
>    if (arg_len <= BUFLEN) {
>      // Construct a string which consists only of the argument name 
> without '+', '-', or '='.
>      char stripped_argname[BUFLEN+1];
>      strncpy(stripped_argname, argname, arg_len);
>      stripped_argname[arg_len] = '\0';  // strncpy may not null 
> terminate.
>      const char* replacement;
>
>      if (is_obsolete_flag(stripped_argname, &since)) {
>        char version[256];
>        since.to_string(version, sizeof(version));
>        warning("Ignoring option %s; support was removed in %s", 
> stripped_argname, version);
>        return true;
>      }
>  #ifndef PRODUCT
>      else if ((replacement = 
> removed_develop_logging_flag_name(stripped_argname)) != NULL){
>        jio_fprintf(defaultStream::error_stream(),
>                    "%s has been removed. Please use %s instead.\n", 
> stripped_argname, replacement);
>        return false;
>  #endif
>      }
>
> What you think about that?
>
> Thanks,
> Dmitry
>
> On 15.03.2016 20:45, Max Ockner wrote:
>> Hello again everyone!
>>
>> Please review this change which adds better error messages for 
>> non-product flags that are now converted to Unified Logging.
>>
>> bug: https://bugs.openjdk.java.net/browse/JDK-8146632
>> webrev: http://cr.openjdk.java.net/~mockner/8146632/
>>
>> Since these options have been removed, we want still want the vm to 
>> crash here, but now with an error message giving the correct command 
>> line option. The new message looks like this:
>>
>> > TraceClassInitialization has been removed. Please use 
>> -Xlog:classinit instead."
>>
>> The entire output looks like this:
>>
>> > TraceClassInitialization has been removed. Please use 
>> -Xlog:classinit instead.
>> > Error: Could not create the Java Virtual Machine.
>> > Error: A fatal exception has occurred. Program will exit.
>>
>> Tested with jtreg runtime tests. A new test checks for an appropriate 
>> error message for every develop flag that has so far been converted 
>> to logging.
>>
>> Thanks,
>> Max
>>
>>
>



More information about the hotspot-runtime-dev mailing list