hotspot/src/os/windows/vm/os_windows.cpp
changeset 34648 b7ea5d095ef5
parent 34633 2a6c7c7b30a7
child 35056 252c47a46a01
equal deleted inserted replaced
34647:fafb32d71489 34648:b7ea5d095ef5
  1799 }
  1799 }
  1800 
  1800 
  1801 void os::print_siginfo(outputStream *st, void *siginfo) {
  1801 void os::print_siginfo(outputStream *st, void *siginfo) {
  1802   EXCEPTION_RECORD* er = (EXCEPTION_RECORD*)siginfo;
  1802   EXCEPTION_RECORD* er = (EXCEPTION_RECORD*)siginfo;
  1803   st->print("siginfo:");
  1803   st->print("siginfo:");
  1804   st->print(" ExceptionCode=0x%x", er->ExceptionCode);
  1804 
  1805 
  1805   char tmp[64];
  1806   if (er->ExceptionCode == EXCEPTION_ACCESS_VIOLATION &&
  1806   if (os::exception_name(er->ExceptionCode, tmp, sizeof(tmp)) == NULL) {
  1807       er->NumberParameters >= 2) {
  1807     strcpy(tmp, "EXCEPTION_??");
       
  1808   }
       
  1809   st->print(" %s (0x%x)", tmp, er->ExceptionCode);
       
  1810 
       
  1811   if ((er->ExceptionCode == EXCEPTION_ACCESS_VIOLATION ||
       
  1812        er->ExceptionCode == EXCEPTION_IN_PAGE_ERROR) &&
       
  1813        er->NumberParameters >= 2) {
  1808     switch (er->ExceptionInformation[0]) {
  1814     switch (er->ExceptionInformation[0]) {
  1809     case 0: st->print(", reading address"); break;
  1815     case 0: st->print(", reading address"); break;
  1810     case 1: st->print(", writing address"); break;
  1816     case 1: st->print(", writing address"); break;
       
  1817     case 8: st->print(", data execution prevention violation at address"); break;
  1811     default: st->print(", ExceptionInformation=" INTPTR_FORMAT,
  1818     default: st->print(", ExceptionInformation=" INTPTR_FORMAT,
  1812                        er->ExceptionInformation[0]);
  1819                        er->ExceptionInformation[0]);
  1813     }
  1820     }
  1814     st->print(" " INTPTR_FORMAT, er->ExceptionInformation[1]);
  1821     st->print(" " INTPTR_FORMAT, er->ExceptionInformation[1]);
  1815   } else if (er->ExceptionCode == EXCEPTION_IN_PAGE_ERROR &&
  1822 
  1816              er->NumberParameters >= 2 && UseSharedSpaces) {
  1823     if (er->ExceptionCode == EXCEPTION_IN_PAGE_ERROR && UseSharedSpaces) {
  1817     FileMapInfo* mapinfo = FileMapInfo::current_info();
  1824       FileMapInfo* mapinfo = FileMapInfo::current_info();
  1818     if (mapinfo->is_in_shared_space((void*)er->ExceptionInformation[1])) {
  1825       if (mapinfo->is_in_shared_space((void*)er->ExceptionInformation[1])) {
  1819       st->print("\n\nError accessing class data sharing archive."       \
  1826         st->print("\n\nError accessing class data sharing archive."       \
  1820                 " Mapped file inaccessible during execution, "          \
  1827                   " Mapped file inaccessible during execution, "          \
  1821                 " possible disk/network problem.");
  1828                   " possible disk/network problem.");
       
  1829       }
  1822     }
  1830     }
  1823   } else {
  1831   } else {
  1824     int num = er->NumberParameters;
  1832     int num = er->NumberParameters;
  1825     if (num > 0) {
  1833     if (num > 0) {
  1826       st->print(", ExceptionInformation=");
  1834       st->print(", ExceptionInformation=");