This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

stl_alloc.h: malloc_alloc out of memory handling abort()s instead of using exceptions


[This bug/behaviour was reported to me as a co-maintainer of the
Debian GNU/Linux GCC packages. Please Cc: 42622@bugs.debian.org in
your response so it gets archived in the Debian bugtracking system
(http://www.debian.org/Bugs/db/42/42622.html).]


        While coding some proof-of-concepts I've come around using a
vector<> of a big lot of elements. Wanted to push the limits and try
to recover possible failures. No way. The program was aborting on the
library's own. 

        That should not do. You want exceptions to be able to dictate
how the program should behave on error situations. The thing is at
stl_alloc.h, instead of throwing an exception on OOM, it was printing
the message "out of memory" to stderr and aborting. It is also
prepared for doing it via exceptions, so I think it should be the
default way.

        I think that behaviour should be made extensible to the whole
libstdc++ library, as as far as I know, exception support in GCC is
mature enough as to handle it [and I hope so :)]. That's the only way
to fully control a program's flow. Libraries should not dictate what
to do on error [I'm sure I'm not telling you anything new].

        The changes to make stl_alloc work ok with exceptions are:

diff -uN /usr/include/g\+\+-3/stl_alloc.h\~ /usr/include/g\+\+-3/stl_alloc.h
--- /usr/include/g++-3/stl_alloc.h~	Fri May  7 12:13:28 1999
+++ /usr/include/g++-3/stl_alloc.h	Sat Aug  7 04:16:22 1999
@@ -38,7 +38,7 @@
 // The allocation primitives are intended to allocate individual objects,
 // not larger arenas as with the original STL allocators.
 
-#if 0
+#if 1
 #   include <new>
 #   define __THROW_BAD_ALLOC throw bad_alloc()
 #elif !defined(__THROW_BAD_ALLOC)

        Thanks, anyway, for such nice packages for GCC & Co.

        Your happy Debian user,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]