Re: pg_upgrade: out of memory - Mailing list pgsql-general
From | Carrington, Matthew (Produban) |
---|---|
Subject | Re: pg_upgrade: out of memory |
Date | |
Msg-id | 53E23B63FBFF3645A2CDD9BE5933C60C8B1194F542@ENTAAP2407P.an.ad.anplc.co.uk Whole thread Raw |
In response to | Re: pg_upgrade: out of memory (Tom Lane <tgl@sss.pgh.pa.us>) |
List | pgsql-general |
Tom, Yes, that look right for AIX . Here's the relevant section from the malloc man page ... Return Values Upon successful completion, the malloc subroutine returns a pointer to space suitably aligned for the storage of any type of object. If the size requested is 0, malloc returns NULL in normal circumstances. However, if the program was compiled with the defined _LINUX_SOURCE_COMPAT macro, malloc returns a valid pointer to a space of size 0. If the request cannot be satisfied for any reason, the malloc subroutine returns NULL. Hope that helps. Matthew -----Original Message----- From: Tom Lane [mailto:tgl@sss.pgh.pa.us] Sent: 01 October 2012 14:39 To: Carrington, Matthew (Produban) Cc: pgsql-general@postgresql.org Subject: Re: [GENERAL] pg_upgrade: out of memory "Carrington, Matthew (Produban)" <Matthew.Carrington@produban.co.uk> writes: > pg_dump: reading user-defined aggregate functions > Breakpoint 1, exit_horribly (modulename=0x0, fmt=0x10006a590 "out of memory\n") > at dumputils.c:1314 > 1314 dumputils.c: A file or directory in the path name does not exist.. > (gdb) bt > #0 exit_horribly (modulename=0x0, fmt=0x10006a590 "out of memory\n") at dumputils.c:1314 > #1 0x000000010003247c in pg_malloc (size=0) at dumpmem.c:47 > #2 0x0000000100008f54 in getAggregates (fout=0x11000bad0, numAggs=0xffffffffffff73c) > at pg_dump.c:3614 Oh! Given your previous comment about there not being any user-defined aggregates, I see what the problem is. AIX must be one of the platforms where malloc(0) is defined to return NULL rather than a pointer to a zero-size block. pg_malloc is not coping with that. A quick fix would be pg_malloc(size_t size) { void *tmp; tmp = malloc(size); - if (!tmp) + if (!tmp && size) { psql_error("out of memory\n"); exit(EXIT_FAILURE); } but I'm not sure if that's the best answer overall. Will take it up in -hackers. regards, tom lane Emails aren't always secure, and they may be intercepted or changed after they've been sent. Produban doesn't accept liability if this happens. If you think someone may have interfered with this email, please get in touch with the sender another way. This message and any documents attached to it do not create or change any contract unless otherwise specifically stated. Any views or opinions contained in this message are solely those of the author, and do not necessarily represent those of Produban, unless otherwise specifically stated and the sender is authorised to do so. Produban doesn't accept responsibility for damage caused by any viruses contained in this email or its attachments. Emails may be monitored. If you've received this email by mistake, please let the sender know at once that it's gone to the wrong person and then destroy it without copying, using, or telling anyone about its contents. Produban Servicios Informaticos Generales, S.L. (UK Branch). Registered office: Shenley Wood House, Chalkdell Drive, Shenley Wood, Milton Keynes MK5 6LA. Branch registration number BR 008486. Ref:[PDB#014]
pgsql-general by date: