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