From 17f7587fe8c34034d1cc1d22c7d8be15ef03afb3 Mon Sep 17 00:00:00 2001 From: Alan Fitton Date: Fri, 16 Sep 2011 18:12:40 +0000 Subject: fix potential config mutex deadlock --- src/gtk.suppression | 294 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/trg-client.c | 10 +- src/trg-valgrind.sh | 3 +- 3 files changed, 301 insertions(+), 6 deletions(-) create mode 100644 src/gtk.suppression diff --git a/src/gtk.suppression b/src/gtk.suppression new file mode 100644 index 0000000..2cea334 --- /dev/null +++ b/src/gtk.suppression @@ -0,0 +1,294 @@ +# +# Valgrind suppression file for Gtk+ 2.12 +# +# Format specification: +# http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress +# + +# +# glibc Ubuntu Edgy +# + +{ + libc: getpwnam_r + Memcheck:Addr4 + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/tls/i686/cmov/libc-*.so + obj:/lib/ld-*.so + fun:__libc_dlopen_mode + fun:__nss_lookup_function + obj:/lib/tls/i686/cmov/libc-*.so + fun:__nss_passwd_lookup + fun:getpwnam_r + fun:g_get_any_init_do + fun:g_get_home_dir + fun:gtk_rc_add_initial_default_files + fun:_gtk_rc_init + fun:post_parse_hook + fun:g_option_context_parse + fun:gtk_parse_args + fun:gtk_init_check + fun:gtk_init +} + +{ + libc: getpwnam_r + Memcheck:Addr4 + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/tls/i686/cmov/libc-*.so + obj:/lib/ld-*.so + fun:__libc_dlopen_mode + fun:__nss_lookup_function + obj:/lib/tls/i686/cmov/libc-*.so + fun:__nss_passwd_lookup + fun:getpwnam_r + fun:g_get_any_init_do + fun:g_get_home_dir + fun:gtk_rc_add_initial_default_files + fun:_gtk_rc_init + fun:post_parse_hook + fun:g_option_context_parse + fun:gtk_parse_args + fun:gtk_init_check + fun:gtk_init +} + +{ + libc: getpwnam_r + Memcheck:Addr4 + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/tls/i686/cmov/libc-*.so + obj:/lib/ld-*.so + fun:__libc_dlopen_mode + fun:__nss_lookup_function + fun:__nss_next + fun:getpwnam_r + fun:g_get_any_init_do + fun:g_get_home_dir + fun:gtk_rc_add_initial_default_files + fun:_gtk_rc_init + fun:post_parse_hook + fun:g_option_context_parse + fun:gtk_parse_args + fun:gtk_init_check + fun:gtk_init +} + +{ + libc: getpwnam_r + Memcheck:Addr4 + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/ld-*.so + obj:/lib/tls/i686/cmov/libc-*.so + obj:/lib/ld-*.so + fun:__libc_dlopen_mode + fun:__nss_lookup_function + fun:__nss_next + fun:getpwnam_r + fun:g_get_any_init_do + fun:g_get_home_dir + fun:gtk_rc_add_initial_default_files + fun:_gtk_rc_init + fun:post_parse_hook + fun:g_option_context_parse + fun:gtk_parse_args + fun:gtk_init_check + fun:gtk_init +} + +# +# glibc Ubuntu feisty +# + +{ + getpwnam_r + Memcheck:Leak + fun:malloc + obj:/lib/libc-2.5.so + fun:__nss_database_lookup + obj:* + obj:* + fun:getpwnam_r +} + +# +# X +# + +{ + XSupportsLocale + Memcheck:Addr4 + obj:/lib/ld-*.so + obj:/lib/tls/i686/cmov/libdl-*.so + obj:/lib/ld-*.so + obj:/lib/tls/i686/cmov/libdl-*.so + fun:dlopen + obj:/usr/lib/libX11.so.6.2.0 + fun:_XlcDynamicLoad + fun:_XOpenLC + fun:_XlcCurrentLC + fun:XSupportsLocale + fun:_gdk_x11_initialize_locale + fun:_gdk_windowing_init + fun:gdk_pre_parse_libgtk_only + fun:pre_parse_hook + fun:g_option_context_parse + fun:gtk_parse_args + fun:gtk_init_check + fun:gtk_init + fun:main +} + + +{ + Xcursor + Memcheck:Leak + fun:malloc + obj:/usr/lib/libXcursor.so.1.0.2 + obj:/usr/lib/libXcursor.so.1.0.2 + fun:XcursorXcFileLoadImages + fun:XcursorFileLoadImages + fun:XcursorLibraryLoadImages + fun:XcursorShapeLoadImages + fun:XcursorTryShapeCursor + fun:XCreateGlyphCursor + fun:XCreateFontCursor + fun:gdk_cursor_new_for_display +} + +{ + XcursorGetTheme + Memcheck:Leak + fun:malloc + fun:/usr/lib/libX11.so.6.2.0 + fun:/usr/lib/libX11.so.6.2.0 + fun:XrmGetStringDatabase + fun:XGetDefault + fun:_XcursorGetDisplayInfo + fun:XcursorGetTheme +} + +{ + XOpenDisplay + Memcheck:Leak + fun:calloc + fun:XOpenDisplay +} + +{ + XOpenDisplay + Memcheck:Leak + fun:malloc + fun:XOpenDisplay +} + +# +# fontconfig +# + +{ + fontconfig + Memcheck:Leak + fun:realloc + fun:FcPatternObjectInsertElt + fun:FcPatternObjectAddWithBinding +} + +{ + pango_fc_font_map_load_fontset + Memcheck:Leak + fun:malloc + fun:FcLangSetCreate + fun:FcLangSetCopy + fun:FcValueSave + fun:FcPatternObjectAddWithBinding + fun:FcPatternObjectAdd + fun:FcFontRenderPrepare + fun:pango_fc_font_map_load_fontset + fun:pango_font_map_load_fontset +} + +{ + pango_font_map_load_fontset + Memcheck:Leak + fun:malloc + fun:FcPatternObjectAddWithBinding + fun:FcPatternObjectAdd + fun:FcFontRenderPrepare + fun:pango_fc_font_map_load_fontset + fun:pango_font_map_load_fontset +} + +{ + pango_fc_font_map_load_fontset + Memcheck:Leak + fun:malloc + fun:FcStrStaticName + fun:FcPatternObjectAddWithBinding + fun:FcPatternObjectAdd + fun:FcFontRenderPrepare + fun:pango_fc_font_map_load_fontset +} + +{ + pango_fc_font_map_list_families + Memcheck:Leak + fun:malloc + fun:FcStrStaticName + fun:FcPatternObjectAddWithBinding + fun:FcPatternAdd + fun:FcFontSetList + fun:FcFontList + fun:pango_fc_font_map_list_families +} + +# +# freetype +# + +{ + freetype FT_Init_FreeType + Memcheck:Leak + fun:malloc + obj:/usr/lib/libfreetype.so.6.3.10 + fun:ft_mem_qalloc + fun:ft_mem_alloc + fun:FT_New_Library + fun:FT_Init_FreeType +} + +# +# glib +# + +{ + glib g_rand_new + Memcheck:Leak + fun:calloc + fun:g_malloc0 + fun:g_rand_new_with_seed_array + fun:g_rand_new + fun:g_random_int +} diff --git a/src/trg-client.c b/src/trg-client.c index 55ae74e..f83b0e4 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -61,7 +61,7 @@ struct _TrgClientPrivate { gint64 updateSerial; JsonObject *session; gboolean ssl; - float version; + //float version; char *url; char *username; char *password; @@ -145,11 +145,11 @@ trg_client_new (void) return tc; } -float trg_client_get_version(TrgClient *tc) +/*float trg_client_get_version(TrgClient *tc) { TrgClientPrivate *priv = TRG_CLIENT_GET_PRIVATE(tc); return priv->version; -} +}*/ gint64 trg_client_get_rpc_version(TrgClient *tc) { @@ -164,7 +164,7 @@ void trg_client_set_session(TrgClient * tc, JsonObject * session) if (priv->session) json_object_unref(priv->session); - session_get_version(session, &priv->version); + //session_get_version(session, &priv->version); priv->session = session; @@ -204,9 +204,11 @@ int trg_client_populate_with_settings(TrgClient * tc) host = trg_prefs_get_string(prefs, TRG_PREFS_KEY_HOSTNAME, TRG_PREFS_PROFILE); if (!host) { + g_mutex_unlock(priv->configMutex); return TRG_NO_HOSTNAME_SET; } else if (strlen(host) < 1) { g_free(host); + g_mutex_unlock(priv->configMutex); return TRG_NO_HOSTNAME_SET; } diff --git a/src/trg-valgrind.sh b/src/trg-valgrind.sh index 030a840..aeff135 100644 --- a/src/trg-valgrind.sh +++ b/src/trg-valgrind.sh @@ -1,3 +1,2 @@ #!/bin/sh - -G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind --tool=memcheck --leak-check=full --leak-resolution=high --num-callers=20 --log-file=valgrind.log ./transmission-remote-gtk +G_SLICE=always-malloc G_DEBUG=gc-friendly,resident-modules valgrind --suppressions=gtk.suppression --tool=memcheck --leak-check=full --leak-resolution=high --num-callers=20 --log-file=valgrind.log ./transmission-remote-gtk -- cgit v1.2.3