Fix for ExecutionEngine buglet
Dale E. Martin
dale at the-martins.org
Tue Nov 12 11:20:38 PST 2013
Hello,
I have discovered a small bug in the ExecutionEngine. A proposed fix is
attached.
There is a place in the ExecutionEngine where it is not resilient to a
failed allocation. I believe the circumstances are:
* It is near the end of the buffer that has been allocated for code/data
* It is trying to allocate space for a large global, which is not
found in the globalAddressMap
* It tries to allocate it via "getMemoryForGV", but that fails after looking
at CurBufferPtr, so it returns NULL
* It does not check for a NULL return, and then it calls InitializeMemory
with a NULL destination which gets passed into memcpy
* It segvs before looking at CurBufferPtr to see if memory is exhausted and
retrying with more memory allocated
I don't know of a good way to unit test this but I have a repeatable
failure in some code I'm working on and this patch fixes it.
Let me know if you have more questions, comments, etc.
Thanks,
Dale
--
Dale E. Martin - dale at the-martins.org
http://the-martins.org/~dmartin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ee.patch
Type: text/x-diff
Size: 755 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131112/0d7e05c7/attachment.patch>
More information about the llvm-commits
mailing list