Thursday 9 August 2012

callq *(%r12,%rax,8)

This is an amd64 assembler instruction. I have just fixed a bug in
the PID provider where handling of this instruction is not
handled properly.

The Solaris DTrace pid provider (fasttrap) is very cool, but in porting
to Linux, I uncovered some instructions not being processed properly
leading to core dumps of traced apps. (Its a relief to be dealing
with core dumps and not kernel panics or kernel lock ups !)

I sent a mail to the solaris-dtrace mailing list - I dont know if I did
it right or if it will be accepted, but I thought I would highlight
this issue, since it affects DTrace on Intel (ie Solaris and Apple, and
quite likely FreeBSD).

I have more instruction mishandlings to investigate now.

I'll update the dtrace release over the weekend with this
and any other fixes I have in my holding area.

(Why this instruction? Because its an indirect subroutine call,
*without* any offset, instruction coding 41 ff 14 c4; DTrace handles
offset-based register indirection, but not non-offset based).

Post created by CRiSP v11.0.10a-b6436


1 comment:

  1. Maybe try the mailing list mentioned here:
    http://dtrace.org/blogs/mailing-list/

    ReplyDelete