1<?xml version="1.0"?> 2 3<valgrindoutput> 4 5<protocolversion>4</protocolversion> 6<protocoltool>helgrind</protocoltool> 7 8<preamble> 9 <line>Helgrind, a thread error detector</line> 10 <line>Copyright (C) XXXX-YYYY, and GNU GPL'd, by OpenWorks LLP et al.</line> 11 <line>Using Valgrind-X.Y.X and LibVEX; rerun with -h for copyright info</line> 12 <line>Command: ./tc06_two_races</line> 13</preamble> 14 15<pid>...</pid> 16<ppid>...</ppid> 17<tool>helgrind</tool> 18 19<args> 20 <vargv> 21 <exe>...</exe> 22 <arg>--command-line-only=yes</arg> 23 <arg>--memcheck:leak-check=no</arg> 24 <arg>--tool=helgrind</arg> 25 <arg>--read-var-info=yes</arg> 26 <arg>--xml=yes</arg> 27 <arg>--xml-fd=2</arg> 28 <arg>--log-file=/dev/null</arg> 29 </vargv> 30 <argv> 31 <exe>...</exe> 32 </argv> 33</args> 34 35<status> 36 <state>RUNNING</state> 37 <time>...</time> 38</status> 39 40<announcethread> 41 <hthreadid>1</hthreadid> 42 <isrootthread></isrootthread> 43</announcethread> 44 45<announcethread> 46 <hthreadid>2</hthreadid> 47 <stack> 48 <frame>...</frame> 49 <frame> 50 <ip>0x........</ip> 51 <obj>...</obj> 52 <fn>pthread_create</fn> 53 <dir>...</dir> 54 <file>hg_intercepts.c</file> 55 <line>...</line> 56 </frame> 57 <frame> 58 <ip>0x........</ip> 59 <obj>...</obj> 60 <fn>main</fn> 61 <dir>...</dir> 62 <file>tc06_two_races.c</file> 63 <line>26</line> 64 </frame> 65 </stack> 66</announcethread> 67 68<error> 69 <unique>...</unique> 70 <tid>...</tid> 71 <kind>Race</kind> 72 <xwhat> 73 <text>Possible data race during read of size 4 at 0x........ by thread #x</text> 74 <hthreadid>1</hthreadid> 75 </xwhat> 76 <stack> 77 <frame> 78 <ip>0x........</ip> 79 <obj>...</obj> 80 <fn>main</fn> 81 <dir>...</dir> 82 <file>tc06_two_races.c</file> 83 <line>31</line> 84 </frame> 85 </stack> 86 <xauxwhat> 87 <text>This conflicts with a previous write of size 4 by thread #x</text> 88 <hthreadid>2</hthreadid> 89 </xauxwhat> 90 <stack> 91 <frame> 92 <ip>0x........</ip> 93 <obj>...</obj> 94 <fn>child_fn</fn> 95 <dir>...</dir> 96 <file>tc06_two_races.c</file> 97 <line>14</line> 98 </frame> 99 <frame> 100 <ip>0x........</ip> 101 <obj>...</obj> 102 <fn>mythread_wrapper</fn> 103 <dir>...</dir> 104 <file>hg_intercepts.c</file> 105 <line>...</line> 106 </frame> 107 <frame>...</frame> 108 </stack> 109 <auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat> 110 <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat> 111</error> 112 113<error> 114 <unique>...</unique> 115 <tid>...</tid> 116 <kind>Race</kind> 117 <xwhat> 118 <text>Possible data race during write of size 4 at 0x........ by thread #x</text> 119 <hthreadid>1</hthreadid> 120 </xwhat> 121 <stack> 122 <frame> 123 <ip>0x........</ip> 124 <obj>...</obj> 125 <fn>main</fn> 126 <dir>...</dir> 127 <file>tc06_two_races.c</file> 128 <line>31</line> 129 </frame> 130 </stack> 131 <xauxwhat> 132 <text>This conflicts with a previous write of size 4 by thread #x</text> 133 <hthreadid>2</hthreadid> 134 </xauxwhat> 135 <stack> 136 <frame> 137 <ip>0x........</ip> 138 <obj>...</obj> 139 <fn>child_fn</fn> 140 <dir>...</dir> 141 <file>tc06_two_races.c</file> 142 <line>14</line> 143 </frame> 144 <frame> 145 <ip>0x........</ip> 146 <obj>...</obj> 147 <fn>mythread_wrapper</fn> 148 <dir>...</dir> 149 <file>hg_intercepts.c</file> 150 <line>...</line> 151 </frame> 152 <frame>...</frame> 153 </stack> 154 <auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat> 155 <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat> 156</error> 157 158<error> 159 <unique>...</unique> 160 <tid>...</tid> 161 <kind>Race</kind> 162 <xwhat> 163 <text>Possible data race during read of size 4 at 0x........ by thread #x</text> 164 <hthreadid>1</hthreadid> 165 </xwhat> 166 <stack> 167 <frame> 168 <ip>0x........</ip> 169 <obj>...</obj> 170 <fn>main</fn> 171 <dir>...</dir> 172 <file>tc06_two_races.c</file> 173 <line>35</line> 174 </frame> 175 </stack> 176 <xauxwhat> 177 <text>This conflicts with a previous write of size 4 by thread #x</text> 178 <hthreadid>2</hthreadid> 179 </xauxwhat> 180 <stack> 181 <frame> 182 <ip>0x........</ip> 183 <obj>...</obj> 184 <fn>child_fn</fn> 185 <dir>...</dir> 186 <file>tc06_two_races.c</file> 187 <line>18</line> 188 </frame> 189 <frame> 190 <ip>0x........</ip> 191 <obj>...</obj> 192 <fn>mythread_wrapper</fn> 193 <dir>...</dir> 194 <file>hg_intercepts.c</file> 195 <line>...</line> 196 </frame> 197 <frame>...</frame> 198 </stack> 199 <auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat> 200 <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat> 201</error> 202 203<error> 204 <unique>...</unique> 205 <tid>...</tid> 206 <kind>Race</kind> 207 <xwhat> 208 <text>Possible data race during write of size 4 at 0x........ by thread #x</text> 209 <hthreadid>1</hthreadid> 210 </xwhat> 211 <stack> 212 <frame> 213 <ip>0x........</ip> 214 <obj>...</obj> 215 <fn>main</fn> 216 <dir>...</dir> 217 <file>tc06_two_races.c</file> 218 <line>35</line> 219 </frame> 220 </stack> 221 <xauxwhat> 222 <text>This conflicts with a previous write of size 4 by thread #x</text> 223 <hthreadid>2</hthreadid> 224 </xauxwhat> 225 <stack> 226 <frame> 227 <ip>0x........</ip> 228 <obj>...</obj> 229 <fn>child_fn</fn> 230 <dir>...</dir> 231 <file>tc06_two_races.c</file> 232 <line>18</line> 233 </frame> 234 <frame> 235 <ip>0x........</ip> 236 <obj>...</obj> 237 <fn>mythread_wrapper</fn> 238 <dir>...</dir> 239 <file>hg_intercepts.c</file> 240 <line>...</line> 241 </frame> 242 <frame>...</frame> 243 </stack> 244 <auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat> 245 <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat> 246</error> 247 248 249<status> 250 <state>FINISHED</state> 251 <time>...</time> 252</status> 253 254<errorcounts>...</errorcounts> 255 256<suppcounts>...</suppcounts> 257 258</valgrindoutput> 259 260