src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hs25_8011661 Sdiff src/os_cpu/solaris_x86/vm

src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp

Print this page




 728       void* sighand = oldAct.sa_sigaction ? CAST_FROM_FN_PTR(void*,  oldAct.sa_sigaction)
 729                                           : CAST_FROM_FN_PTR(void*, oldAct.sa_handler);
 730       warning("Unexpected Signal %d occurred under user-defined signal handler %#lx", sig, (long)sighand);
 731     }
 732   }
 733 
 734   if (pc == NULL && uc != NULL) {
 735     pc = (address) uc->uc_mcontext.gregs[REG_PC];
 736   }
 737 
 738   // unmask current signal
 739   sigset_t newset;
 740   sigemptyset(&newset);
 741   sigaddset(&newset, sig);
 742   sigprocmask(SIG_UNBLOCK, &newset, NULL);
 743 
 744   // Determine which sort of error to throw.  Out of swap may signal
 745   // on the thread stack, which could get a mapping error when touched.
 746   address addr = (address) info->si_addr;
 747   if (sig == SIGBUS && info->si_code == BUS_OBJERR && info->si_errno == ENOMEM) {
 748     vm_exit_out_of_memory(0, "Out of swap space to map in thread stack.");
 749   }
 750 
 751   VMError err(t, sig, pc, info, ucVoid);
 752   err.report_and_die();
 753 
 754   ShouldNotReachHere();
 755 }
 756 
 757 void os::print_context(outputStream *st, void *context) {
 758   if (context == NULL) return;
 759 
 760   ucontext_t *uc = (ucontext_t*)context;
 761   st->print_cr("Registers:");
 762 #ifdef AMD64
 763   st->print(  "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
 764   st->print(", RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
 765   st->print(", RCX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RCX]);
 766   st->print(", RDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDX]);
 767   st->cr();
 768   st->print(  "RSP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSP]);




 728       void* sighand = oldAct.sa_sigaction ? CAST_FROM_FN_PTR(void*,  oldAct.sa_sigaction)
 729                                           : CAST_FROM_FN_PTR(void*, oldAct.sa_handler);
 730       warning("Unexpected Signal %d occurred under user-defined signal handler %#lx", sig, (long)sighand);
 731     }
 732   }
 733 
 734   if (pc == NULL && uc != NULL) {
 735     pc = (address) uc->uc_mcontext.gregs[REG_PC];
 736   }
 737 
 738   // unmask current signal
 739   sigset_t newset;
 740   sigemptyset(&newset);
 741   sigaddset(&newset, sig);
 742   sigprocmask(SIG_UNBLOCK, &newset, NULL);
 743 
 744   // Determine which sort of error to throw.  Out of swap may signal
 745   // on the thread stack, which could get a mapping error when touched.
 746   address addr = (address) info->si_addr;
 747   if (sig == SIGBUS && info->si_code == BUS_OBJERR && info->si_errno == ENOMEM) {
 748     vm_exit_out_of_memory(0, OOM_MMAP_ERROR, "Out of swap space to map in thread stack.");
 749   }
 750 
 751   VMError err(t, sig, pc, info, ucVoid);
 752   err.report_and_die();
 753 
 754   ShouldNotReachHere();
 755 }
 756 
 757 void os::print_context(outputStream *st, void *context) {
 758   if (context == NULL) return;
 759 
 760   ucontext_t *uc = (ucontext_t*)context;
 761   st->print_cr("Registers:");
 762 #ifdef AMD64
 763   st->print(  "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
 764   st->print(", RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
 765   st->print(", RCX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RCX]);
 766   st->print(", RDX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RDX]);
 767   st->cr();
 768   st->print(  "RSP=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RSP]);


src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File