< prev index next >

src/hotspot/os/aix/porting_aix.cpp

Print this page
rev 51015 : 8207342: error occurred during error reporting (printing register info)
Summary: os::print_location misses a check if the pointer is readable.
Reviewed-by:

@@ -140,11 +140,11 @@
 
   // .. (Note that is_readable_pointer returns true if safefetch stubs are not there yet;
   // in that case I try reading the traceback table unsafe - I rather risk secondary crashes in
   // error files than not having a callstack.)
 #define CHECK_POINTER_READABLE(p) \
-  if (!MiscUtils::is_readable_pointer(p)) { \
+  if (!os::is_readable_pointer(p)) { \
     trcVerbose("pc not readable"); \
     return false; \
   }
 
   codeptr_t pc2 = (codeptr_t) pc;

@@ -228,11 +228,11 @@
     if (tb->tb.name_present) {
       // Copy name from text because it may not be zero terminated.
       const short l = MIN2<short>(*((short*)pc2), namelen - 1);
       // Be very careful.
       int i = 0; char* const p = (char*)pc2 + sizeof(short);
-      while (i < l && MiscUtils::is_readable_pointer(p + i)) {
+      while (i < l && os::is_readable_pointer(p + i)) {
         p_name[i] = p[i];
         i++;
       }
       p_name[i] = '\0';
 

@@ -487,11 +487,11 @@
 static void print_info_for_pc (outputStream* st, codeptr_t pc, char* buf,
                                size_t buf_size, bool demangle) {
   const struct tbtable* tb = NULL;
   int displacement = -1;
 
-  if (!MiscUtils::is_readable_pointer(pc)) {
+  if (!os::is_readable_pointer(pc)) {
     st->print("(invalid)");
     return;
   }
 
   if (AixSymbols::get_module_name((address)pc, buf, buf_size)) {

@@ -695,11 +695,11 @@
   st->print_cr("------ current frame:");
   st->print("iar:  " PTR64_FORMAT " ", p2i(cur_iar));
   print_info_for_pc(st, cur_iar, buf, buf_size, demangle);
   st->cr();
 
-  if (cur_iar && MiscUtils::is_readable_pointer(cur_iar)) {
+  if (cur_iar && os::is_readable_pointer(cur_iar)) {
     decode_instructions_at_pc(
       "Decoded instructions at iar:",
       cur_iar, 32, 16, st);
   }
 

@@ -708,11 +708,11 @@
   // preserved via lr register.
   st->print("lr:   " PTR64_FORMAT " ", p2i(cur_lr));
   print_info_for_pc(st, cur_lr, buf, buf_size, demangle);
   st->cr();
 
-  if (cur_lr && MiscUtils::is_readable_pointer(cur_lr)) {
+  if (cur_lr && os::is_readable_pointer(cur_lr)) {
     decode_instructions_at_pc(
       "Decoded instructions at lr:",
       cur_lr, 32, 16, st);
   }
 

@@ -727,11 +727,11 @@
   st->cr();
 
   // Check and print rtoc.
   st->print("rtoc: "  PTR64_FORMAT " ", p2i(cur_rtoc));
   if (cur_rtoc == NULL || cur_rtoc == (codeptr_t)-1 ||
-      !MiscUtils::is_readable_pointer(cur_rtoc)) {
+      !os::is_readable_pointer(cur_rtoc)) {
     st->print("(invalid)");
   } else if (((uintptr_t)cur_rtoc) & 0x7) {
     st->print("(unaligned)");
   }
   st->cr();
< prev index next >