]> granicus.if.org Git - postgresql/commitdiff
Out-of-bounds memory allocation request sizes should be treated as just
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 6 Feb 2001 01:53:53 +0000 (01:53 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 6 Feb 2001 01:53:53 +0000 (01:53 +0000)
elog(ERROR) not an Assert trap, since we've downgraded out-of-memory to
elog(ERROR) not a fatal error.  Also, change the hard boundary from 256Mb
to 1Gb, just so that anyone who's actually got that much memory to spare
can play with TOAST objects approaching a gigabyte.

src/backend/utils/error/excid.c
src/backend/utils/mmgr/mcxt.c
src/include/utils/excid.h
src/include/utils/memutils.h

index bef1c00856b2827db1dcd8ef8969b4c5d98d899b..877610176a30683dd17dcfc86037961cbc99e388 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/excid.c,v 1.9 2001/01/24 19:43:15 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/error/Attic/excid.c,v 1.10 2001/02/06 01:53:53 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,18 +42,6 @@ Exception    BadArg = {"Bad Argument to Function Call"};
  *      Specific Recoverable Exceptions                                                                                 *
  *****************************************************************************/
 
-/*
- * BadAllocSize
- *             Indicates that an allocation request is of unreasonable size.
- */
-Exception      BadAllocSize = {"Too Large Allocation Request"};
-
-/*
- * ExhaustedMemory
- *             Indicates an dynamic memory allocation failed.
- */
-Exception      ExhaustedMemory = {"Memory Allocation Failed"};
-
 /*
  * Unimplemented
  *             Indicates a function call request requires unimplemented code.
index 0520cb6d0a67bb295b4bd1281a1bfd50dc8a9deb..ab8434a05817023980619103fa3f6f23c3880f53 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.26 2001/01/24 19:43:16 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.27 2001/02/06 01:53:53 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -417,8 +417,9 @@ MemoryContextAlloc(MemoryContext context, Size size)
 {
        AssertArg(MemoryContextIsValid(context));
 
-       LogTrap(!AllocSizeIsValid(size), BadAllocSize,
-                       ("size=%d [0x%x]", size, size));
+       if (!AllocSizeIsValid(size))
+               elog(ERROR, "MemoryContextAlloc: invalid request size %lu",
+                        (unsigned long) size);
 
        return (*context->methods->alloc) (context, size);
 }
@@ -474,8 +475,9 @@ repalloc(void *pointer, Size size)
 
        AssertArg(MemoryContextIsValid(header->context));
 
-       LogTrap(!AllocSizeIsValid(size), BadAllocSize,
-                       ("size=%d [0x%x]", size, size));
+       if (!AllocSizeIsValid(size))
+               elog(ERROR, "repalloc: invalid request size %lu",
+                        (unsigned long) size);
 
     return (*header->context->methods->realloc) (header->context,
                                                                                                 pointer, size);
index 88ba06dc2a8e2c8633f654b2b37a420554abc081..d1bbcbb21bdf023d086095fe004000d1df34e2a3 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: excid.h,v 1.8 2001/01/24 19:43:28 momjian Exp $
+ * $Id: excid.h,v 1.9 2001/02/06 01:53:52 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -18,8 +18,6 @@
 extern Exception FailedAssertion;
 extern Exception BadState;
 extern Exception BadArg;
-extern Exception BadAllocSize;
-extern Exception ExhaustedMemory;
 extern Exception Unimplemented;
 
 extern Exception CatalogFailure;/* XXX inconsistent naming style */
index 28cf6b3354990e6065f71582047e6bda8851b779..7ba0719dcb55897b439400ea58ec1db92cdca482 100644 (file)
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: memutils.h,v 1.41 2001/01/24 19:43:28 momjian Exp $
+ * $Id: memutils.h,v 1.42 2001/02/06 01:53:52 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 /*
  * MaxAllocSize
- *             Arbitrary limit on size of allocations.
+ *             Quasi-arbitrary limit on size of allocations.
  *
  * Note:
  *             There is no guarantee that allocations smaller than MaxAllocSize
  *             will succeed.  Allocation requests larger than MaxAllocSize will
  *             be summarily denied.
  *
- * XXX This should be defined in a file of tunable constants.
+ * XXX This is deliberately chosen to correspond to the limiting size
+ * of varlena objects under TOAST.  See VARATT_MASK_SIZE in postgres.h.
  */
-#define MaxAllocSize   ((Size) 0xfffffff)              /* 16G - 1 */
+#define MaxAllocSize   ((Size) 0x3fffffff)     /* 1 gigabyte - 1 */
 
 #define AllocSizeIsValid(size) (0 < (size) && (size) <= MaxAllocSize)