< 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 >