Skip to content
Snippets Groups Projects
  1. Jun 30, 2006
  2. Oct 19, 2004
  3. Jun 01, 2004
  4. Oct 24, 2003
    • toy's avatar
      Add support for catching heap overflows, similar to the control stack · 3e309c44
      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
      3e309c44
  5. Sep 25, 2003
    • toy's avatar
      Implmement Pierre Mai's idea of adding 2 macros for setting *FEATURES* · 11faa4e0
      toy authored
      and *RUNTIME-FEATURES* and setting them appropriately as files are
      loaded so that recompiling CMUCL produces a result with the same set
      of features.  *RUNTIME-FEATURES* is a subset of *FEATURES* that is
      written out to internals.h so the C code can be compiled
      appropriately.
      
      A simple bootstrap with boot17 is needed.
      11faa4e0
  6. Sep 12, 2003
  7. Jun 26, 2003
    • toy's avatar
      From Paul Foley: · bfbb8fd1
      toy authored
      Non-simple-streams-related changes:
      
      * Stop commands which go through invoke-command-interactive from
        affecting the history variables.
      
      * Fix some typos in comments
      
      * When the GC closes a lost stream, revert to original contents
      
      * Replace #+nil with #+(or) in unix*.lisp
        [NIL is a potentially valid feature name]
      
      
      Simple-streams-related changes:
      
      * Teach reader to handle simple-streams
      
      * Add missing package prefixes in OPEN
      
      * Add unix:unix-msync for force-output on mmapped files
      
      * Add placeholder documentation
      
      * Numerous changes in simple-streams implementation
      
      * Add "external-formats" directory for external formats
      
      
      Note: :BIG-ENDIAN or :LITTLE-ENDIAN should be put on *features*
      bfbb8fd1
  8. May 29, 2003
    • toy's avatar
      Add control-stack checking for Sparc. Based on work from SBCL. · 72f0aa1e
      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.
      72f0aa1e
  9. Mar 23, 2003
    • gerd's avatar
      Optional control stack checking. This is controlled by the · 670d643f
      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.
      670d643f
  10. Aug 23, 2002
  11. Jul 10, 2002
    • toy's avatar
      From Eric Marsden: · 6e9a215f
      toy authored
       * (pcl:class-precedence-list (find-class 'null)) should have symbol
         occurring before list, as per CLHS.
      
       * minor changes to certain error conditions: eg trying to set
         DEFAULT-DIRECTORY to a non-existent directory should raise a
         condition of type FILE-ERROR. (Some of these changes are from
         Alexey Dejneka, via SBCL).
      
       * cleanup of some Hemlock-related symbols that shouldn't be exported
         when :no-hemlock is defined.
      6e9a215f
  12. Jul 12, 2001
  13. Jul 08, 2001
    • pw's avatar
      From Paul Foley: · 65855429
      pw authored
      	This patch makes QUIT call a list of functions at
      	exit, so that the Motif interface can clean up without having to
      	redefine it.
      65855429
  14. Apr 07, 2001
    • pw's avatar
      Freom Pierre Mai: · d11e3bc3
      pw authored
      Allow duplicate keyword arguments in macro calls and destructuring-bind
      to be ANSI compliant. Offending clause in VALIDATE-KEYWORD is commented
      out in case anyone needs to revive the old behaviour.
      d11e3bc3
  15. Mar 04, 2001
  16. Oct 16, 2000
  17. Sep 14, 2000
  18. Jan 17, 2000
  19. Dec 04, 1999
  20. Sep 26, 1998
  21. Apr 10, 1998
  22. Jan 16, 1998
  23. Jan 04, 1998
    • dtc's avatar
      Define a new function process-wait-until-fd-usable; similar to · 9e78a0f2
      dtc authored
      sys:wait-until-fd-usable but uses process-wait so avoids blocking if
      there are other runnable processes.
      
      Redefine the sleep function to use process-wait-with-timeout to avoid
      blocking if there are other runnable processes.
      9e78a0f2
  24. Nov 21, 1997
  25. Nov 18, 1997
  26. Nov 04, 1997
    • dtc's avatar
      Merge in changes to the x86 backend from the gencgc branch, allowing · 725ab9ee
      dtc authored
      common binaries to be run on both:
      
      * The immediate-stack storage class has been removed, this is
      unnecessary as the descriptor-stack SC can be used. It may have once
      been part of some GC stragety to reduce the number of stack slots that
      needed to be noted for a GC.
      
      * The object allocation has been abstracted and cleaned up. This
      should produce slightly faster smaller code with CGC, and can be
      compiled to support inline allocation with GENCGC.  CGC compiled code
      will run under GENCGC, and GENCGC binaries that don't use inline
      allocation will run under CGC.
      
      * A random hash is now placed in the unused symbol object slot (the
      symbol-hash slot). This saves flushing the info cache at each GC, and
      may have other uses for symbol based hash tables. Should help MP
      safety.
      
      * Common set of static symbols used by both CGC and GENCGC.
      
      * Corrections to the stack-ref VOP; now returns lisp objects not
      unsigned numbers. Required some patches to debug-int.
      
      * Inline unsigned/signed byte 32 to bignum allocation enabled.
      
      * Support for the x86 xadd instruction applied to instance slot and
      symbol values - may be handy for some MP code.
      
      * Bump up the FASL file version from 1 to 2.
      725ab9ee
  27. Sep 15, 1997
  28. Jan 18, 1997
  29. May 07, 1996
  30. Jul 26, 1995
  31. Oct 31, 1994
  32. Feb 15, 1994
  33. Feb 11, 1994
  34. Sep 03, 1993
  35. Aug 30, 1993
  36. Aug 26, 1993
  37. Aug 19, 1993
Loading