Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
tracker.1353
tracker-948805-Fix-tracker-miner-fs-SIGABRT.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File tracker-948805-Fix-tracker-miner-fs-SIGABRT.patch of Package tracker.1353
From 2d51272210787b2403ea0d9afa3acdc3357264be Mon Sep 17 00:00:00 2001 From: Felix Zhang <fezhang@suse.com> Date: Fri, 9 Oct 2015 17:56:35 +0800 Subject: [PATCH] bsc#948805: Fix tracker-miner-fs SIGABRT backported from bgo#737023 --- src/libtracker-bus/tracker-bus.vala | 13 ++-- tests/libtracker-sparql/Makefile.am | 5 +- tests/libtracker-sparql/tracker-gb-737023.c | 110 ++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 tests/libtracker-sparql/tracker-gb-737023.c diff --git a/src/libtracker-bus/tracker-bus.vala b/src/libtracker-bus/tracker-bus.vala index 17763d1..6adc08e 100644 --- a/src/libtracker-bus/tracker-bus.vala +++ b/src/libtracker-bus/tracker-bus.vala @@ -93,12 +93,15 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection { // receive query results via FD var mem_stream = new MemoryOutputStream (null, GLib.realloc, GLib.free); - yield mem_stream.splice_async (input, OutputStreamSpliceFlags.CLOSE_SOURCE | OutputStreamSpliceFlags.CLOSE_TARGET, Priority.DEFAULT, cancellable); - // wait for D-Bus reply - received_result = true; - if (dbus_res == null) { - yield; + try { + yield mem_stream.splice_async (input, OutputStreamSpliceFlags.CLOSE_SOURCE | OutputStreamSpliceFlags.CLOSE_TARGET, Priority.DEFAULT, cancellable); + } finally { + // wait for D-Bus reply + received_result = true; + if (dbus_res == null) { + yield; + } } var reply = bus.send_message_with_reply.end (dbus_res); diff --git a/tests/libtracker-sparql/Makefile.am b/tests/libtracker-sparql/Makefile.am index 84c0d6d..2048219 100644 --- a/tests/libtracker-sparql/Makefile.am +++ b/tests/libtracker-sparql/Makefile.am @@ -3,7 +3,8 @@ include $(top_srcdir)/Makefile.decl noinst_PROGRAMS = $(TEST_PROGS) TEST_PROGS += \ - tracker-test + tracker-test \ + tracker-gb-737023-test AM_CPPFLAGS = \ $(BUILD_CFLAGS) \ @@ -18,3 +19,5 @@ LDADD = \ $(LIBTRACKER_SPARQL_LIBS) tracker_test_SOURCES = tracker-test.c + +tracker_gb_737023_test_SOURCES = tracker-gb-737023.c diff --git a/tests/libtracker-sparql/tracker-gb-737023.c b/tests/libtracker-sparql/tracker-gb-737023.c new file mode 100644 index 0000000..816da6b --- /dev/null +++ b/tests/libtracker-sparql/tracker-gb-737023.c @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2014, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <locale.h> + +#include <gio/gio.h> + +#include <libtracker-sparql/tracker-sparql.h> + +static void +query_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) +{ + GCancellable *cancellable; + GError *error = NULL; + TrackerSparqlConnection *conn = TRACKER_SPARQL_CONNECTION (source_object); + TrackerSparqlCursor *cursor = NULL; + + cursor = tracker_sparql_connection_query_finish (conn, res, &error); + if (error != NULL) { + g_error_free (error); + } + + cancellable = g_cancellable_new (); + tracker_sparql_connection_query_async (conn, + "SELECT ?urn WHERE {?urn a rdfs:Resource}", + cancellable, + query_cb, + NULL); + g_cancellable_cancel (cancellable); + + g_object_unref (cancellable); + g_clear_object (&cursor); +} + +static gboolean +quit_cb (gpointer user_data) +{ + g_main_loop_quit ((GMainLoop *) user_data); + return G_SOURCE_REMOVE; +} + +static void +test_tracker_sparql_gb737023 (void) +{ + GCancellable *cancellable; + GError *error = NULL; + GMainLoop *loop; + TrackerSparqlConnection *conn; + + g_test_bug_base ("https://bugzilla.gnome.org/show_bug.cgi?id="); + g_test_bug ("737023"); + + g_setenv ("TRACKER_SPARQL_BACKEND", "bus", TRUE); + conn = tracker_sparql_connection_get (NULL, &error); + g_assert_no_error (error); + + loop = g_main_loop_new (NULL, FALSE); + + /* This should be enough. */ + g_timeout_add_seconds_full (G_PRIORITY_DEFAULT, + 2, + quit_cb, + loop, + (GDestroyNotify) g_main_loop_unref); + + cancellable = g_cancellable_new (); + tracker_sparql_connection_query_async (conn, + "SELECT ?urn WHERE {?urn a rdfs:Resource}", + cancellable, + query_cb, + NULL); + g_cancellable_cancel (cancellable); + g_main_loop_run (loop); + + g_object_unref (cancellable); + g_object_unref (conn); +} + +gint +main (gint argc, gchar **argv) +{ + gint result; + + setlocale (LC_ALL, ""); + + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/libtracker-sparql/tracker/gb737023", + test_tracker_sparql_gb737023); + + result = g_test_run (); + + return result; +} -- 2.1.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor