From owner-svn-ports-all@freebsd.org Fri Jan 26 21:26:58 2018 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 97D14ECA13A; Fri, 26 Jan 2018 21:26:58 +0000 (UTC) (envelope-from kwm@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4A55486811; Fri, 26 Jan 2018 21:26:58 +0000 (UTC) (envelope-from kwm@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2864F20F27; Fri, 26 Jan 2018 21:26:58 +0000 (UTC) (envelope-from kwm@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w0QLQv8A010940; Fri, 26 Jan 2018 21:26:57 GMT (envelope-from kwm@FreeBSD.org) Received: (from kwm@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w0QLQvAn010936; Fri, 26 Jan 2018 21:26:57 GMT (envelope-from kwm@FreeBSD.org) Message-Id: <201801262126.w0QLQvAn010936@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kwm set sender to kwm@FreeBSD.org using -f From: Koop Mast Date: Fri, 26 Jan 2018 21:26:57 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r460052 - in head/devel/glib20: . files X-SVN-Group: ports-head X-SVN-Commit-Author: kwm X-SVN-Commit-Paths: in head/devel/glib20: . files X-SVN-Commit-Revision: 460052 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Jan 2018 21:26:58 -0000 Author: kwm Date: Fri Jan 26 21:26:57 2018 New Revision: 460052 URL: https://svnweb.freebsd.org/changeset/ports/460052 Log: Update glib to 2.50.3. Also redo the kqueue patches. Now we patch files only once, and add some bits that got lost somewhere (which is probably my fault). Which where causing crashes when for example nautilus or thundar where monitoring directories and files where added/removed. PR: 199872 Added: head/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c (contents, props changed) head/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c (contents, props changed) Deleted: head/devel/glib20/files/patch-bug739424 head/devel/glib20/files/patch-bug778515 Modified: head/devel/glib20/Makefile head/devel/glib20/distinfo Modified: head/devel/glib20/Makefile ============================================================================== --- head/devel/glib20/Makefile Fri Jan 26 21:04:32 2018 (r460051) +++ head/devel/glib20/Makefile Fri Jan 26 21:26:57 2018 (r460052) @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= glib -PORTVERSION= 2.50.2 -PORTREVISION= 7 +PORTVERSION= 2.50.3 PORTEPOCH= 1 CATEGORIES= devel MASTER_SITES= GNOME @@ -39,7 +38,7 @@ INSTALL_TARGET= install-strip SHEBANG_FILES= */*.pl -LIBVERSION= 0.5000.2 +LIBVERSION= 0.5000.3 PLIST_SUB+= LIBVERSION=${LIBVERSION} glib_MAN= gtester.1 gtester-report.1 glib-gettextize.1 Modified: head/devel/glib20/distinfo ============================================================================== --- head/devel/glib20/distinfo Fri Jan 26 21:04:32 2018 (r460051) +++ head/devel/glib20/distinfo Fri Jan 26 21:26:57 2018 (r460052) @@ -1,3 +1,3 @@ -TIMESTAMP = 1491129093 -SHA256 (gnome2/glib-2.50.2.tar.xz) = be68737c1f268c05493e503b3b654d2b7f43d7d0b8c5556f7e4651b870acfbf5 -SIZE (gnome2/glib-2.50.2.tar.xz) = 7582312 +TIMESTAMP = 1516046336 +SHA256 (gnome2/glib-2.50.3.tar.xz) = 82ee94bf4c01459b6b00cb9db0545c2237921e3060c0b74cff13fbc020cfd999 +SIZE (gnome2/glib-2.50.3.tar.xz) = 7589284 Added: head/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/glib20/files/patch-gio_kqueue_gkqueuefilemonitor.c Fri Jan 26 21:26:57 2018 (r460052) @@ -0,0 +1,45 @@ +https://bugzilla.gnome.org/show_bug.cgi?id=739424 +https://bug739424.bugzilla-attachments.gnome.org/attachment.cgi?id=351191 + +--- gio/kqueue/gkqueuefilemonitor.c.orig 2018-01-15 21:00:32.535064000 +0100 ++++ gio/kqueue/gkqueuefilemonitor.c 2018-01-15 21:07:20.920334000 +0100 +@@ -29,6 +29,15 @@ + #include + #include + ++/* ++ * Because ``kqueue_sub'' are not refcounted, we need ++ * ensure no other thread is getting a reference to ++ * the element we want to free. ++ * ++ * That's why _kh_cancel_sub() must be called with ++ * this lock held to prevent a race. ++ */ ++G_LOCK_EXTERN (hash_lock); + + struct _GKqueueFileMonitor + { +@@ -80,9 +89,11 @@ g_kqueue_file_monitor_finalize (GObject *object) + + if (kqueue_monitor->sub) + { ++ G_LOCK (hash_lock); + _kh_cancel_sub (kqueue_monitor->sub); + _kh_sub_free (kqueue_monitor->sub); + kqueue_monitor->sub = NULL; ++ G_UNLOCK (hash_lock); + } + + if (kqueue_monitor->fallback) +@@ -181,9 +192,11 @@ g_kqueue_file_monitor_cancel (GFileMonitor *monitor) + + if (kqueue_monitor->sub) + { ++ G_LOCK (hash_lock); + _kh_cancel_sub (kqueue_monitor->sub); + _kh_sub_free (kqueue_monitor->sub); + kqueue_monitor->sub = NULL; ++ G_UNLOCK (hash_lock); + } + else if (kqueue_monitor->fallback) + { Added: head/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/glib20/files/patch-gio_kqueue_kqueue-helper.c Fri Jan 26 21:26:57 2018 (r460052) @@ -0,0 +1,81 @@ +This bug combines serveral patches: +https://bugzilla.gnome.org/show_bug.cgi?id=778515 +and +https://bugzilla.gnome.org/show_bug.cgi?id=739424 +https://bug739424.bugzilla-attachments.gnome.org/attachment.cgi?id=351191 + +--- gio/kqueue/kqueue-helper.c.orig 2018-01-15 21:22:08.234860000 +0100 ++++ gio/kqueue/kqueue-helper.c 2018-01-15 21:21:54.143656000 +0100 +@@ -43,7 +43,7 @@ static gboolean kh_debug_enabled = FALSE; + #define KH_W if (kh_debug_enabled) g_warning + + static GHashTable *subs_hash_table = NULL; +-G_LOCK_DEFINE_STATIC (hash_lock); ++G_LOCK_DEFINE (hash_lock); + + static int kqueue_descriptor = -1; + static int kqueue_socket_pair[] = {-1, -1}; +@@ -291,10 +291,10 @@ process_kqueue_notifications (GIOChannel *gioc, + + G_LOCK (hash_lock); + sub = (kqueue_sub *) g_hash_table_lookup (subs_hash_table, GINT_TO_POINTER (n.fd)); +- G_UNLOCK (hash_lock); + + if (sub == NULL) + { ++ G_UNLOCK (hash_lock); + KH_W ("Got a notification for a deleted or non-existing subscription %d", + n.fd); + return TRUE; +@@ -336,6 +336,7 @@ process_kqueue_notifications (GIOChannel *gioc, + g_file_monitor_source_handle_event (source, mask, NULL, NULL, NULL, g_get_monotonic_time ()); + } + ++ G_UNLOCK (hash_lock); + return TRUE; + } + +@@ -451,13 +452,14 @@ _kh_start_watching (kqueue_sub *sub) + + G_LOCK (hash_lock); + g_hash_table_insert (subs_hash_table, GINT_TO_POINTER (sub->fd), sub); +- G_UNLOCK (hash_lock); + + _kqueue_thread_push_fd (sub->fd); + + /* Bump the kqueue thread. It will pick up a new sub entry to monitor */ + if (!_ku_write (kqueue_socket_pair[0], "A", 1)) + KH_W ("Failed to bump the kqueue thread (add fd, error %d)", errno); ++ G_UNLOCK (hash_lock); ++ + return TRUE; + } + +@@ -498,22 +500,15 @@ _kh_add_sub (kqueue_sub *sub) + gboolean + _kh_cancel_sub (kqueue_sub *sub) + { +- gboolean missing = FALSE; ++ gboolean removed = FALSE; + g_assert (kqueue_socket_pair[0] != -1); + g_assert (sub != NULL); + +- G_LOCK (hash_lock); +- missing = !g_hash_table_remove (subs_hash_table, GINT_TO_POINTER (sub->fd)); +- G_UNLOCK (hash_lock); ++ _km_remove (sub); + +- if (missing) +- { +- /* If there were no fd for this subscription, file is still +- * missing. */ +- KH_W ("Removing subscription from missing"); +- _km_remove (sub); +- } +- else ++ removed = g_hash_table_remove (subs_hash_table, GINT_TO_POINTER (sub->fd)); ++ ++ if (removed) + { + /* fd will be closed in the kqueue thread */ + _kqueue_thread_remove_fd (sub->fd);