Warning, /sdk/kde-dev-scripts/kde.supp is written in an unsupported language. File is not indexed.
0001 #
0002 # Some valgrind suppressions handy for ignoring stuff we don't care
0003 # about when valgrinding kde applications
0004 #
0005 # Library paths and versions from debian unstable, YMMV
0006 #
0007
0008 #
0009 # ld.so errors
0010 #
0011
0012 {
0013 strchr/decompose_rpath/_dl_map_object
0014 MemCheck:Cond
0015 fun:strchr
0016 fun:decompose_rpath
0017 fun:_dl_map_object
0018 }
0019
0020 {
0021 strlen/libc/_dl_catch_error
0022 MemCheck:Cond
0023 fun:strlen
0024 fun:_dl_open
0025 obj:*libdl-2*.so
0026 fun:_dl_catch_error*
0027 }
0028
0029 {
0030 addr8/dl_catch_error
0031 MemCheck:Addr8
0032 ...
0033 fun:_dl_catch_error*
0034 }
0035
0036 {
0037 strchr/libc/_dl_catch_error
0038 MemCheck:Cond
0039 fun:strchr
0040 obj:*libc-2.2.?.so
0041 fun:_dl_catch_error
0042 }
0043
0044 {
0045 strrchr/_dl_map_object_from_fd/_dl_map_object
0046 MemCheck:Cond
0047 fun:strrchr
0048 fun:_dl_map_object_from_fd
0049 fun:_dl_map_object
0050 }
0051
0052 # Needed with /lib/ld-2.12.1.so
0053 {
0054 index/expand_dynamic_string_token/_dl_map_object
0055 Memcheck:Cond
0056 fun:index
0057 fun:expand_dynamic_string_token
0058 fun:_dl_map_object
0059 }
0060
0061 {
0062 strlen/_dl_signal_cerror/_dl_lookup_symbol_internal
0063 Memcheck:Cond
0064 fun:strlen
0065 fun:_dl_signal_cerror
0066 fun:_dl_lookup_symbol_internal
0067 fun:*dlsym
0068 }
0069
0070 #
0071 # X library errors
0072 #
0073
0074 {
0075 libXft(Cond)
0076 MemCheck:Cond
0077 obj:/usr/X11R6/lib/libXft.so.1.1
0078 obj:/usr/X11R6/lib/libXft.so.1.1
0079 }
0080
0081 {
0082 write(buf)/libc/libICE
0083 Memcheck:Param
0084 write(buf)
0085 fun:__GI___libc_write
0086 fun:_IceTransWrite
0087 fun:_IceWrite
0088 fun:IceFlush
0089 }
0090
0091 {
0092 write(buf)/libc/libICE(nosymbols)
0093 Memcheck:Param
0094 write(buf)
0095 fun:__write_nocancel
0096 obj:/usr/lib*/libICE.so.*
0097 obj:/usr/lib*/libICE.so.*
0098 }
0099
0100 {
0101 write(buf)/libc/libICE(variant)
0102 Memcheck:Param
0103 write(buf)
0104 obj:/lib/libpthread-*.so
0105 obj:/usr/lib/libICE.so.*
0106 fun:_IceWrite
0107 fun:IceFlush
0108 }
0109
0110 {
0111 write(buf)/libc/libX11
0112 Memcheck:Param
0113 write(buf)
0114 fun:__GI___libc_write
0115 fun:_X11TransWrite
0116 fun:_XFlushInt
0117 fun:_XFlush
0118 }
0119
0120 {
0121 write(buf)/libc/libX11
0122 Memcheck:Param
0123 write(buf)
0124 fun:__GI___libc_write
0125 fun:_X11TransWrite
0126 fun:_XFlushInt
0127 fun:_XReply
0128 }
0129
0130 {
0131 writev(vector[...])
0132 Memcheck:Param
0133 writev(vector[...])
0134 fun:*writev
0135 obj:libX11.so.*
0136 fun:_X11TransWritev
0137 fun:_XSend
0138 }
0139
0140 #
0141 # SSL errors
0142 #
0143
0144 {
0145 various1/libcrypto
0146 Memcheck:Value4
0147 obj:*libcrypto.so.0.9.7
0148 }
0149
0150 {
0151 various2/libcrypto
0152 Memcheck:Cond
0153 obj:*libcrypto.so.0.9.7
0154 }
0155
0156 {
0157 ssl3_read_bytes1/libssl
0158 Memcheck:Cond
0159 fun:memcpy
0160 fun:ssl3_read_bytes
0161 }
0162
0163 {
0164 ssl3_read_bytes2/libssl
0165 Memcheck:Cond
0166 fun:ssl3_read_bytes
0167 }
0168
0169 {
0170 ssl3_get_message/libssl
0171 Memcheck:Cond
0172 fun:ssl3_get_message
0173 }
0174
0175 # zlib-1.2.x uses uninitialised memory in some tricky way which
0176 # apparently is harmless (it must amount to a vectorised while-loop,
0177 # nothing else makes sense). Fools Memcheck though. See the mentioned
0178 # URL for details.
0179
0180 # Valgrind has this in default.supp but only for deflate, not for uncompress/inflateInit2
0181 {
0182 zlib-1.2.x trickyness (1): See http://www.zlib.net/zlib_faq.html#faq36
0183 Memcheck:Cond
0184 obj:/*lib*/libz.so.1.2.*
0185 ...
0186 fun:inflateInit2*
0187 }
0188
0189 # Qt uses the waitid syscall in strange ways, to detect forkfd support
0190 {
0191 sys_waitid from qtbase/src/3rdparty/forkfd/forkfd_linux.c
0192 Memcheck:Param
0193 waitid(infop)
0194 fun:syscall
0195 fun:_ZL10sys_waitidiiP9siginfo_tiP6rusage
0196 }
0197
0198 # Leakcheck suppressions
0199 {
0200 dlopen_worker_malloc
0201 Memcheck:Leak
0202 fun:malloc
0203 ...
0204 fun:dl_open_worker
0205 }
0206
0207 {
0208 dlopen_worker_calloc
0209 Memcheck:Leak
0210 fun:calloc
0211 ...
0212 fun:dl_open_worker
0213 }
0214
0215 {
0216 fontconfig_init
0217 Memcheck:Leak
0218 ...
0219 fun:FcInit
0220 }
0221
0222 # Helgrind suppressions
0223 # Most of them (apart from the first one) are probably real,
0224 # but they're deep inside Qt, and usually not what we want to see
0225 # when debugging a threading issue in a KDE application.
0226 {
0227 QMutex_qt4_unlock_false_race
0228 Helgrind:Race
0229 fun:_ZN6QMutex6unlockEv
0230 }
0231 {
0232 QMutex_qt4_lock_false_race
0233 Helgrind:Race
0234 fun:_ZN6QMutex4lockEv
0235 }
0236 {
0237 # Qt4 qmutex_p.h, see maximumSpinTime declared as "volatile qint64"...
0238 QMutex_lockInternal_real_race
0239 Helgrind:Race
0240 fun:_ZN6QMutex12lockInternalEv
0241 }
0242 {
0243 # (Qt5) QMutex::lock checks a bool that is set by the QMutex constructor.
0244 # To use a mutex from another thread, some synchronization must have happened
0245 # already, which propagated this non-atomic write. Helgrind doesn't catch that.
0246 QMutex_isRecursive_false_race
0247 Helgrind:Race
0248 fun:_ZL11isRecursiveP10QMutexData
0249 fun:_ZN6QMutex4lockEv
0250 }
0251 {
0252 # Qt5: helgrind doesn't understand the atomic-operation calls inside QMutex
0253 Qt5_lockInternal
0254 Helgrind:Race
0255 ...
0256 fun:_ZN11QBasicMutex12lockInternalEv
0257 }
0258 {
0259 # Qt5: helgrind doesn't understand the atomic-operation calls inside QMutex
0260 Qt5_unlockInternal
0261 Helgrind:Race
0262 ...
0263 fun:_ZN11QBasicMutex14unlockInternalEv
0264 }
0265 {
0266 # Qt5: helgrind doesn't understand the atomic-operation calls inside QMutex
0267 Qt5_QMutex_unlock
0268 Helgrind:Race
0269 ...
0270 fun:_ZN6QMutex6unlockEv
0271 }
0272 {
0273 # Qt5: helgrind doesn't understand the atomic-operation calls inside QMutex
0274 Qt5_QMutex_lock
0275 Helgrind:Race
0276 ...
0277 fun:_ZN6QMutex4lockEv
0278 }
0279 {
0280 # Qt5: helgrind doesn't understand the atomic-operation calls
0281 Qt5_release_refcount
0282 Helgrind:Race
0283 ...
0284 fun:_ZN9QtPrivate8RefCount3refEv
0285 }
0286 {
0287 # Qt5 in release mode
0288 Qt5_release_basicmutex_isrecursive
0289 Helgrind:Race
0290 fun:_ZN11QBasicMutex11isRecursiveEv
0291 }
0292
0293 {
0294 # I don't really see a problem with fork+exit "exiting while still holding one mutex".
0295 # I think helgrind just doesn't notice that we forked before calling exit -> TODO: report hg bug
0296 Helgrind_Exit
0297 Helgrind:Misc
0298 fun:_Exit
0299 }
0300 {
0301 deallocate_stack
0302 Helgrind:Race
0303 fun:__deallocate_stack
0304 fun:start_thread
0305 fun:clone
0306 }
0307 {
0308 qt_thread_data_race
0309 Helgrind:Race
0310 fun:_ZL15set_thread_dataP11QThreadData
0311 fun:_ZN14QThreadPrivate5startEPv
0312 }
0313 {
0314 timerId_race_in_qt4
0315 Helgrind:Race
0316 fun:_ZN31QAbstractEventDispatcherPrivate14releaseTimerIdEi
0317 }
0318 {
0319 timerId_second_race_in_qt4
0320 Helgrind:Race
0321 fun:_ZN31QAbstractEventDispatcherPrivate15allocateTimerIdEv
0322 }
0323 {
0324 QPointer_race_in_qt4
0325 Helgrind:Race
0326 fun:_ZNK5QHashIP7QObjectPS1_E7isEmptyEv
0327 fun:_ZN11QMetaObject11removeGuardEPP7QObject
0328 }
0329
0330 # Helgrind suppressions for atomic operations.
0331 # This is because helgrind/drd cannot tell that they are atomic operations, on x86. The machine code is exactly the same.
0332 {
0333 QBasicAtomicPointer
0334 Helgrind:Race
0335 # catch load*, store*, and the qt4 operators
0336 ...
0337 fun:_*QBasicAtomicPointer*
0338 }
0339 {
0340 QBasicAtomicInt
0341 Helgrind:Race
0342 # catch Int and Integer, load, loadAcquire, store, storeRelease, testAndSet*, etc.
0343 ...
0344 fun:_*QBasicAtomicInt*
0345 }
0346 {
0347 Qt_5_9_atomic_ops
0348 Helgrind:Race
0349 ...
0350 fun:loadAcquire
0351 }
0352
0353 # Additional helgrind suppressions: these are actual atomic operations,
0354 # but if they conflict with a suppressed store(), helgrind will warn anyway -- https://bugs.kde.org/show_bug.cgi?id=317381
0355 {
0356 QBasicAtomicOps_fetchAndStore
0357 Helgrind:Race
0358 fun:_ZN15QBasicAtomicOps*fetchAndStore*
0359 }
0360 {
0361 QBasicAtomicOps_testAndSet
0362 Helgrind:Race
0363 fun:_ZN15QBasicAtomicOps*testAndSet*
0364 }
0365 {
0366 QBasicAtomicOps_ref
0367 Helgrind:Race
0368 fun:_ZN15QBasicAtomicOps*ref*
0369 }
0370
0371 ## Same for DRD (tested with Qt5 only)
0372 {
0373 QBasicAtomic_load_drd
0374 drd:ConflictingAccess
0375 # catch load and loadAcquire
0376 fun:_ZNK19QBasicAtomic*load*
0377 }
0378 {
0379 QBasicAtomic_store_drd
0380 drd:ConflictingAccess
0381 # catch store and storeRelease
0382 fun:_ZN19QBasicAtomic*store*
0383 }
0384 {
0385 QBasicAtomicOps_fetchAndStore_drd
0386 drd:ConflictingAccess
0387 fun:_ZN15QBasicAtomicOps*fetchAndStore*
0388 }
0389 {
0390 QBasicAtomicOps_testAndSet_drd
0391 drd:ConflictingAccess
0392 fun:_ZN15QBasicAtomicOps*testAndSet*
0393 }
0394
0395 # fixup QOrderedMutexLocker, see https://bugs.kde.org/show_bug.cgi?id=243232
0396 {
0397 QOrderedMutexLocker_relock_tryLock
0398 Helgrind:LockOrder
0399 fun:QMutex_tryLock_int_WRK
0400 fun:_ZN19QOrderedMutexLocker6relockEP6QMutexS1_
0401 }
0402
0403 {
0404 QOrderedMutexLocker_relock_lock
0405 Helgrind:LockOrder
0406 fun:QMutex_lock_WRK
0407 fun:_ZN19QOrderedMutexLocker6relockEP6QMutexS1_
0408 }
0409
0410 {
0411 QOrderedMutexLocker_relock2_tryLock
0412 Helgrind:LockOrder
0413 fun:QMutex_tryLock_int_WRK
0414 fun:_ZN19QOrderedMutexLocker6relockEv
0415 }
0416 {
0417 QOrderedMutexLocker_relock2_lock
0418 Helgrind:LockOrder
0419 fun:QMutex_lock_WRK
0420 fun:_ZN19QOrderedMutexLocker6relockEv
0421 }
0422
0423 # glib event loop integration, alternatively use QT_NO_GLIB=1
0424
0425 {
0426 glib_event_loop
0427 Helgrind:Race
0428 fun:g_private_get
0429 obj:/usr/lib/libglib-*
0430 fun:g_main_context_dispatch
0431 obj:/usr/lib/libglib-*
0432 fun:g_main_context_iteration
0433 }
0434
0435 # C atomic operations
0436
0437 {
0438 AO_store
0439 Helgrind:Race
0440 fun:AO_store
0441 }
0442 {
0443 AO_load
0444 Helgrind:Race
0445 fun:AO_load
0446 }
0447 {
0448 AO_compare_and_swap
0449 Helgrind:Race
0450 fun:AO_compare_and_swap
0451 }
0452
0453 # C++ atomic operations
0454
0455 {
0456 atomic_store
0457 Helgrind:Race
0458 fun:store
0459 fun:_ZN*St*atomic*
0460 }
0461 {
0462 atomic_load
0463 Helgrind:Race
0464 fun:load
0465 fun:_ZN*St*atomic*
0466 }