Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!swrinde!ucsd!hub.ucsb.edu!appmag!curly!pa From: pa@curly.appmag.com (Pierre Asselin) Newsgroups: comp.unix.aix Subject: Re: malloc (was: making a request to IBM) Keywords: malloc psalloc paging space NULL Message-ID: <701@curly.appmag.com> Date: 23 Apr 91 23:54:52 GMT References: <1991Apr9.024814.1141@appmag.com> Reply-To: pa@appmag.com (Pierre Asselin) Organization: Applied Magnetics, Goleta, CA Lines: 63 My newsfeed only worked one way, so I had to be quiet for a while. Now I'm worldwide again. Dick Dunn (rcd@ico.isc.com) summarized my own position very well. > The way I read this, the complaint is from the normal-programmer point of > view: There's a defined way to indicate that there's no more memory > available--return NULL from malloc(). SIGDANGER is an IBM invention. [... and more statements that I fully endorse] >> So, do we go back to blowing up processes that allocate too much memory, >> even though that memory may actually be there by the time the process >> actually uses it?... > > In the case of C programs and malloc(), yes. If you can't allocate usable > memory (meaning "usable" at the point of return from malloc()), you should > return NULL. That doesn't "blow up" the process; it gives it a fair chance > to decide what to do. I have nothing against the SIGDANGER mechanism per se. It sure beats what SysV and Mach have to offer. I have nothing against a sparse allocator that doesn't lock paging space right away. But it shouldn't be called malloc. QUESTIONS: Let's say I #ifdef _AIX and I use psmalloc. 1) Can I touch everything it gives me? 2) Can I still use it twenty minutes later? 3) Can I still get burned by routines in libc.a that call the regular malloc? 4) Am I still subject to sudden death if some unrelated process bloats up ? dennis@gpu.utcs.utoronto.ca (Dennis Ferguson) writes: > Better to explain more exactly why AIX does what it does. It's so vendors > who want to sell crufty old Fortran programs which have no way to do > dynamic memory allocation, can ship binaries with huge static arrays > compiled in for people who want to solve big problems and still have > the same binaries run on small machines to solve small problems. To > implement this you don't allocate backing store until a page is touched, > which means malloc() can't return NULL since it can't, in general, know > if the Fortran program running at the same time is actually going to > use his pages or not. 5) OK IBM'ers. Is this true? If so, does the Fortran run-time support catch SIGDANGER? I write:: > Austin: STAY ON THE NET! You're the only way we'll ever get the > straight dope. (Anyone care to give us the straight dope on this one?) marc@ibmpa.awdpa.ibm.com (Marc Pawliger): > And us Palo Alto folks? And Rochester and Kingston folks? And Research? I didn't know you existed because I rely too much on official channels. Weeeell, OK, you can stay too. --Pierre Asselin, R&D, Applied Magnetics. I speak for me.