From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23320 invoked by alias); 8 Jan 2015 11:11:18 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 23286 invoked by uid 48); 8 Jan 2015 11:11:14 -0000 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug libstdc++/64535] Emergency buffer for exception allocation too small Date: Thu, 08 Jan 2015 11:11:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: libstdc++ X-Bugzilla-Version: 5.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-01/txt/msg00447.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64535 --- Comment #1 from Richard Biener --- It was pointed out that the pool is very large (even if reduced to 4 entries) and thus undesirable for TLS (would be 4k then). An alternative is to use a free list with variable size objects, initialized to just a single one of the emergency buffer size. You'd split the entry you pop off and only use a small portion of it (freeing would need to support merging and keeping the list sorted). Fragmentation might be an issue then, but for the case in question which is throwing std::bad_alloc (much smaller than 1024 bytes) it might increase the effective number of available objects enough.