{
   <syslog error>
   Memcheck:Cond
   obj:/lib/libc-*.so
   ...
   fun:localtime_r
   fun:__vsyslog_chk
   fun:__syslog_chk
   fun:__connman_log_init
   ...
}
{
   <iconv open>
   Memcheck:Addr4
   obj:/lib/libc-*.so
   obj:/lib/libglib-2.0.so*
   fun:g_iconv_open
   ...
   fun:g_convert
   fun:g_locale_to_utf8
   fun:g_strerror
   fun:g_key_file_load_from_file
   ...
}
{
   <ioctl ADDRT/DELRT>
   Memcheck:Param
   ioctl(SIOCADDRT/DELRT)
   obj:/lib/ld-*.so
   ...
}
{
   <g_main_loop>
   Memcheck:Leak
   fun:memalign
   ...
   fun:g_slice_alloc
   ...
   fun:g_main_loop_new
   ...
}
{
   <g_option_context_parse>
   Memcheck:Leak
   ...
   fun:g_slice_alloc
   ...
   fun:g_option_context_parse
   ...
}
{
   <g_key_file_load_from_data>
   Memcheck:Leak
   ...
   fun:g_slice_alloc
   ...
   fun:g_key_file_load_from_data
   ...
}
{
   <g_key_file_new 1>
   Memcheck:Leak
   ...
   fun:g_slice_alloc
   ...
   fun:g_key_file_new
   ...
}
{
   <g_key_file_new 2>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_key_file_new
   fun:main
}
{
   <connman plugin cleanup>
   Memcheck:Leak
   ...
   fun:__connman_plugin_cleanup
   ...
}
{
   <cmd line option parsing>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_strdup
   fun:g_set_prgname
   fun:g_option_context_parse
   fun:main
}
{
   <dbus system bus setup 1>
   Memcheck:Leak
   ...
   fun:dbus_malloc*
   ...
   fun:g_dbus_setup_bus
   fun:main
}
{
   <dbus system bus setup 2>
   Memcheck:Leak
   ...
   fun:g_malloc*
   ...
   fun:dbus_connection_set_watch_functions
   fun:setup_bus
   ...
}
{
   <key file get charset>
   Memcheck:Leak
   ...
   fun:g_*alloc*
   ...
   fun:g_strerror
   fun:g_key_file_load_from_file
   fun:main
}
{
   <dbus disconnect func set>
   Memcheck:Leak
   ...
   fun:filter_data_get
   fun:g_dbus_add_signal_watch
   fun:g_dbus_set_disconnect_function
   fun:main
}
{
   <plugin dlopen>
   Memcheck:Leak
   ...
   fun:dlopen
   fun:__connman_plugin_init
   fun:main
}
{
   <dbus system bus setup 3>
   Memcheck:Leak
   ...
   fun:dbus_malloc0
   ...
   fun:dbus_parse_address
   ...
   fun:g_dbus_setup_bus
   fun:main
}
{
   <libdbus internals 1>
   Memcheck:Leak
   fun:*malloc
   ...
   obj:/lib/libdbus-1.so.3.5.3
}
{
   <dbus system bus setup 4>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:dbus_*alloc*
   ...
   fun:g_dbus_setup_bus
   fun:main
}
{
   <dbus system bus setup 5>
   Memcheck:Leak
   fun:calloc
   fun:g_malloc0
   ...
   fun:g_dbus_set_disconnect_function
   fun:main
}
{
   <dbus bus remove match>
   Memcheck:Leak
   fun:malloc
   fun:g_malloc
   fun:g_source_set_callback
   fun:g_timeout_add_full
   fun:g_timeout_add
   ...
   fun:dbus_pending_call_block
   fun:dbus_connection_send_with_reply_and_block
   ...
   fun:dbus_bus_remove_match
}
{
   <g_main_loop_run/new>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_main_loop_*
   fun:main
}
{
   <g_main_context_dispatch>
   Memcheck:Leak
   fun:*alloc
   ...
   fun:g_main_context_dispatch
}
{
   <libdbus internals 2>
   Memcheck:Leak
   fun:realloc
   fun:dbus_realloc
   ...
   fun:dbus_message_set_reply_serial
   fun:dbus_message_new_error
   ...
}
{
   <libdbus internals 3>
   Memcheck:Leak
   fun:realloc
   fun:dbus_realloc
   ...
   fun:dbus_message_new_signal
   ...
}
{
   <dbus_bus_register>
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:dbus_realloc
   ...
   fun:dbus_pending_call_block
   fun:dbus_connection_send_with_reply_and_block
   fun:dbus_bus_register
}
