Hi, All
      I am trying to run SMT/ARM O3CPU, however, segmentation fault happened 
when running two hello programs in 2 SMT in ARM/O3CPU.
I debugged using GDB and found that the problem is caused in:
-----------------
DefaultCommit<Impl>::squashAll(ThreadID tid)
{
    // If we want to include the squashing instruction in the squash,
    // then use one older sequence number.
    // Hopefully this doesn't mess things up.  Basically I want to squash
    // all instructions of this thread.
    InstSeqNum squashed_inst = rob->isEmpty() ?
        lastCommitedSeqNum[tid] : rob->readHeadInst(tid)->seqNum - 1;
}
------------------------
Rob->readHeadInst(tid) returns null, as a result, segmentation fault happened.
I think rob->isEmpty() should changed to rob->isEmpty(tid), is it right?

I changed to isEmpty(tid), however, program hanged for ever and the memory 
usage increased quickly possibly due to memory leakage.

I then continue to study the problem. I found that lsq is shared by all 
hardware threads, however, it does not have isEmpty(tid).

Can this possibly cause problems? I think that isEmpty(tid) should present in 
the classes of the shared resources.

Any help and suggestions are appreciated greatly.

Thanks!

Zhiguo

_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to