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_WRK</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>pthread_create@*</fn> 61 <dir>...</dir> 62 <file>hg_intercepts.c</file> 63 <line>...</line> 64 </frame> 65 <frame> 66 <ip>0x........</ip> 67 <obj>...</obj> 68 <fn>main</fn> 69 <dir>...</dir> 70 <file>tc06_two_races.c</file> 71 <line>26</line> 72 </frame> 73 </stack> 74 </announcethread> 75 76 <error> 77 <unique>...</unique> 78 <tid>...</tid> 79 <kind>Race</kind> 80 <xwhat> 81 <text>Possible data race during read of size 4 at 0x........ by thread #x</text> 82 <hthreadid>1</hthreadid> 83 </xwhat> 84 <stack> 85 <frame> 86 <ip>0x........</ip> 87 <obj>...</obj> 88 <fn>main</fn> 89 <dir>...</dir> 90 <file>tc06_two_races.c</file> 91 <line>31</line> 92 </frame> 93 </stack> 94 <xauxwhat> 95 <text>This conflicts with a previous write of size 4 by thread #x</text> 96 <hthreadid>2</hthreadid> 97 </xauxwhat> 98 <stack> 99 <frame> 100 <ip>0x........</ip> 101 <obj>...</obj> 102 <fn>child_fn</fn> 103 <dir>...</dir> 104 <file>tc06_two_races.c</file> 105 <line>14</line> 106 </frame> 107 <frame> 108 <ip>0x........</ip> 109 <obj>...</obj> 110 <fn>mythread_wrapper</fn> 111 <dir>...</dir> 112 <file>hg_intercepts.c</file> 113 <line>...</line> 114 </frame> 115 <frame>...</frame> 116 </stack> 117 <auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat> 118 <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat> 119 </error> 120 121 <error> 122 <unique>...</unique> 123 <tid>...</tid> 124 <kind>Race</kind> 125 <xwhat> 126 <text>Possible data race during write of size 4 at 0x........ by thread #x</text> 127 <hthreadid>1</hthreadid> 128 </xwhat> 129 <stack> 130 <frame> 131 <ip>0x........</ip> 132 <obj>...</obj> 133 <fn>main</fn> 134 <dir>...</dir> 135 <file>tc06_two_races.c</file> 136 <line>31</line> 137 </frame> 138 </stack> 139 <xauxwhat> 140 <text>This conflicts with a previous write of size 4 by thread #x</text> 141 <hthreadid>2</hthreadid> 142 </xauxwhat> 143 <stack> 144 <frame> 145 <ip>0x........</ip> 146 <obj>...</obj> 147 <fn>child_fn</fn> 148 <dir>...</dir> 149 <file>tc06_two_races.c</file> 150 <line>14</line> 151 </frame> 152 <frame> 153 <ip>0x........</ip> 154 <obj>...</obj> 155 <fn>mythread_wrapper</fn> 156 <dir>...</dir> 157 <file>hg_intercepts.c</file> 158 <line>...</line> 159 </frame> 160 <frame>...</frame> 161 </stack> 162 <auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat> 163 <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat> 164 </error> 165 166 <error> 167 <unique>...</unique> 168 <tid>...</tid> 169 <kind>Race</kind> 170 <xwhat> 171 <text>Possible data race during read of size 4 at 0x........ by thread #x</text> 172 <hthreadid>1</hthreadid> 173 </xwhat> 174 <stack> 175 <frame> 176 <ip>0x........</ip> 177 <obj>...</obj> 178 <fn>main</fn> 179 <dir>...</dir> 180 <file>tc06_two_races.c</file> 181 <line>35</line> 182 </frame> 183 </stack> 184 <xauxwhat> 185 <text>This conflicts with a previous write of size 4 by thread #x</text> 186 <hthreadid>2</hthreadid> 187 </xauxwhat> 188 <stack> 189 <frame> 190 <ip>0x........</ip> 191 <obj>...</obj> 192 <fn>child_fn</fn> 193 <dir>...</dir> 194 <file>tc06_two_races.c</file> 195 <line>18</line> 196 </frame> 197 <frame> 198 <ip>0x........</ip> 199 <obj>...</obj> 200 <fn>mythread_wrapper</fn> 201 <dir>...</dir> 202 <file>hg_intercepts.c</file> 203 <line>...</line> 204 </frame> 205 <frame>...</frame> 206 </stack> 207 <auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat> 208 <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat> 209 </error> 210 211 <error> 212 <unique>...</unique> 213 <tid>...</tid> 214 <kind>Race</kind> 215 <xwhat> 216 <text>Possible data race during write of size 4 at 0x........ by thread #x</text> 217 <hthreadid>1</hthreadid> 218 </xwhat> 219 <stack> 220 <frame> 221 <ip>0x........</ip> 222 <obj>...</obj> 223 <fn>main</fn> 224 <dir>...</dir> 225 <file>tc06_two_races.c</file> 226 <line>35</line> 227 </frame> 228 </stack> 229 <xauxwhat> 230 <text>This conflicts with a previous write of size 4 by thread #x</text> 231 <hthreadid>2</hthreadid> 232 </xauxwhat> 233 <stack> 234 <frame> 235 <ip>0x........</ip> 236 <obj>...</obj> 237 <fn>child_fn</fn> 238 <dir>...</dir> 239 <file>tc06_two_races.c</file> 240 <line>18</line> 241 </frame> 242 <frame> 243 <ip>0x........</ip> 244 <obj>...</obj> 245 <fn>mythread_wrapper</fn> 246 <dir>...</dir> 247 <file>hg_intercepts.c</file> 248 <line>...</line> 249 </frame> 250 <frame>...</frame> 251 </stack> 252 <auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat> 253 <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat> 254 </error> 255 256 257 <status> 258 <state>FINISHED</state> 259 <time>...</time> 260 </status> 261 262 <errorcounts>...</errorcounts> 263 264 <suppcounts>...</suppcounts> 265 266 </valgrindoutput> 267 268