> I will try with XACT_DEBUG_LEVEL=3.
It gives no other output.
>> I wouldn't worry too much about the zeros, since with ATMTP, the appropriate
>> values are not send to the profiler method (profileAbortTransaction() at
>> TransactionInterfaceManager.C). Having said that, it would be good to modify
>> the code to fix this issue and get more information about the exact PC where
>> your abort is happening.
>
> Then why does the simulation hang, instead of just aborting the
> transaction?
That at least I found:
|(gdb) list 121
|116 }
|117 }
|118 } else {
|119 // This is a linear histogram
|120 while (m_max >= (m_bins * m_binsize)) {
|121 for (int i = 0; i < m_bins/2; i++) {
|122 m_data[i] = m_data[i*2] + m_data[i*2 + 1];
|123 }
|124 for (int i = m_bins/2; i < m_bins; i++) {
|125 m_data[i] = 0;
|126 }
|127 m_binsize *= 2;
|128 }
|129 index = value/m_binsize;
|130 }
|131 assert(index >= 0);
|132 m_data[index]++;
|133 m_largest_bin = max(m_largest_bin, index);
|134 }
|135
|(gdb) print m_max
|$7 = 6826445428
|(gdb) print m_bins
|$8 = 50
|(gdb) print m_binsize
|$9 = 0
So, m_binsize was *2ed out of range and is now 0. This creates a
wonderfull infinite loop.
|(gdb) backtrace
|#0 in Histogram::add (this=0x1bef9a0, value=6826445428) at common/Histogram.C:121
|#1 in Profiler::profileAbortTransaction (this=0x1beed00, id=0, tid=-1, xid=0, thread=0, delay=6826445428, abortingThread=0, abortingProc=0, addr= {m_address = 140737476288864}, pc={m_address = 140737476288848}) at profiler/Profiler.C:1794
|#2 in TransactionInterfaceManager::restartTransactionCallback (this=0x4787e00, thread=0) at log_tm/TransactionInterfaceManager.C:712
|#3 in ?? () from /opt/virtutech/simics-3.0.31/amd64-linux/lib/sparc-u3-turbo.so
|#4 in ?? () from /opt/virtutech/simics-3.0.31/amd64-linux/lib/sparc-u3-turbo.so
|#5 in ?? () from /opt/virtutech/simics-3.0.31/amd64-linux/lib/sparc-u3-turbo.so
Any ideas?
Thanks,
--
Philipp Tölke
Attachment:
signature.asc
Description: Digital signature
|