[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