Interesting....
The default "ultrasparc-iii-plus" cpu class uses cheetah-plus-mmu. so I changed
the cpu class to "ultrasparc-iii" in serengeti-6800-system.include since that
board uses cheetah-mmu. After that I recreated the checkpoint.
There is no SIGSEGV in flexus-3.0 so I am very happy at this point :)
But another SIGSEGV occurs in another location:
69 <ComponentManager.cpp:128> {0}- Loading state: sys-net-mapper
70 <ComponentManager.cpp:132> {0}- Done loading.
70 <ComponentManager.cpp:132> {0}- Done loading.
71 <WhiteBoxImpl.cpp:178> {5}- initializing idle_thread_t's, num procs=1 sys
width=1
71 <WhiteBoxImpl.cpp:178> {5}- initializing idle_thread_t's, num procs=1 sys
width=1
72 <WhiteBoxImpl.cpp:195> {5}- CPU[0] idle_thread_t point at paddr: p:000000000
72 <WhiteBoxImpl.cpp:195> {5}- CPU[0] idle_thread_t point at paddr: p:000000000
73 <mai_api.cpp:93> {5}- CPU[0] Registering for interrupts
73 <mai_api.cpp:93> {5}- CPU[0] Registering for interrupts
74 <ValueTracker.hpp:199> {5}- Registering DMA tracker
74 <ValueTracker.hpp:199> {5}- Registering DMA tracker
75 <ValueTracker.hpp:205> {5}- Creating DMA map object
75 <ValueTracker.hpp:205> {5}- Creating DMA map object
76 <ValueTracker.hpp:212> {5}- <undefined> Assertion failed: ((!(cpu0_mem))) :
Unable to connect DMA because there is no cpu0_mem
the backtrace for that is:
(gdb) backtrace
#0 0x00b71422 in __kernel_vsyscall ()
#1 0x0057a4d1 in *__GI_raise (sig=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2 0x0057d932 in *__GI_abort () at abort.c:92
#3 0x08b9f767 in Flexus::Dbg::AbortAction::process (this=0xa470470,
anEntry=...) at debug/action.cpp:177
#4 0x08ba0cec in for_each<__gnu_cxx::__normal_iterator<Flexus::Dbg::Action**,
std::vector<Flexus::Dbg::Action*, std::allocator<Flexus::Dbg::Action*> > >,
boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<3,
boost::lambda::function_action<3, boost::lambda::detail::unspecified> >,
boost::tuples::tuple<void (Flexus::Dbg::Action::* const)(Flexus::Dbg::Entry
const&), boost::lambda::lambda_functor<boost::lambda::placeholder<1> > const,
Flexus::Dbg::Entry const, boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type> > > > (this=0xa0ca768,
anEntry=...)
at /home/mahmood/boost_1_33_1/boost/lambda/detail/function_adaptors.hpp:246
#5 Flexus::Dbg::CompoundAction::process (this=0xa0ca768, anEntry=...) at
debug/action.cpp:94
#6 0x08bf5b03 in Flexus::Dbg::Target::process (this=0x9bcd7e0, anEntry=...) at
debug/target.cpp:56
#7 0x08ba478c in for_each<__gnu_cxx::__normal_iterator<Flexus::Dbg::Target**,
std::vector<Flexus::Dbg::Target*, std::allocator<Flexus::Dbg::Target*> > >,
boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<3,
boost::lambda::function_action<3, boost::lambda::detail::unspecified> >,
boost::tuples::tuple<void (Flexus::Dbg::Target::* const)(Flexus::Dbg::Entry
const&), boost::lambda::lambda_functor<boost::lambda::placeholder<1> > const,
Flexus::Dbg::Entry const, boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type,
boost::tuples::null_type, boost::tuples::null_type> > > > (this=0xa1a8fc0,
anEntry=...)
at /home/mahmood/boost_1_33_1/boost/lambda/detail/function_adaptors.hpp:246
#8 Flexus::Dbg::Debugger::process (this=0xa1a8fc0, anEntry=...) at
debug/debugger.cpp:72
Thanks,
// Naderan *Mahmood;
________________________________
From: Lotfi Kamran Pejman <[email protected]>
To: Mahmood Naderan <[email protected]>; simflex <[email protected]>
Sent: Tue, July 13, 2010 12:19:45 PM
Subject: RE: SIGSEGV in mm_free()
You should change "cheetah-plus" to "cheetah-mmu".
Pejman
________________________________________
From: Mahmood Naderan [[email protected]]
Sent: Tuesday, July 13, 2010 9:47 AM
To: simflex
Subject: Re: SIGSEGV in mm_free()
>It should be possible to fix this by modifying the simics file before booting
>simics
Which file should I modify?
// Naderan *Mahmood;
________________________________
From: Lotfi Kamran Pejman <[email protected]>
To: Mahmood Naderan <[email protected]>; simflex <[email protected]>
Sent: Tue, July 13, 2010 12:05:47 PM
Subject: RE: SIGSEGV in mm_free()
Mahmood,
I think the problem is the MMU type in the simics checkpoint. Probably you are
using "cheetah-plus" instead of the "cheetah-mmu". It should be possible to
fix
this by modifying the simics file before booting simics.
Pejman
________________________________________
From: Mahmood Naderan [[email protected]<mailto:[email protected]>]
Sent: Monday, July 12, 2010 7:38 PM
To: simflex
Subject: Re: SIGSEGV in mm_free()
Hi,
I get SIGSEGV in flexus-4.0 either, but I think the problematic function is
different from the previous version.
(gdb) backtrace
#0 *__GI___libc_free (mem=0x4011) at malloc.c:3687
#1 0x01eb9ce5 in Flexus::Simics::MMU::fm_init_mmu_from_simics (mmu=0xa5d3020,
chmmu=0xa368410)
at simics/sparcmmu.cpp:1461
#2 0x01ebb822 in Flexus::Simics::v9ProcessorImpl::initializeMMUs
(this=0xa563c20)
at simics/sparcmmu.cpp:91
#3 0x01988684 in microArchImpl (this=0xa563c10, options=..., _squash=...,
_redirect=...,
_changeState=..., _feedback=..., _signalStoreForwardingHit=...) at
microArch.cpp:185
#4 0x0197908b in nuArch::microArch::construct(nuArch::uArchOptions_t,
boost::function<void ()(Flexus::SharedTypes::eSquashCause),
std::allocator<void>
>, boost::function<void ()(Flexus::Core::MemoryAddress_<long long, true>,
Flexus::Core::MemoryAddress_<long long, true>), std::allocator<void> >,
boost::function<void ()(int, int), std::allocator<void> >, boost::function<void
()(boost::intrusive_ptr<Flexus::SharedTypes::BranchFeedback>),
std::allocator<void> >, boost::function<void ()(bool), std::allocator<void> >)
(options=..., squash=..., redirect=..., changeState=..., feedback=...,
signalStoreForwardingHit=...) at microArch.cpp:834
#5 0x01996f96 in nuArch::uArchComponent::initialize (this=0xa30d250) at
uArchImpl.cpp:303
#6 0x01d7609c in Flexus::Core::aux_::ComponentManagerImpl::initComponents
(this=0xa2ec950)
at components/ComponentManager.cpp:100
#7 0x01e803f3 in Flexus::Core::FlexusImpl::initializeComponents
(this=0xa0f0290)
at flexus.cpp:246
#8 0x01e8cbca in Flexus::Core::FlexusImpl::doLoad (this=0xa0f0290,
aDirName=...)
at flexus.cpp:538
#9 0x01e8cf8c in Flexus::Core::FlexusImpl::loadState (this=0xa0f0290,
aDirName=...)
at flexus.cpp:528
// Naderan *Mahmood;
________________________________
From: Lotfi Kamran Pejman
<[email protected]<mailto:[email protected]>>
To: Mahmood Naderan <[email protected]<mailto:[email protected]>>;
simflex
<[email protected]<mailto:[email protected]>>
Sent: Mon, July 12, 2010 5:05:00 PM
Subject: RE: SIGSEGV in mm_free()
Mahmood,
We need to reproduce this problem in Flexus 4. Please redo the same experiment
with Flexus 4 and send us steps to reproduce the problem.
Pejman
________________________________________
From: Mahmood Naderan
[[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>]
Sent: Saturday, July 10, 2010 4:22 PM
To: simflex
Subject: SIGSEGV in mm_free()
Hi all,
There is no problem with the image processing example (flexpoint+timing),
however when I want to do a timing simulation for my own workload (no problem
with flexpoint phase), I recevie SIGSEGV just before the simulation (I mean it
is not my code).
Flexus Simics simulator - Built as UniFlex.OoO v3.0
2 <ComponentManager.cpp:81> {0}- Instantiating system with a width factor of: 1
3 <uFetch.hpp:76> {0}- ufetch port FetchSnoopOut is not wired
4 <Cache.hpp:82> {0}- L1d port BackSideOut_Prefetch is not wired
5 <Cache.hpp:82> {0}- L2 port BackSideOut_Snoop is not wired
6 <Cache.hpp:82> {0}- L2 port BackSideOut_Prefetch is not wired
7 <wiring.cpp:89> {0}- initializing Parameters...
Warning: The 'flexus-UniFlex.OoO-v9-verb-gcc' module unexpectedly defined the
'Flexus' class
Warning: The 'flexus-UniFlex.OoO-v9-verb-gcc' module unexpectedly defined the
'SimicsInterface' class
8 <flexus.cpp:377> {0}- Set stat interval to : 50000
9 <flexus.cpp:382> {0}- Set region interval to : 50000
Opening debug output file: trace.out
Successfully parsed debug configurations from iteration.trace.cfg
10 <flexus.cpp:599> {0}- Switched to VVerb debugging.
11 <simics_command_manager.cpp:72> {0}- Call Gate: object flexus
12 <simics_command_manager.cpp:80> {0}- Call Gate: Parameter 1
13 <simics_command_manager.cpp:92> {0}- Call Gate: Parameter 2
14 <simics_command_manager.cpp:57> {0}- Call Gate: invoke 36
15 <simics_command_manager.cpp:188> {0}- Invoke: 36
WARNING: There is no parameter named "-L2:allow_offchip_stream_fetch"
16 <simics_command_manager.cpp:72> {0}- Call Gate: object flexus
17 <simics_command_manager.cpp:80> {0}- Call Gate: Parameter 1
18 <simics_command_manager.cpp:92> {0}- Call Gate: Parameter 2
19 <simics_command_manager.cpp:57> {0}- Call Gate: invoke 36
20 <simics_command_manager.cpp:188> {0}- Invoke: 36
WARNING: There is no parameter named "-L2:bypass_bus"
21 <simics_command_manager.cpp:72> {0}- Call Gate: object flexus
22 <simics_command_manager.cpp:80> {0}- Call Gate: Parameter 1
23 <simics_command_manager.cpp:57> {0}- Call Gate: invoke 26
24 <simics_command_manager.cpp:188> {0}- Invoke: 26
25 <flexus.cpp:521> {0}- Loading Flexus state from subdirectory flex_state_in
26 <ComponentManager.cpp:96> {0}- Initalizing components...
27 <FetchAddressGenerateImpl.cpp:92> {0}- Thread[0.0] connected to cpu0 Initial
PC: v:00001153c
Segmentation fault (SIGSEGV) in main thread
The simulation state has been corrupted. Simulation cannot continue.
the call stack is:
Program received signal SIGSEGV, Segmentation fault.
0x0021b8da in mm_free ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/bin/libsimics-common.so
(gdb) backtrace
#0 0x0021b8da in mm_free ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/bin/libsimics-common.so
#1 0x028efda5 in
Flexus::Simics::MMU::fm_init_mmu_from_simics(Flexus::Simics::MMU::mmu*,
Flexus::Simics::API::conf_object*) ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
#2 0x028f0c00 in Flexus::Simics::v9ProcessorImpl::initializeMMUs() ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
#3 0x025eb103 in nuArch::microArchImpl::microArchImpl(nuArch::uArchOptions_t,
boost::function<void ()(Flexus::SharedTypes::eSquashCause),
std::allocator<void>
>, boost::function<void ()(Flexus::Core::MemoryAddress_<long long, true>,
Flexus::Core::MemoryAddress_<long long, true>), std::allocator<void> >,
boost::function<void ()(int, int), std::allocator<void> >, boost::function<void
()(boost::intrusive_ptr<Flexus::SharedTypes::BranchFeedback>),
std::allocator<void> >) ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
#4 0x025d958a in nuArch::microArch::construct(nuArch::uArchOptions_t,
boost::function<void ()(Flexus::SharedTypes::eSquashCause),
std::allocator<void>
>, boost::function<void ()(Flexus::Core::MemoryAddress_<long long, true>,
Flexus::Core::MemoryAddress_<long long, true>), std::allocator<void> >,
boost::function<void ()(int, int), std::allocator<void> >, boost::function<void
()(boost::intrusive_ptr<Flexus::SharedTypes::BranchFeedback>),
std::allocator<void> >) ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/si---Type
<return> to continue, or q <return> to quit---
mics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
#5 0x025f9cbf in nuArch::uArchComponent::initialize() ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
#6 0x027bb78f in Flexus::Core::aux_::ComponentManagerImpl::initComponents() ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
#7 0x028c92c3 in Flexus::Core::FlexusImpl::initializeComponents() ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
#8 0x028d2479 in Flexus::Core::FlexusImpl::doLoad(std::string const&) ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
#9 0x028d27b5 in Flexus::Core::FlexusImpl::loadState(std::string const&) ()
from
/home/mahmood/flexus-3.0.0/flexus-test-app/runs/mahmood-timing-09Jul10-171358/flexpoint_000/simics/x86-linux/lib/libflexus_UniFlex.OoO_v9_verb_gcc.so
Is it related to simics or flexus?
Thanks,
// Naderan *Mahmood;
________________________________
From: Jason Zebchuk
<[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>
To: Mahmood Naderan
<[email protected]<mailto:[email protected]><mailto:[email protected]<mailto:[email protected]>>>
Sent: Fri, July 9, 2010 2:31:57 PM
Subject: Re: gdb option in flexus 3.0
On 10-07-09 9:10 AM, Mahmood Naderan wrote:
Hi Jason,
-gdb is not a valid option for run-job in flexus3.0. So how can I attach
run-timing-jobs to gdb? What should I do inorder to get simics pid?
// Naderan *Mahmood;
Hi Mahmood,
You have two options:
1. Use ps to determine the pid of simics (You can use ctrl-z to put the process
into the background shortly after it starts so you can attach early enough)
2. Modify or duplicate the <simics dir>/scripts/start-simics script so that the
last few lines look like:
#exec "$TARGETBIN" ${1+"$@"}
echo "$TARGETBIN" ${1+"$@"}
exec gdb "$TARGETBIN"
Jason