You could try running with the SyscallVerbose debug flag and/or setting a
breakpoint in mmapFunc<X86Linux64> to see if/why the application seems to
be requesting such a ridiculously large amount of memory.  It could be
something like trying to read a 64-bit value where only a 32-bit value is
being provided.

Make sure you use gem5.debug for this if you're not already.

Steve

On Sat, Apr 28, 2012 at 9:10 AM, Nilay Vaish <ni...@cs.wisc.edu> wrote:

> Check why the size of the memory being asked for is so high? It might be
> that there is some problem with the way 'length' is found in mmapFunc(). Or
> it could be that the application did request a huge chunk of memory to be
> mmapped.
>
> --
> Nilay
>
>
> On Sat, 28 Apr 2012, Mahmood Naderan wrote:
>
>  Isn't there any idea about my finding?
>>
>>
>> On 4/27/12, Mahmood Naderan <mahmood...@gmail.com> wrote:
>>
>>> ok I think I find the bug. I used "continue" and "ctrl+c" multiple
>>> times to see if it stuck at a particular function. The backtrace
>>> shows:
>>>
>>>
>>> #0  0x00000000004dfee7 in __gnu_cxx::hashtable<std::**pair<unsigned long
>>> const, X86ISA::TlbEntry>, unsigned long, __gnu_cxx::hash<unsigned
>>> long>, std::_Select1st<std::pair<**unsigned long const,
>>> X86ISA::TlbEntry> >, std::equal_to<unsigned long>,
>>> std::allocator<X86ISA::**TlbEntry> >::_M_bkt_num_key (this=0x28b8970,
>>>    __key=@0x21d9a7c8, __n=50331653) at
>>> /usr/include/c++/4.4/backward/**hashtable.h:590
>>> #1  0x00000000004dfff9 in __gnu_cxx::hashtable<std::**pair<unsigned long
>>> const, X86ISA::TlbEntry>, unsigned long, __gnu_cxx::hash<unsigned
>>> long>, std::_Select1st<std::pair<**unsigned long const,
>>> X86ISA::TlbEntry> >, std::equal_to<unsigned long>,
>>> std::allocator<X86ISA::**TlbEntry> >::_M_bkt_num (this=0x28b8970,
>>>    __obj=..., __n=50331653) at
>>> /usr/include/c++/4.4/backward/**hashtable.h:594
>>> #2  0x00000000004df9c8 in __gnu_cxx::hashtable<std::**pair<unsigned long
>>> const, X86ISA::TlbEntry>, unsigned long, __gnu_cxx::hash<unsigned
>>> long>, std::_Select1st<std::pair<**unsigned long const,
>>> X86ISA::TlbEntry> >, std::equal_to<unsigned long>,
>>> std::allocator<X86ISA::**TlbEntry> >::resize (this=0x28b8970,
>>>    __num_elements_hint=25165844) at
>>> /usr/include/c++/4.4/backward/**hashtable.h:1001
>>> #3  0x00000000004df100 in __gnu_cxx::hashtable<std::**pair<unsigned long
>>> const, X86ISA::TlbEntry>, unsigned long, __gnu_cxx::hash<unsigned
>>> long>, std::_Select1st<std::pair<**unsigned long const,
>>> X86ISA::TlbEntry> >, std::equal_to<unsigned long>,
>>> std::allocator<X86ISA::**TlbEntry> >::find_or_insert (this=0x28b8970,
>>>    __obj=...) at /usr/include/c++/4.4/backward/**hashtable.h:789
>>> #4  0x00000000004deaca in __gnu_cxx::hash_map<unsigned long,
>>> X86ISA::TlbEntry, __gnu_cxx::hash<unsigned long>,
>>> std::equal_to<unsigned long>, std::allocator<X86ISA::**TlbEntry>
>>>
>>>> ::operator[] (this=0x28b8970,
>>>>
>>>    __key=@0x7fffffffba80) at /usr/include/c++/4.4/ext/hash_**map:217
>>> #5  0x00000000004daa68 in PageTable::map (this=0x28b8970,
>>> vaddr=47015569313792, paddr=103079288832,
>>>    size=5548434767986339840, clobber=false) at
>>> build/X86/mem/page_table.cc:82
>>> #6  0x000000000074b9c8 in Process::allocateMem (this=0x30be640,
>>> vaddr=46912496128000,
>>>    size=5548434871059525632, clobber=false) at
>>> build/X86/sim/process.cc:332
>>> #7  0x00000000007aba21 in mmapFunc<X86Linux64> (desc=0x2052fb8, num=9,
>>> p=0x30be640, tc=0x3331210)
>>>    at build/X86/sim/syscall_emul.hh:**1069
>>> #8  0x000000000073ca11 in SyscallDesc::doSyscall (this=0x2052fb8,
>>> callnum=9, process=0x30be640,
>>>    tc=0x3331210) at build/X86/sim/syscall_emul.cc:**69
>>> #9  0x00000000007516a0 in LiveProcess::syscall (this=0x30be640,
>>> callnum=9, tc=0x3331210)
>>>    at build/X86/sim/process.cc:590
>>> #10 0x0000000000c10ce3 in SimpleThread::syscall (this=0x33305d0,
>>> callnum=9)
>>>    at build/X86/cpu/simple_thread.**hh:384
>>>
>>>
>>>
>>> As you can see there is a problem with mmapFunc<X86Linux64> syscall
>>> which allocate memory through Process::allocateMem
>>> That is my understanding....
>>>
>>>
>>>
>>> On 4/27/12, Mahmood Naderan <mahmood...@gmail.com> wrote:
>>>
>>>> Is this useful?
>>>>
>>>> 339051500: system.cpu + A0 T0 : 0x83d48d.4  :   CALL_NEAR_I : wrip   ,
>>>> t7, t1 : IntAlu :
>>>> 339052000: system.cpu.icache: ReadReq (ifetch) 452f90 hit
>>>> 339052000: system.cpu + A0 T0 : 0x852f90    : mov       r10, rcx
>>>> 339052000: system.cpu + A0 T0 : 0x852f90.0  :   MOV_R_R : mov   r10,
>>>> r10, rcx : IntAlu :  D=0x0000000000000022
>>>> 339052500: system.cpu.icache: ReadReq (ifetch) 452f90 hit
>>>> 339052500: system.cpu + A0 T0 : 0x852f93    : mov       eax, 0x9
>>>> 339052500: system.cpu + A0 T0 : 0x852f93.0  :   MOV_R_I : limm   eax,
>>>> 0x9 : IntAlu :  D=0x0000000000000009
>>>> 339053000: system.cpu.icache: ReadReq (ifetch) 452f98 hit
>>>> ^C
>>>> Program received signal SIGINT, Interrupt.
>>>> 0x00000000004e0f90 in
>>>> std::__fill_n_a<__gnu_cxx::_**Hashtable_node<std::pair<**unsigned long
>>>> const, X86ISA::TlbEntry> >**, unsigned long,
>>>> __gnu_cxx::_Hashtable_node<**std::pair<unsigned long const,
>>>> X86ISA::TlbEntry> >*> (__first=0x7fff70017000, __n=4065295,
>>>> __value=@0x7fffffffb8d0)
>>>>    at /usr/include/c++/4.4/bits/stl_**algobase.h:758
>>>> 758             *__first = __tmp;
>>>> (gdb) ^CQuit
>>>> (gdb)
>>>>
>>>>
>>>>
>>>> On 4/27/12, Steve Reinhardt <ste...@gmail.com> wrote:
>>>>
>>>>> Perhaps you could fire off the run under gdb, and use the --debug-break
>>>>> flag to drop in to gdb at the tick where it seems to stop running.  If
>>>>> the
>>>>> simulation stops and memory blows up, it's almost like you're stuck in
>>>>> some
>>>>> subtle infinite loop with a memory allocation in it.  (You might have
>>>>> to
>>>>> continue just a little past there and hit ctrl-c before it dies to
>>>>> catch
>>>>> it
>>>>> in the middle of this loop.)
>>>>>
>>>>> On Fri, Apr 27, 2012 at 11:29 AM, Mahmood Naderan
>>>>> <mahmood...@gmail.com>wrote:
>>>>>
>>>>>  i searched for something similar (stoping the simulation when it reach
>>>>>> at a specific memory usage to prevent killing) but didn't find such
>>>>>> thing. Do you know?
>>>>>>
>>>>>> I also attached gdb. it doesn't show anything useful because lastly it
>>>>>> get killed.
>>>>>>
>>>>>> On 4/27/12, Gabe Black <gbl...@eecs.umich.edu> wrote:
>>>>>>
>>>>>>> Valgrind should tell you where the leaked memory was allocated. You
>>>>>>> may
>>>>>>> have to give it a command line option for that, or stop it before it
>>>>>>> gets itself killed.
>>>>>>>
>>>>>>> Gabe
>>>>>>>
>>>>>>> On 04/27/12 11:10, Steve Reinhardt wrote:
>>>>>>>
>>>>>>>> Can you attach gdb when it does this, see where it's at, and maybe
>>>>>>>> step through the code a bit to see what it's doing?
>>>>>>>>
>>>>>>>> On Fri, Apr 27, 2012 at 10:54 AM, Mahmood Naderan
>>>>>>>> <mahmood...@gmail.com <mailto:mahmood...@gmail.com>> wrote:
>>>>>>>>
>>>>>>>>    That was a guess. As I said, i turned on the debugger to see
>>>>>>>> when
>>>>>>>> it
>>>>>>>>    start eating the memory. As you can see the last messageit print
>>>>>>>> is:
>>>>>>>>    339069000: system.cpu + A0 T0 : 0x852f93.0  :   MOV_R_I : limm
>>>>>>>>
>>>>>>> eax,
>>>>>>
>>>>>>>    0x9 : IntAlu :  D=0x0000000000000009
>>>>>>>>    339069500: system.cpu.icache: set be: moving blk 452f80 to MRU
>>>>>>>>    339069500: system.cpu.icache: ReadReq (ifetch) 452f98 hit
>>>>>>>>
>>>>>>>>    Then no message is printed and I see, with top command, that the
>>>>>>>>    memory usage gos up and up until it consumes all memory.
>>>>>>>>
>>>>>>>>
>>>>>>>>    On 4/27/12, Nilay Vaish <ni...@cs.wisc.edu
>>>>>>>>    <mailto:ni...@cs.wisc.edu>> wrote:
>>>>>>>>   > How do you know the instruction at which the memory starts
>>>>>>>>    leaking? What
>>>>>>>>   > should we conclude from the instruction trace in your mail. I
>>>>>>>> am
>>>>>>>>    unable to
>>>>>>>>   > arrive at any conclusion from the valgrind report that you had
>>>>>>>>    attached.
>>>>>>>>   > Apart from the info on uninitialized values, I did not find
>>>>>>>> any
>>>>>>>>    useful
>>>>>>>>   > output produced by valgrind.
>>>>>>>>   >
>>>>>>>>   > --
>>>>>>>>   > Nilay
>>>>>>>>   >
>>>>>>>>   > On Fri, 27 Apr 2012, Mahmood Naderan wrote:
>>>>>>>>   >
>>>>>>>>   >> tonto with the test input uses about 4 GB and runs for about
>>>>>>>> 2
>>>>>>>>    seconds
>>>>>>>>   >> on a real machine.
>>>>>>>>   >>
>>>>>>>>   >> I also used the test input with gem5. However again after
>>>>>>>> tick
>>>>>>>>   >> 300000000, all the 30GB memory is used and then gem5 is
>>>>>>>> killed.
>>>>>>>> The
>>>>>>>>   >> same behaviour with ref input...
>>>>>>>>   >>
>>>>>>>>   >> I ran the following command:
>>>>>>>>   >> valgrind --tool=memcheck --leak-check=full
>>>>>>>> --track-origins=yes
>>>>>>>>   >> --suppressions=../util/**valgrind-suppressions
>>>>>>>>
>>>>>>> ../build/X86/m5.debug
>>>>>>
>>>>>>>   >> --debug-flags=Cache,ExecAll,**Bus,CacheRepl,Context
>>>>>>>>   >> --trace-start=339050000 ../configs/example/se.py -c
>>>>>>>>   >> tonto_base.amd64-m64-gcc44-nn --cpu-type=detailed -F 5000000
>>>>>>>>    --maxtick
>>>>>>>>   >> 10000000 --caches --l2cache --prog-interval=100000
>>>>>>>>   >>
>>>>>>>>   >>
>>>>>>>>   >> I also attach the report again. At the instruction that the
>>>>>>>>
>>>>>>> memory
>>>>>>
>>>>>>>   >> leak begins, you can see:
>>>>>>>>   >> ...
>>>>>>>>   >> 339066000: system.cpu + A0 T0 : 0x83d48d    : call   0x15afe
>>>>>>>>   >> 339066000: system.cpu + A0 T0 : 0x83d48d.0  :   CALL_NEAR_I :
>>>>>>>>
>>>>>>> limm
>>>>>>
>>>>>>>   >> t1, 0x15afe : IntAlu :  D=0x0000000000015afe
>>>>>>>>   >> 339066500: system.cpu + A0 T0 : 0x83d48d.1  :   CALL_NEAR_I :
>>>>>>>>
>>>>>>> rdip
>>>>>>
>>>>>>>   >> t7, %ctrl153,  : IntAlu :  D=0x000000000083d492
>>>>>>>>   >> 339067000: system.cpu.dcache: set 9a: moving blk 5aa680 to
>>>>>>>> MRU
>>>>>>>>   >> 339067000: system.cpu.dcache: WriteReq 5aa6b8 hit
>>>>>>>>   >> 339067000: system.cpu + A0 T0 : 0x83d48d.2  :   CALL_NEAR_I :
>>>>>>>>    st   t7,
>>>>>>>>   >> SS:[rsp + 0xfffffffffffffff8] : MemWrite :
>>>>>>>> D=0x000000000083d492
>>>>>>>>   >> A=0x7fffffffe6b8
>>>>>>>>   >> 339067500: system.cpu + A0 T0 : 0x83d48d.3  :   CALL_NEAR_I :
>>>>>>>>
>>>>>>> subi
>>>>>>
>>>>>>>   >> rsp, rsp, 0x8 : IntAlu :  D=0x00007fffffffe6b8
>>>>>>>>   >> 339068000: system.cpu + A0 T0 : 0x83d48d.4  :   CALL_NEAR_I :
>>>>>>>>    wrip   ,
>>>>>>>>   >> t7, t1 : IntAlu :
>>>>>>>>   >> 339068500: system.cpu.icache: set be: moving blk 452f80 to
>>>>>>>> MRU
>>>>>>>>   >> 339068500: system.cpu.icache: ReadReq (ifetch) 452f90 hit
>>>>>>>>   >> 339068500: system.cpu + A0 T0 : 0x852f90    : mov    r10, rcx
>>>>>>>>   >> 339068500: system.cpu + A0 T0 : 0x852f90.0  :   MOV_R_R : mov
>>>>>>>>    r10,
>>>>>>>>   >> r10, rcx : IntAlu :  D=0x0000000000000022
>>>>>>>>   >> 339069000: system.cpu.icache: set be: moving blk 452f80 to
>>>>>>>> MRU
>>>>>>>>   >> 339069000: system.cpu.icache: ReadReq (ifetch) 452f90 hit
>>>>>>>>   >> 339069000: system.cpu + A0 T0 : 0x852f93    : mov    eax, 0x9
>>>>>>>>   >> 339069000: system.cpu + A0 T0 : 0x852f93.0  :   MOV_R_I :
>>>>>>>> limm
>>>>>>>>      eax,
>>>>>>>>   >> 0x9 : IntAlu :  D=0x0000000000000009
>>>>>>>>   >> 339069500: system.cpu.icache: set be: moving blk 452f80 to
>>>>>>>> MRU
>>>>>>>>   >> 339069500: system.cpu.icache: ReadReq (ifetch) 452f98 hit
>>>>>>>>   >>
>>>>>>>>   >>
>>>>>>>>   >> What is your opinion then?
>>>>>>>>   >> Regards,
>>>>>>>>   >>
>>>>>>>>   >> On 4/27/12, Steve Reinhardt <ste...@gmail.com
>>>>>>>>    <mailto:ste...@gmail.com>> wrote:
>>>>>>>>   >>> Also, if you do run valgrind, use the
>>>>>>>>    util/valgrind-suppressions file to
>>>>>>>>   >>> suppress spurious reports.  Read the valgrind docs to see
>>>>>>>> how
>>>>>>>> this
>>>>>>>>   >>> works.
>>>>>>>>   >>>
>>>>>>>>   >>> Steve
>>>>>>>>   >>>
>>>>>>>>   > ______________________________**_________________
>>>>>>>>   > gem5-users mailing list
>>>>>>>>   > gem5-users@gem5.org <mailto:gem5-users@gem5.org>
>>>>>>>>   > 
>>>>>>>> http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
>>>>>>>>   >
>>>>>>>>
>>>>>>>>
>>>>>>>>    --
>>>>>>>>    // Naderan *Mahmood;
>>>>>>>>    ______________________________**_________________
>>>>>>>>    gem5-users mailing list
>>>>>>>>    gem5-users@gem5.org <mailto:gem5-users@gem5.org>
>>>>>>>>    
>>>>>>>> http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ______________________________**_________________
>>>>>>>> gem5-users mailing list
>>>>>>>> gem5-users@gem5.org
>>>>>>>> http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> // Naderan *Mahmood;
>>>>>> ______________________________**_________________
>>>>>> gem5-users mailing list
>>>>>> gem5-users@gem5.org
>>>>>> http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> --
>>>> // Naderan *Mahmood;
>>>>
>>>>
>>>
>>> --
>>> // Naderan *Mahmood;
>>>
>>>
>>
>> --
>> // Naderan *Mahmood;
>> ______________________________**_________________
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
>>
>>  ______________________________**_________________
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/**mailman/listinfo/gem5-users<http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users>
>
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to