Pin vs DynamoRIO for Dynamic Analyses for multithreaded code

1,672 views
Skip to first unread message

Santosh

unread,
Apr 24, 2012, 3:00:55 PM4/24/12
to DynamoRIO Users
Hi all,

I am designing dynamic analyses to detect/trigger errors in
multithreaded programs. I have been using Pin to design such
analyses.
However, few performance issues are forcing me to look at other binary
instrumentation frameworks.

My goal is to run Chrome and other real world software with my dynamic
analyses.

Any thoughts on using Pin vs DR for dynamic analyses? When should I
choose DR over PIN?

Santosh

Reid Kleckner

unread,
Apr 24, 2012, 3:39:39 PM4/24/12
to dynamor...@googlegroups.com
Always use DR, of course.  ;)

In seriousness, Derek used to have a blog post here which I thought did a good comparison:
But it's down now.  VMWare must have taken it down or forgotten it during a platform migration.

To quickly summarize, Pin gives you high-level API that lets you insert callbacks, and that's mostly it.

DR gives you the instruction stream for each basic block, and optionally traces for hot loops.  With DR you can insert, delete, reorder, and do whatever you want to the instruction stream.  This is much more powerful and you can achieve much better performance, but it involves much more programming effort.

---

Speaking of Chrome and race detectors, the Chromium project already runs Thread Sanitizer over the code, but it's fairly limited and the slowdowns are large.  It currently uses Valgrind (slow), and has lots of suppressions and bits of code they don't instrument.  The team in Moscow ported TSan to Pin for Windows support, but were frustrated with the performance and inability to fix bugs in a closed-source product.  They were going to port to DynamoRIO, but they've shifted focus to Address Sanitizer and redesigning their core TSan algorithms.  We hope to get TSan on DR sometime later this year.

Reid


Santosh

--
You received this message because you are subscribed to the Google Groups "DynamoRIO Users" group.
To post to this group, send email to dynamor...@googlegroups.com.
To unsubscribe from this group, send email to dynamorio-use...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/dynamorio-users?hl=en.


Reply all
Reply to author
Forward
0 new messages