Mahmood,
Another piece of advice. If you're trying to get a good stack trace, it
will help to modify makefile.defs so that things are compiled with
-ggdb. In makefile.defs you should be able to easily locate the variable
that sets the flags used when compiling and linking the object files to
add this in.
You have the option of either recompiling everything when you add this
flag, or just recompiling the selected option.
Also, from my experience, when you get a seg fault when trying to do a
push call, it's usually because the index that you're pushing the
message to is out of range.
Jason
On 10-06-28 8:20 PM, Lotfi Kamran Pejman wrote:
Mahmood,
That is fairly simple. You only need to add "-gdb" option to your run_job
command.
Pejman
________________________________________
From: Mahmood Naderan [[email protected]]
Sent: Monday, June 28, 2010 4:06 PM
To: simflex
Subject: Re: SIGSEGV in FastCacheImpl.cpp (push function)
No problem with the original Branchpredictor.cpp. One question that I have how
can I get a call stack with GDB? I tried to catch the PID of the simics but
cannot because as soon as I run the run_job, I get the SIGSEGV so there is no
time to attach it to the GDB. I will then try to figure out the problem.
// Naderan *Mahmood;
________________________________
From: Lotfi Kamran Pejman<[email protected]>
To: Mahmood Naderan<[email protected]>; simflex<[email protected]>
Sent: Mon, June 28, 2010 4:49:35 PM
Subject: RE: SIGSEGV in FastCacheImpl.cpp (push function)
Mahmood,
Can you please redo the same experiment with Flexus 4.0 (Without your code)? If
the same problem exist, I will fix it. It is impossible for me to debug a code
without having the code :)
Pejman
________________________________________
From: Mahmood Naderan [[email protected]<mailto:[email protected]>]
Sent: Monday, June 28, 2010 11:41 AM
To: simflex
Subject: SIGSEGV in FastCacheImpl.cpp (push function)
Dear all,
I get a segmentation fault right after rub_job (for creating flexpoints). Using
the vverb level, I have attached the debug.out file. Some notes:
1- I have changed somethings in branchpredictor.cpp but have no problem in
flexus-3.0.
2- Using the original iface messages, the last message in the debug output
was<FastCacheImpl.cpp:294>. However I added an extra message after the "if"
statement to check if the bug is the conditional statement or not.
DBG_( Iface, Addr(aMessage.address()) (<< "Request Left Lookup... ));
if (snp_lookup != NULL) {
DBG_( Iface, Addr(aMessage.address()) (<< "Request Left Snoop Lookup... ));
}
DBG_( Iface, (<< "skipping if, exiting push" ) );
3- In the attached log, my message is shown and that means there is something wrong with whom that
call "push" function. If you search in the debug.out, you can see that "skipping if,
exiting push" is shown several times (lines 67, 75, 82, 90, 99, 112, 119, 126, 133, 140) and
the last time that it appear is in line 147.
I will appreciate anyone who explain what is actually going on in the
FastCacheImpl.cpp (push function). As far as I know, brachprediction messages
should be appeared after FastCacheImpl. So I don't think my changes are the
root of the problem.
Thanks,
// Naderan *Mahmood;