This is a vector/array bounds assertion. Apparently some code in flush is
accessing a Vector<L1Cache_Entry> with an offset too large for the specified
size of the vector. As a first step, track down places were vectors are indexed
in your call stack -- or better yet, attach gdb when you get the assertion and
pop the call stack a few times to find the right spot.
Regards,
Dan
Mladen Nikitovic wrote:
> I have reproduced the error and this is the message I get from
> Simics/GEMS when I try to do the flush:
>
>
> simics> c
> before flush (8023)
> failed assertion 'index < m_size' at fn TYPE& Vector<TYPE>::ref(int)
> [with TYPE = L1Cache_Entry] in ../common/Vector.h:168
> failed assertion 'index < m_size' at fn TYPE& Vector<TYPE>::ref(int)
> [with TYPE = L1Cache_Entry] in ../common/Vector.h:168
> At this point you might want to attach a debug to the running and get to the
> crash site; otherwise press enter to continue
> PID: 3981
> Warning: Interrupt key pressed more than once.
> Pressing it again will force Simics back to the command prompt.
> This may corrupt the running simulation.
> Try waiting for Simics to stop first.
> USER INTERRUPT: Interrupt key pressed multiple times.
> Returning to prompt.
> simics>
>
>
> Hopefully this can help someone to shed some light on this matter.
>
> Best Regards,
> Mladen
>
> Mladen Nikitovic wrote:
>
>> Hi,
>>
>> I'm trying to implement a function that flushes the L1 caches. You can
>> see from my previous posts that I have arrived at a solution that
>> involves some augmentation of protocol code etc. But, the final thing is
>> actually implementing the flush in the Sequencer, which was supposed to
>> be done be walking the I and D-cache entries and sending invalidation
>> request via the mandatory queue. I have tried to do that but the
>> simulation crashes when I try call the flush at the point of shutting
>> down one of the processors.
>>
>> Implementation-wise, is there anything in the following function that
>> should change?
>>
>> Thanks.
>>
>> Regards,
>> Mladen
>>
>> void Sequencer::flushL1caches(int cpu)
>> {
>> Time latency = SEQUENCER_TO_CONTROLLER_LATENCY;
>> CacheMsg Imsg, Dmsg;
>> int i,j, Iassoc, Dassoc, Isets, Dsets;
>>
>> Imsg.setType(CacheRequestType_INVALIDATE);
>> Dmsg.setType(CacheRequestType_INVALIDATE);
>>
>> Isets =
>> m_chip_ptr->m_L1Cache_L1IcacheMemory_vec[m_version]->getCacheNumSets();
>> Dsets =
>> m_chip_ptr->m_L1Cache_L1DcacheMemory_vec[m_version]->getCacheNumSets();
>>
>> Iassoc =
>> m_chip_ptr->m_L1Cache_L1IcacheMemory_vec[m_version]->getCacheAssoc();
>> Dassoc =
>> m_chip_ptr->m_L1Cache_L1DcacheMemory_vec[m_version]->getCacheAssoc();
>>
>> for(i=0; i<Isets; i++) {
>> for(j=0; i<Iassoc; j++) {
>>
>> Imsg.setAddress(m_chip_ptr->m_L1Cache_L1IcacheMemory_vec[m_version]->getAddress(i,j));
>>
>> m_chip_ptr->m_L1Cache_mandatoryQueue_vec[m_version]->enqueue(Imsg,
>> latency);
>> }
>> }
>>
>> for(i=0; i<Dsets; i++) {
>> for(j=0; i<Dassoc; j++) {
>>
>> Dmsg.setAddress(m_chip_ptr->m_L1Cache_L1DcacheMemory_vec[m_version]->getAddress(i,j));
>>
>> m_chip_ptr->m_L1Cache_mandatoryQueue_vec[m_version]->enqueue(Dmsg,
>> latency);
>> }
>> }
>> }
>>
>> _______________________________________________
>> Gems-users mailing list
>> Gems-users@xxxxxxxxxxx
>> https://lists.cs.wisc.edu/mailman/listinfo/gems-users
>> Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.
>>
>>
>>
>
>
> _______________________________________________
> Gems-users mailing list
> Gems-users@xxxxxxxxxxx
> https://lists.cs.wisc.edu/mailman/listinfo/gems-users
> Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.
>
>
>
--
http://www.cs.wisc.edu/~gibson [esc]:wq!
------------------------------------------------------------------------
_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/" to your search.