RFR(XS): 8079825: Uninitialised variable in hotspot/src/share/vm & cpu/x86/vm (runtime)

Calvin Cheung calvin.cheung at oracle.com
Thu Jul 16 17:09:51 UTC 2015


This is for fixing some warnings about uninitialized variables reported 
by our internal code analysis tool.

JBS: https://bugs.openjdk.java.net/browse/JDK-8079825
       (this is a confidential bug)

webrev: http://cr.openjdk.java.net/~ccheung/8079825/webrev.00/

[1] Uninitialised pointer localvariable_type_table_start may be used as 
argument
8 when calling ClassFileParser::copy_localvariable_table at line 2465 of
hotspot/src/share/vm/classfile/classFileParser.cpp in function
ClassFileParser::parse_method

Similar warning message for the other 3 local variables.

The fix in classFileParser.cpp is for initializing the following 
variables to NULL:
     localvariable_table_length,
     localvariable_table_start,
     localvariable_type_table_length,
     localvariable_type_table_start

They may not be defined if the execution path goes through the if block 
at line 2137:
         if (LoadLineNumberTables &&
             _cp->symbol_at(code_attribute_name_index) == 
vmSymbols::tag_line_number_table()) {
           // Parse and compress line number table
           parse_linenumber_table(code_attribute_length, code_length,
             &linenumber_table, CHECK_(nullHandle));

[2] Uninitialised pointer rf may be used as argument 1 when calling
RFrame::set_distance at line 96 of 
hotspot/src/share/vm/runtime/rframe.cpp in
function RFrame::new_RFrame

The fix in rframe.cpp is for initializing the rf to NULL.

It isn't being initialized if the execution path goes to the else block:
     } else {
       assert(false, "Unhandled frame type");
     }

the assert is only for debug build.

Testing:
    JPRT
   Aurora adhoc run including vm.quick on linux, windows (32- and 
64-bit), and solaris sparc and x64

Thanks in advance for your review.

Calvin



More information about the hotspot-runtime-dev mailing list