1# Valgrind does not recognize the ashmen ioctl() calls on ARM64, so it assumes that a size 2# parameter is a pointer. 3{ 4 ashmem ioctl 5 Memcheck:Param 6 ioctl(generic) 7 ... 8 fun:ioctl 9 fun:ashmem_create_region 10} 11 12# It seems that on ARM64 Valgrind considers the canary value used by the Clang stack protector to 13# be an uninitialized value. 14{ 15 jemalloc chunk_alloc_cache 16 Memcheck:Cond 17 fun:je_chunk_alloc_cache 18} 19 20# The VectorImpl class does not hold a pointer to the allocated SharedBuffer structure, but to the 21# beginning of the data, which is effectively an interior pointer. Valgrind has limitations when 22# dealing with interior pointers. 23{ 24 VectorImpl 25 Memcheck:Leak 26 match-leak-kinds:possible 27 fun:malloc 28 # The wildcards make this rule work both for 32-bit and 64-bit environments. 29 fun:_ZN7android12SharedBuffer5allocE? 30 fun:_ZN7android10VectorImpl5_growE?? 31} 32 33# Clang/LLVM uses memcpy for *x = *y, even though x == y (which is undefined behavior). Ignore. 34# b/29279679, https://llvm.org/bugs/show_bug.cgi?id=11763 35{ 36 MemCpySelfAssign 37 Memcheck:Overlap 38 fun:memcpy 39 ... 40 fun:je_malloc_tsd_boot0 41} 42 43# Setenv is known-leaking when overwriting mappings. This is triggered by re-initializing 44# ANDROID_DATA. Ignore all setenv leaks. 45{ 46 SetenvAndroidDataReinit 47 Memcheck:Leak 48 match-leak-kinds: definite 49 fun:malloc 50 fun:setenv 51} 52 53{ 54 b/31275764 55 Memcheck:Leak 56 match-leak-kinds: definite 57 fun:malloc 58 ... 59 fun:_ZN3art7Runtime17InitNativeMethodsEv 60} 61 62# art::MemMap::MapInternal() uses msync() to check for the existence of memory mappings. 63{ 64 art::MemMap::MapInternal() 65 Memcheck:Param 66 msync(start) 67 fun:msync 68 fun:_ZN3art6MemMap11MapInternalEPvmiiilb 69} 70 71{ 72 process_vm_readv 73 Memcheck:Param 74 process_vm_readv(lvec[...]) 75 fun:process_vm_readv 76} 77