Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Ian Collins <ian-news@hotmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Failing Malloc |
| Date | 2012-09-13 10:28 +1200 |
| Message-ID | <abcgjrF1taiU4@mid.individual.net> (permalink) |
| References | <k2qq2i$aba$1@speranza.aioe.org> <5050FC9D.4010608@verizon.net> <abcd17F1taiU1@mid.individual.net> <505104F1.6080709@verizon.net> |
On 09/13/12 09:56 AM, James Kuyper wrote: > On 09/12/2012 05:27 PM, Ian Collins wrote: >> On 09/13/12 09:20 AM, James Kuyper wrote: >>> On 09/12/2012 04:07 PM, Eric wrote: >>>> Hi What is a good way to respond to a failed Malloc (returns Null)? I do >>>> not want to call Abort or Exit immediately. >>> >>> That depends entirely upon what your program is doing. There's only one >>> general piece of advice that's applicable: do NOT do anything with that >>> null pointer value other than copying it or comparing it to other pointers. >>> >>> My own code would generate an error message identifying the fact that >>> malloc() failed, along with the name of the function that called it, and >>> the name of the file containing that function. That much is required by >>> the coding standards for the project I'm working on. Everything else I >>> will say about this reflects my own personal requirements. If the >>> failure occurred inside a loop, the error message would indicate the >>> value of the loop index at the time the problem was identified. If the >>> message would otherwise be identical to another message that could be >>> produced in the same block of code, something will be added to it to >>> allow unique identification of the particular call to malloc() that >>> triggered the problem. That function would then clean up anything that >>> it needed to clean up, and then return an error code to the calling >>> function. >> >> I can understand this approach on a single use embedded system where >> such a failure may be repeatable. Do error messages provide any useful >> data on a multi-user system given the generally random memory usage >> patterns? > > While the systems my programs normally run on are nominally multi-user, > there's one user-id that is used to start the production manager > program. All other programs in the production system (including mine) > are started by the manager, directly or indirectly, and therefore all > run using the same user id. For practical purposes, it's a single-user > system (and definitely NOT an embedded one). > > As I said, for failed malloc() calls the information provided by those > error messages is seldom of much use - it's just part of a general > framework for error handling that I've found useful. However, most of > the problems that come up are data-driven, and are unaffected by the > "random memory use patterns" of other programs that might be running at > the same time on the same system. For those kinds of problems, I've > found it a very useful framework. > > This is example of how the right way to deal with errors depends very > much on the context in which those errors have to be dealt with, which > is precisely the point I was making. > > I was recently assigned to help another group with their work - when it > fails, their software provides much less information in the error > messages than mine does. I keenly miss that information. I understand your pain. I use a similar approach to resource allocation failures to yours in C++ with exceptions that convey file and line number information from the call site. These can ether propagate up or be caught and augmented and re-thrown higher up the stack. I guess I haven't done anything similar in C because it takes more work and lot more discipline! -- Ian Collins
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Failing Malloc Eric <nospam@nospam.com> - 2012-09-12 20:07 +0000
Re: Failing Malloc Xavier Roche <xroche@free.fr.NOSPAM.invalid> - 2012-09-12 22:12 +0200
Re: Failing Malloc William Ahern <william@wilbur.25thandClement.com> - 2012-09-12 14:25 -0700
Re: Failing Malloc Andrew Cooper <andrew@nospam.example.com> - 2012-09-12 21:21 +0100
Re: Failing Malloc Eric <nospam@nospam.com> - 2012-09-12 20:34 +0000
Re: Failing Malloc Paul N <gw7rib@aol.com> - 2012-09-12 13:46 -0700
Re: Failing Malloc Eric <nospam@nospam.com> - 2012-09-13 20:21 +0000
Re: Failing Malloc Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-13 17:31 -0400
Re: Failing Malloc James Kuyper <jameskuyper@verizon.net> - 2012-09-13 17:57 -0400
Re: Failing Malloc John Gordon <gordon@panix.com> - 2012-09-12 20:55 +0000
Re: Failing Malloc William Ahern <william@wilbur.25thandClement.com> - 2012-09-12 14:33 -0700
Re: Failing Malloc falk@rahul.net (Edward A. Falk) - 2012-09-13 22:43 +0000
Re: Failing Malloc James Kuyper <jameskuyper@verizon.net> - 2012-09-12 17:37 -0400
Re: Failing Malloc Johann Klammer <klammerj@NOSPAM.a1.net> - 2012-09-13 08:57 +0200
Re: Failing Malloc James Kuyper <jameskuyper@verizon.net> - 2012-09-12 17:20 -0400
Re: Failing Malloc Ian Collins <ian-news@hotmail.com> - 2012-09-13 09:27 +1200
Re: Failing Malloc James Kuyper <jameskuyper@verizon.net> - 2012-09-12 17:56 -0400
Re: Failing Malloc Ian Collins <ian-news@hotmail.com> - 2012-09-13 10:28 +1200
Re: Failing Malloc James Kuyper <jameskuyper@verizon.net> - 2012-09-12 18:57 -0400
Re: Failing Malloc William Ahern <william@wilbur.25thandClement.com> - 2012-09-12 16:21 -0700
Re: Failing Malloc Ian Collins <ian-news@hotmail.com> - 2012-09-13 12:07 +1200
Re: Failing Malloc James Kuyper <jameskuyper@verizon.net> - 2012-09-13 13:18 -0400
Re: Failing Malloc Ian Collins <ian-news@hotmail.com> - 2012-09-14 07:37 +1200
Re: Failing Malloc James Kuyper <jameskuyper@verizon.net> - 2012-09-13 16:05 -0400
Re: Failing Malloc William Ahern <william@wilbur.25thandClement.com> - 2012-09-13 14:21 -0700
Re: Failing Malloc James Kuyper <jameskuyper@verizon.net> - 2012-09-13 17:38 -0400
Re: Failing Malloc William Ahern <william@wilbur.25thandClement.com> - 2012-09-13 14:03 -0700
Re: Failing Malloc Ian Collins <ian-news@hotmail.com> - 2012-09-15 10:01 +1200
Re: Failing Malloc Philip Lantz <prl@canterey.us> - 2012-09-14 02:50 -0700
Re: Failing Malloc Kaz Kylheku <kaz@kylheku.com> - 2012-09-12 21:36 +0000
Re: Failing Malloc Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-12 17:41 -0400
Re: Failing Malloc Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2012-09-12 16:07 -0600
Re: Failing Malloc "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2012-09-12 16:03 -0700
Re: Failing Malloc Kenneth Brody <kenbrody@spamcop.net> - 2012-09-12 19:24 -0400
Re: Failing Malloc The Great Firewall of China Blue <chine.bleu@yahoo.com> - 2012-09-12 16:34 -0700
Re: Failing Malloc Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-09-13 00:14 -0700
csiph-web