# pthread
{
   Pthread 'fake' leak at glibc level
   Memcheck:Leak
   match-leak-kinds: possible
   fun:calloc
   fun:allocate_dtv
   fun:_dl_allocate_tls
   fun:allocate_stack
   fun:pthread_create@@GLIBC_2.2.5
   fun:mk_utils_worker_spawn
   fun:flb_worker_create
   fun:flb_log_init
   fun:flb_lib_worker
   fun:start_thread
   fun:clone
}

# dl-open suppressions
{
   Skip _dl_load_cache_lookup
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc
   fun:strdup
   fun:_dl_load_cache_lookup
   fun:_dl_map_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:do_dlopen
   fun:_dl_catch_error
   fun:dlerror_run
   fun:__libc_dlopen_mode
   fun:pthread_cancel_init
   fun:_Unwind_ForcedUnwind
}

{
   Skip _dl_new_object
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:malloc
   fun:_dl_new_object
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:do_dlopen
   fun:_dl_catch_error
   fun:dlerror_run
   fun:__libc_dlopen_mode
   fun:pthread_cancel_init
   fun:_Unwind_ForcedUnwind
}

{
   Skip _dl_check_map_versions
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:calloc
   fun:_dl_check_map_versions
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:do_dlopen
   fun:_dl_catch_error
   fun:dlerror_run
   fun:__libc_dlopen_mode
   fun:pthread_cancel_init
   fun:_Unwind_ForcedUnwind
   fun:__pthread_unwind
   fun:__do_cancel
   fun:pthread_exit
}

{
   Skip unwind->_dl_new_object
   Memcheck:Leak
   match-leak-kinds: reachable
   fun:calloc
   fun:_dl_new_object
   fun:_dl_map_object_from_fd
   fun:_dl_map_object
   fun:dl_open_worker
   fun:_dl_catch_error
   fun:_dl_open
   fun:do_dlopen
   fun:_dl_catch_error
   fun:dlerror_run
   fun:__libc_dlopen_mode
   fun:pthread_cancel_init
   fun:_Unwind_ForcedUnwind
}

# Thread Pool (multi-worker mode in output instance). When the thread pool interface
# starts, the flb_output_thread.c allocate a context. Valgrind complains about it
# but in reality it's only used inside the thread.
{
   <insert_a_suppression_name_here>
   Helgrind:Race
   fun:flb_output_thread_pool_flush
   fun:flb_output_task_flush
   fun:tasks_start
   fun:flb_engine_dispatch
   fun:flb_engine_flush
   fun:flb_engine_handle_event
   fun:flb_engine_start
   fun:flb_lib_worker
   obj:/usr/lib/x86_64-linux-gnu/valgrind/vgpreload_helgrind-amd64-linux.so
   fun:start_thread
   fun:clone
}