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