From: Nikodemus Siivola Date: Thu, 18 Mar 2010 08:16:50 +0000 (+0000) Subject: 1.0.36.30: print_generation_stats even if heap exhaustion happens during allocation X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=f4d1ece090effb9fdfbd570baf1baa51bb5b21cb;p=sbcl.git 1.0.36.30: print_generation_stats even if heap exhaustion happens during allocation Ditto for various GC control variables. Handling heap exhaustion is tricky enough that puking more information is better than less. --- diff --git a/src/runtime/gencgc.c b/src/runtime/gencgc.c index ba2503a..62fdcc8 100644 --- a/src/runtime/gencgc.c +++ b/src/runtime/gencgc.c @@ -1161,21 +1161,21 @@ gc_heap_exhausted_error_or_lose (long available, long requested) fprintf(stderr, "Heap exhausted during %s: %ld bytes available, %ld requested.\n", gc_active_p ? "garbage collection" : "allocation", available, requested); - if (gc_active_p || (available == 0)) { - /* If we are in GC, or totally out of memory there is no way - * to sanely transfer control to the lisp-side of things. - */ - print_generation_stats(); + print_generation_stats(); fprintf(stderr, "GC control variables:\n"); - fprintf(stderr, " *GC-INHIBIT* = %s\n *GC-PENDING* = %s\n", + fprintf(stderr, " *GC-INHIBIT* = %s\n *GC-PENDING* = %s\n", SymbolValue(GC_INHIBIT,thread)==NIL ? "false" : "true", (SymbolValue(GC_PENDING, thread) == T) ? "true" : ((SymbolValue(GC_PENDING, thread) == NIL) ? "false" : "in progress")); #ifdef LISP_FEATURE_SB_THREAD - fprintf(stderr, " *STOP-FOR-GC-PENDING* = %s\n", + fprintf(stderr, " *STOP-FOR-GC-PENDING* = %s\n", SymbolValue(STOP_FOR_GC_PENDING,thread)==NIL ? "false" : "true"); #endif + if (gc_active_p || (available == 0)) { + /* If we are in GC, or totally out of memory there is no way + * to sanely transfer control to the lisp-side of things. + */ lose("Heap exhausted, game over."); } else { diff --git a/version.lisp-expr b/version.lisp-expr index 11a8713..0e107de 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.36.29" +"1.0.36.30"