[LLVMdev] Sporadic "RealOffset <= INT32_MAX && RealOffset >= INT32_MIN" failures with MCJIT on Windows

Reid Kleckner rnk at google.com
Tue May 19 09:06:51 PDT 2015


That sounds like a PC-relative relocation failure. Usually this happens
when the relocation target is more than 2 GB away from the source. Try
using the large code model or tweaking the memory manager.

It turns out it's surprisingly hard to portably allocate some memory and
then allocate some more within a 2 GB offset of the first allocation in a
64-bit process. For various reasons that I don't understand, reserving 2 GB
of address space upfront and allocating from that is not workable for some
MCJIT clients.

On Tue, May 19, 2015 at 7:19 AM, Ramkumar Ramachandra <artagnon at gmail.com>
wrote:

> Hi,
>
> We are seeing sporadic crashes since we migrated to MCJIT on Win64. The
> same tests pass without issues on Mac64 and Linux64. The issue is this
> assertion failure in RuntimeDyldELF.c:
>
>   RealOffset <= INT32_MAX && RealOffset >= INT32_MIN
>
> I haven't managed to successfully catch the failure in Visual to try and
> debug it. Any tips on how to make progress?
>
> Oh, and we're on LLVM 3.5.
>
> Thanks.
>
> Ram
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150519/08445c4e/attachment.html>


More information about the llvm-dev mailing list