• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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