Home | History | Annotate | Download | only in test
      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