Date: Fri, 23 Aug 2013 10:10:42 -0700 From: Steve Kargl <sgk@troutmask.apl.washington.edu> To: Anton Shterenlikht <mexas@bris.ac.uk> Cc: fortran@freebsd.org Subject: Re: lazy memory allocation Message-ID: <20130823171042.GA47588@troutmask.apl.washington.edu> In-Reply-To: <201308231025.r7NAPwNH043266@mech-cluster241.men.bris.ac.uk> References: <201308231025.r7NAPwNH043266@mech-cluster241.men.bris.ac.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Aug 23, 2013 at 11:25:58AM +0100, Anton Shterenlikht wrote: > I've been burned by what's apparently called > "lazy memory allocation" on linux. > > My code calls a subroutine that allocates > a coarray. This routine exits fine, with > no error. However, when I tried to initialise > the coarray, I got segfault. On investigation > I discovered that the coarray was not in fact > allocated. In my particular case this was > because there was not enough memory. > > Anyway, I was later told that this is an > expected behaviour on linux, with its > "lazy memory allocation". > > I'm wondering if FreeBSD also uses > a lazy memory allocation, or we do it differently? man malloc. FreeBSD uses jemalloc, which allows one to tune the allocators behavior. I suspect, but have not tried to verify, that by default it uses lazy memory allocation. To avoid possible issues with lazy memory allocation, initialize the memory. real, allocatable :: a(:) allocate(a(10) :: source=0.) You can also add in STAT and ERRMSG after SOURCE to inspect whether allocation was successful. -- Steve
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130823171042.GA47588>