76 lines
1.8 KiB
Text
76 lines
1.8 KiB
Text
# Valgrind does not recognize the ashmen ioctl() calls on ARM64, so it assumes that a size
|
|
# parameter is a pointer.
|
|
{
|
|
ashmem ioctl
|
|
Memcheck:Param
|
|
ioctl(generic)
|
|
...
|
|
fun:ioctl
|
|
fun:ashmem_create_region
|
|
}
|
|
|
|
# It seems that on ARM64 Valgrind considers the canary value used by the Clang stack protector to
|
|
# be an uninitialized value.
|
|
{
|
|
jemalloc chunk_alloc_cache
|
|
Memcheck:Cond
|
|
fun:je_chunk_alloc_cache
|
|
}
|
|
|
|
# The VectorImpl class does not hold a pointer to the allocated SharedBuffer structure, but to the
|
|
# beginning of the data, which is effectively an interior pointer. Valgrind has limitations when
|
|
# dealing with interior pointers.
|
|
{
|
|
VectorImpl
|
|
Memcheck:Leak
|
|
match-leak-kinds:possible
|
|
fun:malloc
|
|
# The wildcards make this rule work both for 32-bit and 64-bit environments.
|
|
fun:_ZN7android12SharedBuffer5allocE?
|
|
fun:_ZN7android10VectorImpl5_growE??
|
|
}
|
|
|
|
# Clang/LLVM uses memcpy for *x = *y, even though x == y (which is undefined behavior). Ignore.
|
|
# b/29279679, https://llvm.org/bugs/show_bug.cgi?id=11763
|
|
{
|
|
MemCpySelfAssign
|
|
Memcheck:Overlap
|
|
fun:memcpy
|
|
...
|
|
fun:je_malloc_tsd_boot0
|
|
}
|
|
|
|
# Setenv is known-leaking when overwriting mappings. This is triggered by re-initializing
|
|
# ANDROID_DATA. Ignore all setenv leaks.
|
|
{
|
|
SetenvAndroidDataReinit
|
|
Memcheck:Leak
|
|
match-leak-kinds: definite
|
|
fun:malloc
|
|
fun:setenv
|
|
}
|
|
|
|
{
|
|
b/31275764
|
|
Memcheck:Leak
|
|
match-leak-kinds: definite
|
|
fun:malloc
|
|
...
|
|
fun:_ZN3art7Runtime17InitNativeMethodsEv
|
|
}
|
|
|
|
# art::MemMap::MapInternal() uses msync() to check for the existence of memory mappings.
|
|
{
|
|
art::MemMap::MapInternal()
|
|
Memcheck:Param
|
|
msync(start)
|
|
fun:msync
|
|
fun:_ZN3art6MemMap11MapInternalEPvmiiilb
|
|
}
|
|
|
|
{
|
|
process_vm_readv
|
|
Memcheck:Param
|
|
process_vm_readv(lvec[...])
|
|
fun:process_vm_readv
|
|
}
|