<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    I am debugging the memory issue that manifests itself like this:<br>
    <span class="Apple-style-span" style="border-collapse: separate;
      color: rgb(0, 0, 0); font-family: Times; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: 2; text-indent: 0px; text-transform:
      none; white-space: normal; widows: 2; word-spacing: 0px;
      font-size: medium;">
      <pre style="word-wrap: break-word; white-space: pre-wrap;">*** glibc detected *** ../app/app.OWS: free(): invalid pointer: 0x0ad391fc ***
======= Backtrace: =========
/lib/libc.so.6(+0x6c501)[0x4f6501]
/lib/libc.so.6(+0x6dd70)[0x4f7d70]
/lib/libc.so.6(cfree+0x6d)[0x4fae5d]
../app/app.OWS(_ZNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE5eraseESt17_Rb_tree_iteratorIjES7_+0x4b)[0x83de6eb]
/usr/local/llvm/svn-r128446/lib/libLLVM-3.0svn.so(+0x63db58)[0x1619b58]
======= Memory map: ========
00110000-00116000 r-xp 00000000 08:01 143119     /lib/libnss_compat-2.12.1.so
00116000-00117000 r--p 00006000 08:01 143119     /lib/libnss_compat-2.12.1.so
00117000-00118000 rw-p 00007000 08:01 143119     /lib/libnss_compat-2.12.1.so
00118000-00121000 r-xp 00000000 08:01 143794     /lib/libnss_nis-2.12.1.so
00121000-00122000 r--p 00008000 08:01 143794     /lib/libnss_nis-2.12.1.so
00122000-00123000 rw-p 00009000 08:01 143794     /lib/libnss_nis-2.12.1.so
00188000-00267000 r-xp 00000000 08:01 264760     /usr/lib/libstdc++.so.6.0.14
00267000-0026b000 r--p 000de000 08:01 264760     /usr/lib/libstdc++.so.6.0.14
0026b000-0026c000 rw-p 000e2000 08:01 264760     /usr/lib/libstdc++.so.6.0.14
</pre>
    </span><...skipped...><br>
    <span class="Apple-style-span" style="border-collapse: separate;
      color: rgb(0, 0, 0); font-family: Times; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: 2; text-indent: 0px; text-transform:
      none; white-space: normal; widows: 2; word-spacing: 0px;
      font-size: medium;">
      <pre style="word-wrap: break-word; white-space: pre-wrap;">0048a000-005e1000 r-xp 00000000 08:01 143094     /lib/libc-2.12.1.so
005e1000-005e3000 r--p 00157000 08:01 143094     /lib/libc-2.12.1.so
005e3000-005e4000 rw-p 00159000 08:01 143094     /lib/libc-2.12.1.so
</pre>
    </span><...skipped...><span class="Apple-style-span"
      style="border-collapse: separate; color: rgb(0, 0, 0);
      font-family: Times; font-style: normal; font-variant: normal;
      font-weight: normal; letter-spacing: normal; line-height: normal;
      orphans: 2; text-indent: 0px; text-transform: none; white-space:
      normal; widows: 2; word-spacing: 0px; font-size: medium;"></span><br>
    <span class="Apple-style-span" style="border-collapse: separate;
      color: rgb(0, 0, 0); font-family: Times; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: 2; text-indent: 0px; text-transform:
      none; white-space: normal; widows: 2; word-spacing: 0px;
      font-size: medium;">
      <pre style="word-wrap: break-word; white-space: pre-wrap;">b769b000-b789b000 r--p 00000000 08:01 260676     /usr/lib/locale/locale-archive
b789b000-b789f000 rw-p 00000000 00:00 0 
b78ad000-b78ae000 r--p 002a1000 08:01 260676     /usr/lib/locale/locale-archive
b78ae000-b78b1000 rw-p 00000000 00:00 0 
bfb85000-bfba6000 rw-p 00000000 00:00 0          [stack]
Stack dump:
0.      Running pass 'Linear Scan Register Allocator' on function '@my_function_0001'</pre>
    </span><br>
    When I am printing all allocations/deallocations I see that this
    address has indeed never been allocated.<br>
    <br>
    Stack trace during this error message is:<br>
    <span class="Apple-style-span" style="border-collapse: separate;
      color: rgb(0, 0, 0); font-family: Times; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: 2; text-indent: 0px; text-transform:
      none; white-space: normal; widows: 2; word-spacing: 0px;
      font-size: medium;">
      <pre style="word-wrap: break-word; white-space: pre-wrap;">#0  0x0012e416 in __kernel_vsyscall ()
#1  0x002ab941 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2  0x002aee42 in abort () at abort.c:92
#3  0x002e3305 in __libc_message (do_abort=2, fmt=0x3bb280 "*** glibc detected *** %s: %s: 0x%s ***\n")
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
#4  0x002ed501 in malloc_printerr (action=<value optimized out>, str=0x6 <Address 0x6 out of bounds>, ptr=0x92461fc)
    at malloc.c:6283
#5  0x002eed70 in _int_free (av=<value optimized out>, p=<value optimized out>) at malloc.c:4795
#6  0x002f1e5d in __libc_free (mem=0x92461fc) at malloc.c:3738
#7  0x083de6eb in xfree (this=0xa6bd3f8, __first=..., __last=...) at ../common/allocator.h:52
#8  operator delete (this=0xa6bd3f8, __first=..., __last=...) at ../common/allocator.h:72
#9  deallocate (this=0xa6bd3f8, __first=..., __last=...)
    at /usr/local/gcc/4.5.2/lib/gcc/i686-pc-linux-gnu/4.5.2/../../../../include/c++/4.5.2/ext/new_allocator.h:95
#10 _M_put_node (this=0xa6bd3f8, __first=..., __last=...)
    at /usr/local/gcc/4.5.2/lib/gcc/i686-pc-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_tree.h:363
#11 _M_destroy_node (this=0xa6bd3f8, __first=..., __last=...)
    at /usr/local/gcc/4.5.2/lib/gcc/i686-pc-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_tree.h:409
#12 erase (this=0xa6bd3f8, __first=..., __last=...)
    at /usr/local/gcc/4.5.2/lib/gcc/i686-pc-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_tree.h:1367
#13 std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>, std::allocator<unsigned int> >::erase (this=0xa6bd3f8, __first=..., __last=...)
    at /usr/local/gcc/4.5.2/lib/gcc/i686-pc-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_tree.h:1449
#14 0x00b52b58 in (anonymous namespace)::RALinScan::assignRegOrStackSlotAtInterval(llvm::LiveInterval*) ()
    from /usr/local/llvm/svn-r128446/lib/libLLVM-3.0svn.so
#15 0x0169dc00 in llvm::X86::GR32RegClass () from /usr/local/llvm/svn-r128446/lib/libLLVM-3.0svn.so</pre>
    </span><br class="Apple-interchange-newline">
    Problem occurs when I am attempting to run a large module in JIT,
    from ExecutionEngine::runFunction, after static constructors have
    succeeded. <br>
    EngineKind=1, OptLevel=3. When I change OptLevel to 0 problem
    disappears.<br>
    llvm::NoFramePointerElim is true. When I change this to false
    problem disappears.<br>
    <br>
    I can't supply the whole module in a test case, it depends on many
    external functions and contains a lot of irrelevant information.<br>
    <br>
    My question is somewhat vague. Can anyone identify the problem by
    just looking at the code in and around this function? Someone must
    be placing unallocated address in STL map.<br>
    <br>
    On the other hand, how can I run just this single function through
    those methods that cause the problem:
    ::RALinScan::assignRegOrStackSlotAtInterval <span
      class="Apple-style-span" style="border-collapse: separate; color:
      rgb(0, 0, 0); font-family: Times; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: 2; text-indent: 0px; text-transform:
      none; white-space: normal; widows: 2; word-spacing: 0px;
      font-size: medium;"></span> ? Can I still do this with the broken
    dependencies so that I can create a test case?<br>
    <br>
    Linux ubuntu 2.6.35-28-generic #49-Ubuntu SMP i686 GNU/Linux<br>
    <br>
    Yuri<span class="Apple-style-span" style="border-collapse: separate;
      color: rgb(0, 0, 0); font-family: Times; font-style: normal;
      font-variant: normal; font-weight: normal; letter-spacing: normal;
      line-height: normal; orphans: 2; text-indent: 0px; text-transform:
      none; white-space: normal; widows: 2; word-spacing: 0px;
      font-size: medium;"></span>
  </body>
</html>