Re: [Gems-users] TransactionVersionManager.C assertion failed


Date: Thu, 6 Mar 2008 16:05:24 -0800
From: "Jim Leek" <jrleek@xxxxxxxxx>
Subject: Re: [Gems-users] TransactionVersionManager.C assertion failed


On Thu, Mar 6, 2008 at 2:57 PM, Jayaram Bobba <bobba@xxxxxxxxxxx> wrote:
m_maxLogSize is set in the beginning of a simulation when a thread calls
set_transaction_registers() in
$GEMS/microbenchmarks/transactional/common/transaction.c
It passes the log base address and maximum log size to ruby via a magic
call.


Ah, finally got something.  It seems that the register holding the max log size is getting wiped somehow.  I printed out the max log size before the assertion each time and got:

thread: 0 thread log size: 68 max log: 3200000
thread: 0 thread log size: 136 max log: 3200000
thread: 0 thread log size: 204 max log: 3200000
thread: 0 thread log size: 272 max log: 3200000
thread: 0 thread log size: 68 max log: 0
simics-common: log_tm/TransactionVersionManager.C:210: bool TransactionVersionManager::addLogEntry(int, int, Vector<uint32>&): Assertion `m_logSize[thread] < (m_maxLogSize[thread] * 1024)' failed.


So, it wasn't that the log was getting too big at all.  Hmmm.. does anyone know what might cause this or how to fix it?  Is it possible that we're building the benchmark wrong and it uses that register sometimes?

Jim
[← Prev in Thread] Current Thread [Next in Thread→]