=?utf-8?Q?Re[2]=3A_[Gc]_Test_failures, _hangs, _crashes_with_2011-04-25_CVS_checkout?=

Ivan Maidanski ivmai at mail.ru
Wed May 4 14:14:48 PDT 2011


Hi Peter,

Mon, 2 May 2011 21:00:27 -0500 "Peter O'Gorman" <gc at mlists.thewrittenword.com>:

> On Thu, Apr 28, 2011 at 12:07:52AM +0400, Ivan Maidanski wrote:
> > > low = 1
> > > (dbx) print list
> > > list = 0x809d860
> > > (dbx) print *list
> > > *list = {
> > > sexpr_car = 0xa84
> > 
> > Could you please watch when this value is assigned to sexpr_car.
> 
> Sorry, forgot about this.
> 
> Switched to incremental mode
> Reading dirty bits from /proc
> stopped in reverse_test_inner at line 556 in file "test.c"
> 556       b = ints(1, 50);
> A.aa = 0x809d860
> A.aa->sexpr_car = 0x809de70

I suppose a collection occurred here.
And A.aa object is not marked although it is referenced.
The question is: was the page (containing A.aa) marked as dirty at the collection start?

> 
> stopped in GC_reclaim_clear at line 152 in file "reclaim.c"
> 152                       list = ((ptr_t)p);
> A.aa = 0x809d860
> A.Aa.sexpr_car = <parse failed>
> A.aa->sexpr_car = (nil)
> (dbx) where
> =>[1] GC_reclaim_clear(hbp = 0x809d000, hhdr = 0x80ae480, sz = 16U, list =
> (nil), count = 0xfef85e44), line 152 in "reclaim.c"
> [2] GC_reclaim_generic(hbp = 0x809d000, hhdr = 0x80ae480, sz = 16U, init = 1,
> list = (nil), count = 0xfef85e44), line 237 in "reclaim.c"
> [3] GC_reclaim_small_nonempty_block(hbp = 0x809d000, report_if_found = 0),
> line 268 in "reclaim.c"
> [4] GC_continue_reclaim(sz = 2U, kind = 1), line 566 in "reclaim.c"
> [5] GC_allocobj(gran = 2U, kind = 1), line 1304 in "alloc.c"
> [6] GC_generic_malloc_inner(lb = 8U, k = 1), line 123 in "malloc.c"
> [7] GC_generic_malloc(lb = 8U, k = 1), line 163 in "malloc.c"
> [8] GC_malloc(lb = 8U), line 250 in "malloc.c"
> [9] small_cons(x = 0xe23, y = (nil)), line 264 in "test.c"
> [10] ints(low = 3619, up = 4500), line 334 in "test.c"
> 
> 
> stopped in small_cons at line 270 in file "test.c"
> 270       r -> sexpr_cdr = y;
> A.aa = 0x809d860
> A.aa->sexpr_car = 0xe84
> (dbx) where
> =>[1] small_cons(x = 0xe84, y = (nil)), line 270 in "test.c"
> [2] ints(low = 3716, up = 4500), line 334 in "test.c"
> [3] ints(low = 3715, up = 4500), line 334 in "test.c"
> [4] ints(low = 3714, up = 4500), line 334 in "test.c"
> 
> signal SEGV (no mapping at the fault address) in check_ints at line 378 in
> file "test.c"
> 378       if (SEXPR_TO_INT(car(car(list))) != low) {
> A.aa = 0x809d860
> A.aa->sexpr_car = 0xe84
> 
> Hope this helps,
> Will do the GCC built one later, but I am sure it's similar.
> Peter
> -- 
> Peter O'Gorman
> pogma at thewrittenword.com



More information about the Gc mailing list