Hi

I'm running a simple DTrace script that has the following clause:

pid$target::ReportTx:entry
/arg1 != 0 && this->numEntries != 0/
{
  printf("NumEntries: %lld\n", (long long)this->numEntries);
  this->entry = 
(ReadAcqEntry*)copyin((uintptr_t)&(this->rAcqArr[this->numEntries-1]),
                                      sizeof(ReadAcqEntry));

  this->pcInt = (uintptr_t)(this->entry->pc);
  this->instr = stringof(this->pcInt);
/*  @AcqTotals[this->instr] = sum(this->entry->acqNum);*/

  this->numEntries--;
}

And I'm getting an invalid address error for the instruction that uses the 
stringof operation.  (If I comment it out, the error goes away.):

dtrace: error on enabled probe ID 10 (ID 46110: 
pid25521:libSkySTMLib-STM-lazy-priv_STATS-m64-TxDbg.so:ReportTx:entry): invalid 
address (0x100004000) in action #4 at DIF offset 4

Please note that this->entry->pc is of type void*, but I converted it to 
uintptr_t just in case.  The DTrace manual says "Any expression that is a 
scalar type such as a pointer or integer or a scalar array address may be 
converted to string.", so I expected it to work.

Any idea what am I doing wrong?

Thanks,
Yossi
-- 
This message posted from opensolaris.org
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to