[llvm-commits] [PATCH] Fix for bug in exception table allocation

Misha Brukman brukman at gmail.com
Fri Jan 4 16:44:47 PST 2013

On Wed, Dec 19, 2012 at 1:55 PM, Michael Muller <mmuller at enduden.com> wrote:

> See http://llvm.org/bugs/show_bug.cgi?id=13678 for more history.
> See also:
>   http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-August/052766.html
> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120910/150422.html
> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120917/150801.html
>   http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-December/056829.html
> When you run out of space writing to a buffer, the buffer management code
> simply stops writing at the end of the buffer.  It is the responsibility of
> the caller to verify that it has stayed in bounds and perform a retry with
> a larger memory estimate if not.  The function writing code does this, but
> the exception table code following it does not.  The end result is that
> exception table pointers can get registered pointing to invalid data,
> causing
> seg-faults when an exception is thrown.

Minor drive-by style comments (I wish there were a web UI for entering
these in context):

   - s/;;/;/
   - ASSERT_TRUE(actual == expected) --> ASSERT_EQ(expected, actual)
   - add space around binary operators (-, *, etc.), e.g.:

+      ActualSize = (CurBufferPtr-BufferBegin)*2;

   - fix arg alignment of "ActualSize" here:

+    while (true) {
+      BufferBegin = CurBufferPtr = MemMgr->startExceptionTable(F.getFunction(),
+                                                              ActualSize);

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130104/677d5be9/attachment.html>

More information about the llvm-commits mailing list