<!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>