Re: [Gems-users] ATMTP: Problem with strange Transaction-Aborts


Date: Wed, 15 Jul 2009 20:36:30 +0200
From: Philipp Tölke <toelke+gems@xxxxxxxxx>
Subject: Re: [Gems-users] ATMTP: Problem with strange Transaction-Aborts
> 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

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