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

Michael Muller mmuller at google.com
Tue Jan 8 14:43:16 PST 2013


New patch attached, incorporates Misha's comments and current trunk.


On Fri, Jan 4, 2013 at 7:44 PM, Misha Brukman <brukman at gmail.com> wrote:

> 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;
>
>
I'm sure I copied that from somewhere, but looking at the file now I see
nothing resembling such formatting.  Fixed.


>
>    - fix arg alignment of "ActualSize" here:
>
> +    while (true) {
> +      BufferBegin = CurBufferPtr = MemMgr->startExceptionTable(F.getFunction(),
> +                                                              ActualSize);
>
>
Done.


> Misha
>



-- 
Michael Muller
Ym9yZWQ/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130108/d179d1c8/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ExceptionTableOverflowFix-v5.patch
Type: application/octet-stream
Size: 4300 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130108/d179d1c8/attachment.obj>


More information about the llvm-commits mailing list