[prev in list] [next in list] [prev in thread] [next in thread]
List: sbcl-commits
Subject: [Sbcl-commits] master: Fix issue with new GC fixes choking on padding,
From: "Martin Cracauer" <cracauer () users ! sourceforge ! net>
Date: 2014-09-30 16:32:07
Message-ID: E1XZ0LX-0000b2-OL () sfs-ml-3 ! v29 ! ch3 ! sourceforge ! com
[Download RAW message or body]
The branch "master" has been updated in SBCL:
via 1db4a13a475f0cfc813932c946e7ed821e3c0ffa (commit)
from bbf9408b63a3f04ac010ee3db436b8ae840ef57f (commit)
- Log -----------------------------------------------------------------
commit 1db4a13a475f0cfc813932c946e7ed821e3c0ffa
Author: Martin Cracauer <cracauer@google.com>
Date: Tue Sep 30 12:24:05 2014 -0400
Fix issue with new GC fixes choking on padding, reported on x86 (32
bits). Put useful error message for the next time a similar issue
comes up.
Fix cracauer-only indentation.
---
src/runtime/gencgc.c | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/runtime/gencgc.c b/src/runtime/gencgc.c
index 10349dd..ed8cf2e 100644
--- a/src/runtime/gencgc.c
+++ b/src/runtime/gencgc.c
@@ -2409,7 +2409,7 @@ do_the_wipe()
generations[page_table[i].gen].bytes_allocated -= page_table[i].bytes_used;
page_table[i].gen = new_space;
}
- if (verbosefixes >= 1 && lisp_pointers_wiped > 0 || verbosefixes >= 2) {
+ if ((verbosefixes >= 1 && lisp_pointers_wiped > 0) || verbosefixes >= 2) {
fprintf(stderr, "Cra25a: wiped %d words (%d lisp_pointers) in %d pages, cannot wipe %d pages \n"
, words_wiped, lisp_pointers_wiped, pages_considered, n_pages_cannot_wipe);
}
@@ -2434,12 +2434,19 @@ set_page_consi_bit(page_index_t pageindex, lispobj *mark_which_pointer)
int size = (sizetab[widetag_of(mark_which_pointer[0])])(mark_which_pointer);
if (size == 1 &&
- (fixnump(*mark_which_pointer)
- || is_lisp_pointer(*mark_which_pointer)
- || lowtag_of(*mark_which_pointer) == 9
- )) {
+ (fixnump(*mark_which_pointer) ||
+ is_lisp_pointer(*mark_which_pointer) ||
+ lowtag_of(*mark_which_pointer) == 9 ||
+ lowtag_of(*mark_which_pointer) == 2)) {
size = 2;
}
+ // print additional debug info for now.
+ if (size % 2 != 0) {
+ fprintf(stderr, "WIPE ERROR !dword, size %d, lowtag %d, world 0x%lld\n",
+ size,
+ lowtag_of(*mark_which_pointer),
+ (long long)*mark_which_pointer);
+ }
gc_assert(size % 2 == 0);
lispobj *begin = page_address(pageindex);
int begin_dword = (mark_which_pointer - begin) / 2;
-----------------------------------------------------------------------
hooks/post-receive
--
SBCL
------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Sbcl-commits mailing list
Sbcl-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic