[LLVMbugs] [Bug 18438] New: Trivial optimized code crashes on memory modification

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jan 9 23:47:38 PST 2014


            Bug ID: 18438
           Summary: Trivial optimized code crashes on memory modification
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: LLVM Codegen
          Assignee: unassignedclangbugs at nondot.org
          Reporter: vitaly at grechko.ru
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Created attachment 11859
  --> http://llvm.org/bugs/attachment.cgi?id=11859&action=edit
Slightly modified clang-interpreter example that reproduced the bug

First of all, thank you for great library!
I've been successfully using JIT based on clang/examples/clang-interpreter many
years but now found a huge stopper. I spent 3 weeks localizing the problem and
did my best of reducing the case.

Need Linux 64 bit (Windows is OK), LLVM versions tested 3.4,3.3,3.2.
If we write a function "f" in separate file crash_f.c that takes array of
integers and fills it (e.g. with zeros)

int f(int n,int* a) {
    for (int i=0; i<n; ++i) a[i] = 0;
    return 0;

then take tools/clang/examples/clang-interpeter, allocate array of integers
there (e.g. "new int[115]") then compile crash_f.c WITH OPTIMIZATION, take
pointer to "f" and pass this array to "f",

then compile clang-interpreter with -static option,
we got Segmentation Fault!

The problems disappeares if one of the conditions ommited:
- Args.push_back("-O2"); // add optimization to clang
- memory modification in function "f"
- compile clang-interpreter with -static
- Linux 64 bit

I prepared all the files for you to reproduce the bug:

How to reproduce:
1. LLVM version: 3.4
2. OS: any Linux (Ubuntu, Centos, ...)
3. Take slightly modified clang-interpreter example (attached main.cpp),
Makefile (attached), crash_f.c (attached)
4. Open Makefile and modify first 2 lines to your LLVM path and LLVM-build
5. run "make" which should build a "crash" executable
6. run "./crash -c crash_f.c" - should be Segmentation fault


You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140110/dac9f6a5/attachment.html>

More information about the llvm-bugs mailing list