[Gc] GC_remap fails with ENOMEM on Linux with large (64K) pages.

Boehm, Hans hans.boehm at hp.com
Wed May 27 15:47:17 PDT 2009

I don't see a lot of changes directly associated with this code.  GC_remap still uses mprotect instead of mmap to avoid an accidental intervening mapping, at least in the CVS version.  And that seems to be the same in Mono.  It would be helpful to understand exactly why mprotect is failing, i.e. what is mapped at that address when it fails.  Can you find out from /proc/.../maps?  ENOMEM seems particularly uninformative here.

As Zoltan points out, the Mono source tree has diverged a bit, even aside from using an older version.  But I'm not sure that any of this code has been that well exercised with 64K pages, so the problem may also exist in our versions.


> -----Original Message-----
> From: gc-bounces at napali.hpl.hp.com 
> [mailto:gc-bounces at napali.hpl.hp.com] On Behalf Of Steven Munroe
> Sent: Wednesday, May 27, 2009 3:20 PM
> To: Ivan Maidanski
> Cc: Ulrich Weigand; gc at napali.hpl.hp.com; Sean Dague
> Subject: Re: [Gc] GC_remap fails with ENOMEM on Linux with 
> large (64K) pages.
> On Wed, 2009-05-27 at 11:33 +0400, Ivan Maidanski wrote:
> > Hi!
> > 
> > munroesj at us.ibm.com wrote:
> > > We are trying to use mono 64-bit on SLES11 PowerPC. We are seeing 
> > > lots of failures of the form:
> > > 
> > > Mprotect failed at 0x40002790000 (length 131072) with errno 12
> > > 
> > 
> > It seems that You're using gc v7.1 (or prior). This portion 
> of code is changed a lot (eg., mmap() is used instead of 
> mprotect() here). Could You, please, try to reproduce the 
> problem with the recent CVS version.
> > 
> Looks like mono is using Version 6.6 (even in their current 
> svc). So a simple replacement of libgc is not possible with 
> mono-2.4. I get the following error:
> boehm-gc.c:238: error: expected ')' before 'event'
> boehm-gc.c: In function 'mono_gc_enable_events':
> boehm-gc.c:266: error: 'GC_notify_event' undeclared (first use in this
> function)boehm-gc.c:266: error: (Each undeclared identifier 
> is reported only once
> boehm-gc.c:266: error: for each function it appears in.)
> boehm-gc.c:266: error: 'on_gc_notification' undeclared (first 
> use in this function)
> boehm-gc.c:267: error: 'GC_on_heap_resize' undeclared (first 
> use in this
> function)
> It seems that GCEventType is no longer defined and there is 
> no obvious equivalent to try.
> _______________________________________________
> Gc mailing list
> Gc at linux.hpl.hp.com
> https://www.hpl.hp.com/hosted/linux/mail-archives/gc/

More information about the Gc mailing list