Aug. 2nd, 2013

yigal_s: (general)
Valgrind is in essence a virtual machine using just-in-time (JIT) compilation techniques, including dynamic recompilation. Nothing from the original program ever gets run directly on the host processor. Instead, Valgrind first translates the program into a temporary, simpler form called Intermediate Representation (IR), which is a processor-neutral, SSA-based form. After the conversion, a tool (see below) is free to do whatever transformations it would like on the IR, before Valgrind translates the IR back into machine code and lets the host processor run it. Even though it could use dynamic translation (that is, the host and target processors are from different architectures), it doesn't. Valgrind recompiles binary code to run on host and target (or simulated) CPUs of the same architecture.

Мне стыдно, что не знал этого раньше. Эти черти перехватывают каждое обращение к памяти, на уровне базовой платформы инструментации (под которую можно писать клиенты-плагины), после чего поиск data-races - вполне решаемая задача, что собственно, уже и имплементировано. О всякой прочей фигне, вроде поиска дедлоков, мемликов и говорить не приходится. До кучи, решаются задачи поиска обращений к непроинициализированной памяти и выхода за пределы памяти проаллоцированной. Вот так. Одним махом.

Еще, правда, не понятно как они делают на этой платформе профайлер, раз уж они пределывают весь код процесса. Неужели же эмулируют конвеер процессора? ))).
yigal_s: (general)

The first lock-free style uses atomic variables (Java/.NET volatile, C++0x atomic) that enjoy special semantics with compiler and processor support. Consider an example similar to the aforementioned code, but written in a lock-free style, where myTurn is an atomic variable protecting x:


while( !myTurn ) { } // enter critical section (spin read)
... read/write x ...
myTurn = false; // exit critical section (write)


Это, меж прочим, аж в 2007-м году написал председатель комитета стандартизации С++, да не где-нибудь а в Dr.Dobbs
http://www.drdobbs.com/article/print?articleId=201804238&siteSectionName=cpp

А нам, моськам, остается только тявкать. Ну, или подвывать.
Хотя лично я, разумеется, в lock-free не понимаю ни черта практически. Да и в критических секциях последнее время как-то уж не шарю, ибо задор пропал, равно как и пропало ощущение осмысленности этих жонглирований кинжалами. Пока закапываться в Эрланг и Хаскель, по крайней мере тогда мои немножко излишние знания будут заведомо не применимы на практике.