- Jul 06, 2007
-
-
cshapiro authored
-
- Jan 01, 2007
-
-
cshapiro authored
-
- Nov 08, 2006
-
-
rtoy authored
These are in global registers and might be trashed. This makes heap overflow checking work better on solaris. There are still bugs.
-
- Nov 07, 2006
-
-
cshapiro authored
reg_NARGS macro on these targets and use SC_REG to replace open-coded assignments to platform specific sigcontext members in interrupt.c and os-common.c. This code could be simplified further by merging the x86 and AMD64 cases into the general case.
-
- Sep 15, 2005
-
-
rtoy authored
.indent.pro.
-
- Oct 15, 2004
-
-
cwang authored
-
- Aug 02, 2004
-
-
cwang authored
Reported by Carl Shapiro
-
- Jul 13, 2004
-
-
pmai authored
versions of all the required things, this commit separates the interrupt handler proper (now interrupt_handle_now_handler) from the actual work-horse (interrupt_handle_now), which is now only ever called from the two interrupt handlers, interrupt_handle_now_handler and maybe_now_maybe_later. This follows similar changes in SBCL, and is in fact needed in order to properly use sigreturn in signal handlers, as required to work around a problem with the G5.
-
- Jul 08, 2004
-
-
rtoy authored
* interrupt.c: oldcont isn't used. * interrupt.c, monitor.c, validate.c: Initialize some variables that the compiler thinks might be used without initialization.
-
- Jul 07, 2004
-
-
rtoy authored
-
- Jun 18, 2004
-
-
cwang authored
Deliver protection violations on a dedicated signal stack for amd64
-
- May 20, 2004
-
-
cwang authored
-
- May 19, 2004
-
-
cwang authored
-
- May 04, 2004
-
-
rtoy authored
-
- Nov 01, 2003
-
-
toy authored
-
- Oct 24, 2003
-
-
toy authored
* x86-assem.S (multiple_value_return): Add new functions to handle heap overflow warnings and errors. * x86-arch.c (sigtrap_handler): Add cases for the two new heap overflow traps. * interrupt.c (interrupt_handle_space_overflow): Add support for x86. * parms.lisp (static-symbols): Add new static symbols for heap overflow checking. Add new trap types for heap overflow checking.
-
toy authored
overflow checking. Enable with :heap-overflow-check. We reserve some number of pages on the heap. When the heap reaches the reserved pages, an overflow warning is signalled. The reserved pages are set 0. This allows some additional allocation to happen during debugging, if necessary. If another overflow happens, we throw to top-level. Sparc only right now. * lisp/sparc-assem.S (_do_dynamic_space_overflow_error): New function to handle a heap overflow error. (_do_dynamic_space_overflow_warning): New function to handle heap overflow warning. * lisp/sparc-arch.c (sigill_handler): Handle the two new traps caused by heap overflows. * lisp/interrupt.c (interrupt_handle_space_overflow): New function to handle interrupt caused by heap space overflows. * lisp/gencgc.c (handle_heap_overflow): New function to handle heap overflows. (gc_alloc_new_region): Use handle_heap_overflow. (gc_alloc_large): Use handle_heap_overflow * compiler/sparc/parms.lisp (static-symbols): Add new static symbols for heap overflow checking: dynamic-space-overflow-error-hit and dynamic-space-overflow-warning-hit. * compiler/generic/new-genesis.lisp (finish-symbols): Initialize the new dynamic-space-overflow-error-hit and dynamic-space-overflow-warning-hit static symbols. * code/lispinit.lisp (:heap-overflow-check): Add heap-overflow-check to *runtime-features*, if necessary. ("reserved_heap_pages"): Access to alien variable for heap overflow. (*reserved-heap-pages*): Default number of heap pages to reserve for heap overflow. (%top-level): Set reserved-heap-pages to the default. * code/interr.lisp (dynamic-space-overflow-warning-hit): Add function to handle heap overflow warnings. (dynamic-space-overflow-error-hit): Add function to handle heap overflow error. * code/error.lisp (heap-overflow): Add new condition type for heap overflow
-
- Jul 19, 2003
-
-
emarsden authored
- fix a signed/unsigned cast bug that was prevented the auto-gc-trigger from functioning correctly when using certain dynamic-space sizes (for platforms that don't have an internal gc trigger). - added a few #include files to avoid compiler warnings - changed some #ifdef semantics: DEBUG activates additional assertions, and PRINTNOISE activates debugging statements.
-
- May 30, 2003
-
-
toy authored
o Remove the code in fake_foreign_function_call that was moved to build_fake_control_stack_frame
-
- May 29, 2003
-
-
toy authored
* lisp/sunos-os.h (PROTECTION_VIOLATION_SIGNAL): Define it for stack-checking. * lisp/solaris-os.c (segv_handler): Add stack-checking support for Solaris. * lisp/os.h (os_control_stack_overflow): Give a type name to the zone enums (mostly for the debugger). * lisp/os-common.c (guard_zones): Add stack-checking support for Solaris. (os_control_stack_overflow): Add stack-checking support for Solaris. * lisp/interrupt.c (build_fake_control_stack_frame): New function for building a stack frame without the foreign call stuff. Used for stack checking. (interrupt_install_low_level_handler): Only need to install alternate signal stack for x86. * lispinit.lisp: (scrub-control-stack): Rename to %scrub-control-stack to match x86 version so control stack guard is done. * parms.lisp (static-symbols): Added new static symbols for control stack checking.
-
- Mar 23, 2003
-
-
gerd authored
feature :stack-checking because it's not implemented for other systems/architectures yet. It is currently known to work on FreeBSD 4.8-RC/x86 and Debian 2.2.20/x86. * bootfiles/18e/boot3.lisp: New boot file, well, only a description of the boot procedure since no boot file is needed. * lisp/x86-validate.h (SIGNAL_STACK_START, SIGNAL_STACK_SIZE) [__FreeBSD__, __linux__]: New defines. (CONTROL_STACK_SIZE) {__FreeBSD__, __linux__]: Adjust for signal stack. * lisp/validate.c (validate) [RED_ZONE_HIT]: Call os_guard_control_stack. Some cleanup. * lisp/os.h (BOTH_ZONES, YELLOW_ZONE, RED_ZONE): New enums. Add function prototypes. * lisp/interrupt.c (interrupt_install_low_level_handler) [RED_ZONE_HIT]: Deliver protection violations on a dedicated signal stack. * lisp/os-common.c (os_stack_grows_down_1, os_stack_grows_down): New functions. (guard_zones, control_stack_zone, os_guard_control_stack) (os_control_stack_overflow) [RED_ZONE_HIT]: New functions. (os_control_stack_overflow) [!RED_ZONE_HIT]: Dummy function. * lisp/Linux-os.c (sigsegv_handler) [RED_ZONE_HIT]: Handle control stack overflows. * lisp/FreeBSD-os.c: General cleansing. (sigbus_handler) [RED_ZONE_HIT]: Handle control stack overflows. * lisp/FreeBSD-os.h (PROTECTION_VIOLATION_SIGNAL): New define. * lisp/Linux-os.h (PROTECTION_VIOLATION_SIGNAL): New define. * compiler/x86/system.lisp (lisp::%scrub-control-stack): Change defknown from sys:scrub-control-stack. (%scrub-control-stack): Rename VOP. * code/lispinit.lisp (os-guard-control-stack) [#+stack-checking]: Define alien os_guard_control_stack. (%scrub-control-stack) [#+x86]: New function. (scrub-control-stack) [#+x86]: Call %scrub-control-stack, call os-guard-control-stack if #+stack-checking. * code/interr.lisp (yellow-zone-hit, red-zone-hit) [#+stack-checking]: New functions. * code/error.lisp (stack-overflow) [#+stack-checking]: New condition. * compiler/generic/new-genesis.lisp (finish-symbols) [#+stack-checking]: Add symbols for control stack checking. * compiler/x86/parms.lisp (static-symbols): Likewise.
-
- Dec 06, 2001
-
-
pmai authored
code which were previously conditionalized on :FreeBSD, are now conditionalized on :BSD instead, with the :BSD feature now implying a 4.4BSD(lite2) derived OS. This should make future BSD-ports easier. FreeBSD and OpenBSD are differentiated by having either :FreeBSD or :OpenBSD on the features list. Currently the OpenBSD port does not have working ELF support, because OpenBSD 2.9 is still non-ELF by default. So don't put ELF on the features list when building for OpenBSD, or fix the code to work correctly in this case instead.
-
- Oct 24, 2000
-
-
dtc authored
of the dynamic space. DYNAMIC_SPACE_SIZE now defines the maximum size, and when defined DEFAULT_DYNAMIC_SPACE_SIZE gives the default. o Increase the maximum dynamic space size for Linux x86 to 1.625GB, with the default remaining at 512MB. o Define the default dynamic space size for FreeBSD x86 to also be 512MB, with a maximum of 2GB.
-
- Oct 21, 2000
- Apr 12, 2000
-
-
pw authored
via the POSIX_SIGS conditional. Change the way SA_SIGINFO gets passed to sigaction. It is turned off for FreeBSD and Linux.
-
- Nov 11, 1999
-
-
dtc authored
otherwise the set of masked exceptions may be lost. Further, when restoring the FPU control word restore the rounding mode to its required default of round-to-nearest.
-
- Sep 16, 1999
-
-
dtc authored
alternate real-time interrupt frames.
-
- Feb 22, 1999
-
-
dtc authored
Don't use __sighandler casts as they are not portable. They were only quietening a few warnings.
-
- Feb 20, 1999
-
-
pw authored
error on FreeBSD/x86. More investigation needed on Alpha/Linux side.
-
pw authored
From: Julian Dolby <dolby@csag-226-8.UCSD.EDU> Enclosed below are diffs against the cvs repository as of Feb 12; aside from minor changes like using different include files (e.g. validate.h instead of x86-validate.h in Linux-os.c) and adding alpha-linux specifics unix-glibc2.lisp, there are two code changes. The first is to signal handling. I had to put the POSIX-SIGS ifdefs into places used by alpha but not by x86, and I ifdef'ed out most of the linux #define kludges for signals for alpha linux, since alpha linux uses OSF/1 signals rather than linux ones. The second is that the trick of or'ing 2 into the reg_ALLOC address to cause faults does not work on alpha linux since the kernel traps and handles the unaligned access; I did not find a way to change that kernel behavior, so I changed the code to or (1<<63) into the address to cause a seg fault, and then check, in the seg fault handler, to see if the high-order address bits are set. One change I made is to the memory layout (lisp/alpha-validate.h and compiler/alpha/parms.lisp); that change is not needed to make lisp run on alpha linux, but is there because I wanted more heap space.
-
- Feb 02, 1999
-
-
dtc authored
recent libraries are reported to no long provide __setfpucw.
-
- May 01, 1998
-
-
dtc authored
support for glibc2.
-
- Jan 05, 1998
-
-
dtc authored
causes the mis-allocation of the SAP object.
-
- Nov 25, 1997
-
-
dtc authored
of no utility and wasn't even being maintained thoroughly. Can now use pseudo atomic in C code. All interrupt contexts are saved, even those that occur when running foreign C code; this may be necessary for reliable stack parsing on some operating systems, e.g. Linux. When the pending interrupt from a GC trigger is processed by interrupt_handle_pending, any other accumulated pending interrupt is also processed even if *interrupts-enabled* is false, breaking the behaviour of the *interrupts-enabled* flag. The best way around this for the x86 port is to call maybe-gc directly from the allocation routines; remove the recently introduced function set_maybe_gc_pending which also had other problems. Note this problem will likely occur on the other ports.
-
- Nov 22, 1997
-
-
dtc authored
calling interrupt_handle_now, else when interrupt_handle_now resets signal mask to that in the signal context it will be masking the interrupts where the intention is to re-enable them. This caused the multi-processing to get stuck working on a particular process with the signals masked. Change may have another benefit: the pending_mask is no longer needed so there is no danger from recursive pending interrupts.
-
- Nov 21, 1997
-
-
dtc authored
interrupt_handle_now until after the context SAP object is allocated so that this allocation is not interrupted. May still be some lossage on the non-x86 ports as the GC will not see the object on the C stack until it is moved onto the control stack by the call into lisp.
-
- Nov 19, 1997
-
-
dtc authored
GC when it reaches its trigger within pseudo atomic so that maybe_gc is called at the end of pseudo atomic.
-
- Mar 16, 1997
-
-
pw authored
-
- Feb 18, 1997
-
-
dtc authored
-