[LLVMdev] Crashes on Windows 8 with >4k stack frames

Ephrim Khong dr.khong at gmail.com
Tue Jun 30 04:39:14 PDT 2015


Thanks, chkstk was a very good pointer of what might go wrong!  I assume 
LLVM optimizes the chain of alloca/store to a single alloca & memset. 
With stack growing down, memset working upwards, memset would touch a 
byte after the guarding page.  Note sure if that assumption is correct, 
but it would explain what we see.

Not sure yet if chkstk is emitted, will try to find out.

Thanks,
Eph

On 30.06.2015 12:17, Anton Korobeynikov wrote:
> Make sure the stack probes are emitted (__alloca / chkstk) and that
> they indeed do probe the memory.
>
> On Tue, Jun 30, 2015 at 12:21 PM, Ephrim Khong <dr.khong at gmail.com> wrote:
>> Hi All,
>>
>> we have an issue with our LLVM-based JIT compiler - executing the compiled
>> code corrupts memory (and subsequently crashes) if we alloca more than 4k of
>> variables (more than 511 8-byte ints). The same code works on Windows 7 (32
>> and 64 bit), Linux, MacOS. We compile LLVM and our program with Microsoft's
>> Visual Studio 2010. Both debug and release builds are affected.
>>
>> The variables are created en-block at the beginning of the function with
>> code looking like
>>
>> for (i=0; i<513; ++i) {
>>    AllocaInst *variable =
>>         mBuilder.CreateAlloca(Type::getInt64Ty(mContext),0,"");
>>    mBuilder.CreateStore(GetConstI("INT4_8",0),variable);
>> }
>>
>> We have not yet looked at the compiled machine code (same on Win 7 and 8, or
>> differs?). But the 4k limit made us suspicious, as there were some bug
>> reports - some still open - regarding this limit with LLVM [1,2].
>>
>> So the question is - before digging into this for more days - is there some
>> known issue with this, or does anyone have an idea what might go wrong?
>>
>> Thanks,
>> Eph
>>
>> [1] https://llvm.org/bugs/show_bug.cgi?id=2921
>> [2] https://llvm.org/bugs/show_bug.cgi?id=8919
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>




More information about the llvm-dev mailing list