-
Hi |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
@Arhaan, Coyote does not give you automatically such a log as it does not support instrumenting every single read/write location (focuses on high-level race conditions instead, and to scale in large programs). Saying this, we have some experimental instrumentations (most are disabled by default) that check for a subset of race conditions (such as on collections, class field accesses, etc -- see all the Instead, one option you have is to do your own binary rewriting (e.g. using Mono.Cecil, seperate from Coyote's binary rewriting) which (1) adds read/write logs at the places you want them, and (2) invokes this Interleave API from Coyote to ask it to explore an interleaving at places you care about (e.g. before each read/write instruction). You can see many instrumentation examples how to achieve this either on the Mono.Cecil repository, or inside Coyote's binary rewriting logic. You could even build a local version of Coyote adding your own data race checking instrumentation pass alongside the existing ones in Coyote, and if it is generic enough, please consider contributing back via a PR as more people in the community might contribute from this! Then you invoke Coyote to run a systematic test that includes your logs and interleaving exploration points. That will probably get you closest to what you want. Hope this helps. |
Beta Was this translation helpful? Give feedback.
@Arhaan, Coyote does not give you automatically such a log as it does not support instrumenting every single read/write location (focuses on high-level race conditions instead, and to scale in large programs). Saying this, we have some experimental instrumentations (most are disabled by default) that check for a subset of race conditions (such as on collections, class field accesses, etc -- see all the
*RaceChecking*
options on https://microsoft.github.io/coyote/#ref/Microsoft.Coyote/Configuration/). But these might not serve the purpose you want, or have the logging you want, nor be complete (hence the experimental).Instead, one option you have is to do your own binary rewriting (e.g. u…