hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
changeset 37430 fd743dadef12
parent 35201 996db89f378e
child 38133 78b95467b9f1
equal deleted inserted replaced
37428:6e724f3d488b 37430:fd743dadef12
     1 /*
     1 /*
     2  * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   401 
   401 
   402   if(sig == SIGPIPE || sig == SIGXFSZ) {
   402   if(sig == SIGPIPE || sig == SIGXFSZ) {
   403     if (os::Solaris::chained_handler(sig, info, ucVoid)) {
   403     if (os::Solaris::chained_handler(sig, info, ucVoid)) {
   404       return true;
   404       return true;
   405     } else {
   405     } else {
   406       if (PrintMiscellaneous && (WizardMode || Verbose)) {
   406       // Ignoring SIGPIPE/SIGXFSZ - see bugs 4229104 or 6499219
   407         char buf[64];
       
   408         warning("Ignoring %s - see 4229104 or 6499219",
       
   409                 os::exception_name(sig, buf, sizeof(buf)));
       
   410 
       
   411       }
       
   412       return true;
   407       return true;
   413     }
   408     }
   414   }
   409   }
   415 
   410 
   416   JavaThread* thread = NULL;
   411   JavaThread* thread = NULL;
   638         address page_start =
   633         address page_start =
   639           (address) align_size_down((intptr_t) addr, (intptr_t) page_size);
   634           (address) align_size_down((intptr_t) addr, (intptr_t) page_size);
   640         bool res = os::protect_memory((char*) page_start, page_size,
   635         bool res = os::protect_memory((char*) page_start, page_size,
   641                                       os::MEM_PROT_RWX);
   636                                       os::MEM_PROT_RWX);
   642 
   637 
   643         if (PrintMiscellaneous && Verbose) {
   638         log_debug(os)("Execution protection violation "
   644           char buf[256];
   639                       "at " INTPTR_FORMAT
   645           jio_snprintf(buf, sizeof(buf), "Execution protection violation "
   640                       ", unguarding " INTPTR_FORMAT ": %s, errno=%d", p2i(addr),
   646                        "at " INTPTR_FORMAT
   641                       p2i(page_start), (res ? "success" : "failed"), errno);
   647                        ", unguarding " INTPTR_FORMAT ": %s, errno=%d", addr,
       
   648                        page_start, (res ? "success" : "failed"), errno);
       
   649           tty->print_raw_cr(buf);
       
   650         }
       
   651         stub = pc;
   642         stub = pc;
   652 
   643 
   653         // Set last_addr so if we fault again at the same address, we don't end
   644         // Set last_addr so if we fault again at the same address, we don't end
   654         // up in an endless loop.
   645         // up in an endless loop.
   655         //
   646         //