1 # 2 # This is a valgrind suppression file that should be used when using valgrind. 3 # 4 # Here's an example of running valgrind: 5 # 6 # cd python/dist/src 7 # valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \ 8 # ./python -E -tt ./Lib/test/regrtest.py -u bsddb,network 9 # 10 # You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER 11 # to use the preferred suppressions with Py_ADDRESS_IN_RANGE. 12 # 13 # If you do not want to recompile Python, you can uncomment 14 # suppressions for PyObject_Free and PyObject_Realloc. 15 # 16 # See Misc/README.valgrind for more information. 17 18 # all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif 19 { 20 ADDRESS_IN_RANGE/Invalid read of size 4 21 Memcheck:Addr4 22 fun:Py_ADDRESS_IN_RANGE 23 } 24 25 { 26 ADDRESS_IN_RANGE/Invalid read of size 4 27 Memcheck:Value4 28 fun:Py_ADDRESS_IN_RANGE 29 } 30 31 { 32 ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64) 33 Memcheck:Value8 34 fun:Py_ADDRESS_IN_RANGE 35 } 36 37 { 38 ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value 39 Memcheck:Cond 40 fun:Py_ADDRESS_IN_RANGE 41 } 42 43 # 44 # Leaks (including possible leaks) 45 # Hmmm, I wonder if this masks some real leaks. I think it does. 46 # Will need to fix that. 47 # 48 49 { 50 Suppress leaking the GIL. Happens once per process, see comment in ceval.c. 51 Memcheck:Leak 52 fun:malloc 53 fun:PyThread_allocate_lock 54 fun:PyEval_InitThreads 55 } 56 57 { 58 Suppress leaking the GIL after a fork. 59 Memcheck:Leak 60 fun:malloc 61 fun:PyThread_allocate_lock 62 fun:PyEval_ReInitThreads 63 } 64 65 { 66 Suppress leaking the autoTLSkey. This looks like it shouldn't leak though. 67 Memcheck:Leak 68 fun:malloc 69 fun:PyThread_create_key 70 fun:_PyGILState_Init 71 fun:Py_InitializeEx 72 fun:Py_Main 73 } 74 75 { 76 Hmmm, is this a real leak or like the GIL? 77 Memcheck:Leak 78 fun:malloc 79 fun:PyThread_ReInitTLS 80 } 81 82 { 83 Handle PyMalloc confusing valgrind (possibly leaked) 84 Memcheck:Leak 85 fun:realloc 86 fun:_PyObject_GC_Resize 87 fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING 88 } 89 90 { 91 Handle PyMalloc confusing valgrind (possibly leaked) 92 Memcheck:Leak 93 fun:malloc 94 fun:_PyObject_GC_New 95 fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING 96 } 97 98 { 99 Handle PyMalloc confusing valgrind (possibly leaked) 100 Memcheck:Leak 101 fun:malloc 102 fun:_PyObject_GC_NewVar 103 fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING 104 } 105 106 # 107 # Non-python specific leaks 108 # 109 110 { 111 Handle pthread issue (possibly leaked) 112 Memcheck:Leak 113 fun:calloc 114 fun:allocate_dtv 115 fun:_dl_allocate_tls_storage 116 fun:_dl_allocate_tls 117 } 118 119 { 120 Handle pthread issue (possibly leaked) 121 Memcheck:Leak 122 fun:memalign 123 fun:_dl_allocate_tls_storage 124 fun:_dl_allocate_tls 125 } 126 127 ###{ 128 ### ADDRESS_IN_RANGE/Invalid read of size 4 129 ### Memcheck:Addr4 130 ### fun:PyObject_Free 131 ###} 132 ### 133 ###{ 134 ### ADDRESS_IN_RANGE/Invalid read of size 4 135 ### Memcheck:Value4 136 ### fun:PyObject_Free 137 ###} 138 ### 139 ###{ 140 ### ADDRESS_IN_RANGE/Use of uninitialised value of size 8 141 ### Memcheck:Addr8 142 ### fun:PyObject_Free 143 ###} 144 ### 145 ###{ 146 ### ADDRESS_IN_RANGE/Use of uninitialised value of size 8 147 ### Memcheck:Value8 148 ### fun:PyObject_Free 149 ###} 150 ### 151 ###{ 152 ### ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value 153 ### Memcheck:Cond 154 ### fun:PyObject_Free 155 ###} 156 157 ###{ 158 ### ADDRESS_IN_RANGE/Invalid read of size 4 159 ### Memcheck:Addr4 160 ### fun:PyObject_Realloc 161 ###} 162 ### 163 ###{ 164 ### ADDRESS_IN_RANGE/Invalid read of size 4 165 ### Memcheck:Value4 166 ### fun:PyObject_Realloc 167 ###} 168 ### 169 ###{ 170 ### ADDRESS_IN_RANGE/Use of uninitialised value of size 8 171 ### Memcheck:Addr8 172 ### fun:PyObject_Realloc 173 ###} 174 ### 175 ###{ 176 ### ADDRESS_IN_RANGE/Use of uninitialised value of size 8 177 ### Memcheck:Value8 178 ### fun:PyObject_Realloc 179 ###} 180 ### 181 ###{ 182 ### ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value 183 ### Memcheck:Cond 184 ### fun:PyObject_Realloc 185 ###} 186 187 ### 188 ### All the suppressions below are for errors that occur within libraries 189 ### that Python uses. The problems to not appear to be related to Python's 190 ### use of the libraries. 191 ### 192 193 { 194 Generic ubuntu ld problems 195 Memcheck:Addr8 196 obj:/lib/ld-2.4.so 197 obj:/lib/ld-2.4.so 198 obj:/lib/ld-2.4.so 199 obj:/lib/ld-2.4.so 200 } 201 202 { 203 Generic gentoo ld problems 204 Memcheck:Cond 205 obj:/lib/ld-2.3.4.so 206 obj:/lib/ld-2.3.4.so 207 obj:/lib/ld-2.3.4.so 208 obj:/lib/ld-2.3.4.so 209 } 210 211 { 212 DBM problems, see test_dbm 213 Memcheck:Param 214 write(buf) 215 fun:write 216 obj:/usr/lib/libdb1.so.2 217 obj:/usr/lib/libdb1.so.2 218 obj:/usr/lib/libdb1.so.2 219 obj:/usr/lib/libdb1.so.2 220 fun:dbm_close 221 } 222 223 { 224 DBM problems, see test_dbm 225 Memcheck:Value8 226 fun:memmove 227 obj:/usr/lib/libdb1.so.2 228 obj:/usr/lib/libdb1.so.2 229 obj:/usr/lib/libdb1.so.2 230 obj:/usr/lib/libdb1.so.2 231 fun:dbm_store 232 fun:dbm_ass_sub 233 } 234 235 { 236 DBM problems, see test_dbm 237 Memcheck:Cond 238 obj:/usr/lib/libdb1.so.2 239 obj:/usr/lib/libdb1.so.2 240 obj:/usr/lib/libdb1.so.2 241 fun:dbm_store 242 fun:dbm_ass_sub 243 } 244 245 { 246 DBM problems, see test_dbm 247 Memcheck:Cond 248 fun:memmove 249 obj:/usr/lib/libdb1.so.2 250 obj:/usr/lib/libdb1.so.2 251 obj:/usr/lib/libdb1.so.2 252 obj:/usr/lib/libdb1.so.2 253 fun:dbm_store 254 fun:dbm_ass_sub 255 } 256 257 { 258 GDBM problems, see test_gdbm 259 Memcheck:Param 260 write(buf) 261 fun:write 262 fun:gdbm_open 263 264 } 265 266 { 267 ZLIB problems, see test_gzip 268 Memcheck:Cond 269 obj:/lib/libz.so.1.2.3 270 obj:/lib/libz.so.1.2.3 271 fun:deflate 272 } 273 274 { 275 Avoid problems w/readline doing a putenv and leaking on exit 276 Memcheck:Leak 277 fun:malloc 278 fun:xmalloc 279 fun:sh_set_lines_and_columns 280 fun:_rl_get_screen_size 281 fun:_rl_init_terminal_io 282 obj:/lib/libreadline.so.4.3 283 fun:rl_initialize 284 } 285 286 ### 287 ### These occur from somewhere within the SSL, when running 288 ### test_socket_sll. They are too general to leave on by default. 289 ### 290 ###{ 291 ### somewhere in SSL stuff 292 ### Memcheck:Cond 293 ### fun:memset 294 ###} 295 ###{ 296 ### somewhere in SSL stuff 297 ### Memcheck:Value4 298 ### fun:memset 299 ###} 300 ### 301 ###{ 302 ### somewhere in SSL stuff 303 ### Memcheck:Cond 304 ### fun:MD5_Update 305 ###} 306 ### 307 ###{ 308 ### somewhere in SSL stuff 309 ### Memcheck:Value4 310 ### fun:MD5_Update 311 ###} 312 313 # 314 # All of these problems come from using test_socket_ssl 315 # 316 { 317 from test_socket_ssl 318 Memcheck:Cond 319 fun:BN_bin2bn 320 } 321 322 { 323 from test_socket_ssl 324 Memcheck:Cond 325 fun:BN_num_bits_word 326 } 327 328 { 329 from test_socket_ssl 330 Memcheck:Value4 331 fun:BN_num_bits_word 332 } 333 334 { 335 from test_socket_ssl 336 Memcheck:Cond 337 fun:BN_mod_exp_mont_word 338 } 339 340 { 341 from test_socket_ssl 342 Memcheck:Cond 343 fun:BN_mod_exp_mont 344 } 345 346 { 347 from test_socket_ssl 348 Memcheck:Param 349 write(buf) 350 fun:write 351 obj:/usr/lib/libcrypto.so.0.9.7 352 } 353 354 { 355 from test_socket_ssl 356 Memcheck:Cond 357 fun:RSA_verify 358 } 359 360 { 361 from test_socket_ssl 362 Memcheck:Value4 363 fun:RSA_verify 364 } 365 366 { 367 from test_socket_ssl 368 Memcheck:Value4 369 fun:DES_set_key_unchecked 370 } 371 372 { 373 from test_socket_ssl 374 Memcheck:Value4 375 fun:DES_encrypt2 376 } 377 378 { 379 from test_socket_ssl 380 Memcheck:Cond 381 obj:/usr/lib/libssl.so.0.9.7 382 } 383 384 { 385 from test_socket_ssl 386 Memcheck:Value4 387 obj:/usr/lib/libssl.so.0.9.7 388 } 389 390 { 391 from test_socket_ssl 392 Memcheck:Cond 393 fun:BUF_MEM_grow_clean 394 } 395 396 { 397 from test_socket_ssl 398 Memcheck:Cond 399 fun:memcpy 400 fun:ssl3_read_bytes 401 } 402 403 { 404 from test_socket_ssl 405 Memcheck:Cond 406 fun:SHA1_Update 407 } 408 409 { 410 from test_socket_ssl 411 Memcheck:Value4 412 fun:SHA1_Update 413 } 414 415 416