Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #26274

Re: Failing Malloc

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>

Show all headers | View raw


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


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