Marco Trevisan (Treviño) has proposed merging 
~3v1n0/ubuntu/+source/nautilus:ubuntu/bionic-fix-file-remote-type-search-crash 
into ~ubuntu-desktop/ubuntu/+source/nautilus:ubuntu/master with 
~3v1n0/ubuntu/+source/nautilus:ubuntu/bionic-xubuntu-cancel-search as a 
prerequisite.

Requested reviews:
  Ubuntu Desktop (ubuntu-desktop)
Related bugs:
  Bug #1713581 in nautilus (Ubuntu): "nautilus crashed with SIGSEGV in 
g_type_check_instance_is_fundamentally_a()"
  https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1713581
  Bug #1756826 in nautilus (Ubuntu): "hangs when remote search provider 
performs expensive operation"
  https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1756826
  Bug #1795028 in nautilus (Ubuntu): "Nautilus crashes during search in 
is_recursive_search (search-engine)"
  https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1795028

For more details, see:
https://code.launchpad.net/~3v1n0/ubuntu/+source/nautilus/+git/nautilus/+merge/355858
-- 
Your team Ubuntu Desktop is requested to review the proposed merge of 
~3v1n0/ubuntu/+source/nautilus:ubuntu/bionic-fix-file-remote-type-search-crash 
into ~ubuntu-desktop/ubuntu/+source/nautilus:ubuntu/master.
diff --git a/debian/changelog b/debian/changelog
index 0d739a6..a68c9a9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -18,8 +18,8 @@ nautilus (1:3.26.4-0~ubuntu18.04.2) UNRELEASED; urgency=medium
   * d/p/ubuntu/shell-search-provider-implement-XUbuntuCancel-to-request-.patch:
     shell-search-provider: implement XUbuntuCancel to request pending
     search cancellation from gnome-shell (LP: #1756826)
-
 <<<<<<< debian/changelog
+
  -- Marco Trevisan (Treviño) <[email protected]>  Thu, 30 Aug 2018 18:15:24 -0500
 
 nautilus (1:3.26.4-0ubuntu2) cosmic; urgency=medium
@@ -43,6 +43,9 @@ nautilus (1:3.26.4-0ubuntu2) cosmic; urgency=medium
 
 nautilus (1:3.26.4-0ubuntu1) cosmic; urgency=medium
 =======
+  * d/p/search-engine-Query-file-system-to-determine-remoteness.patch:
+    - Fix remote filesystem check on file during search (LP: #1795028)
+
  -- Marco Trevisan (Treviño) <[email protected]>  Wed, 05 Sep 2018 18:03:14 +0200
 
 nautilus (1:3.26.4-0~ubuntu18.04.1) bionic; urgency=medium
diff --git a/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch b/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
index f80997f..193c6e2 100644
--- a/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
+++ b/debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
@@ -512,7 +512,11 @@ index 0000000..bcd73b9
 +
 +#endif /* __NAUTILUS_SEARCH_ENGINE_RECENT_H__ */
 diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
+<<<<<<< debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
 index 3a0c9d4..793b831 100644
+=======
+index 28863f7..a4c6007 100644
+>>>>>>> debian/patches/0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
 --- a/src/nautilus-search-engine.c
 +++ b/src/nautilus-search-engine.c
 @@ -30,11 +30,13 @@
diff --git a/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch b/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
index e6185da..8e3d059 100644
--- a/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
+++ b/debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
@@ -49,7 +49,11 @@ index 19316e8..9bb5460 100644
  
      /* Now send out the changed and added signals for existing file objects. */
 diff --git a/src/nautilus-file.c b/src/nautilus-file.c
+<<<<<<< debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
 index 63413a6..9416214 100644
+=======
+index 28b5a13..7886d1f 100644
+>>>>>>> debian/patches/0017-recent-add-function-to-update-manager-on-file-rename.patch
 --- a/src/nautilus-file.c
 +++ b/src/nautilus-file.c
 @@ -34,6 +34,7 @@
diff --git a/debian/patches/0018-search-engine-add-locate-based-search-engine.patch b/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
index 91a7ec0..1135ad8 100644
--- a/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
+++ b/debian/patches/0018-search-engine-add-locate-based-search-engine.patch
@@ -678,7 +678,11 @@ index 0000000..ac5e3fc
 +
 +#endif /* __NAUTILUS_SEARCH_ENGINE_LOCATE_H__ */
 diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
+<<<<<<< debian/patches/0018-search-engine-add-locate-based-search-engine.patch
 index 793b831..902d483 100644
+=======
+index a4c6007..475a432 100644
+>>>>>>> debian/patches/0018-search-engine-add-locate-based-search-engine.patch
 --- a/src/nautilus-search-engine.c
 +++ b/src/nautilus-search-engine.c
 @@ -29,6 +29,7 @@
diff --git a/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch b/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
index fddae3e..76b455b 100644
--- a/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
+++ b/debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
@@ -198,7 +198,11 @@ index b567611..b165d63 100644
 +
  #endif /* NAUTILUS_FILE_UTILITIES_H */
 diff --git a/src/nautilus-file.c b/src/nautilus-file.c
+<<<<<<< debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
 index 3f6a69f..63413a6 100644
+=======
+index 22ea199..e30d791 100644
+>>>>>>> debian/patches/query-add-recursive-flags-and-use-it-in-search-engines.patch
 --- a/src/nautilus-file.c
 +++ b/src/nautilus-file.c
 @@ -4975,6 +4975,29 @@ nautilus_file_get_filesystem_type (NautilusFile *file)
diff --git a/debian/patches/search-engine-Query-file-system-to-determine-remoteness.patch b/debian/patches/search-engine-Query-file-system-to-determine-remoteness.patch
new file mode 100644
index 0000000..1b7f874
--- /dev/null
+++ b/debian/patches/search-engine-Query-file-system-to-determine-remoteness.patch
@@ -0,0 +1,127 @@
+From: Ernestas Kulik <[email protected]>
+Date: Fri, 14 Sep 2018 12:52:11 +0200
+Subject: search-engine: Query file system to determine remoteness
+
+Querying the file cache in is_recursive_search() does not guarantee that
+the file system field will be populated with a value, and somehow
+results in data races, in turn resulting in random crashes/file list
+corruption.
+
+Hopefully fixes https://gitlab.gnome.org/GNOME/nautilus/issues/640,
+closes https://gitlab.gnome.org/GNOME/nautilus/issues/632 and resolves
+https://gitlab.gnome.org/GNOME/nautilus/issues/602
+
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1795028
+Applied-Upstream: yes, 3.30.1, https://gitlab.gnome.org/GNOME/nautilus/commit/62ba6d83d
+---
+ src/nautilus-file-utilities.c | 18 ++++++++++++++++++
+ src/nautilus-file-utilities.h |  2 ++
+ src/nautilus-file.c           | 14 +-------------
+ src/nautilus-search-engine.c  | 18 +++++++++++++++---
+ 4 files changed, 36 insertions(+), 16 deletions(-)
+
+diff --git a/src/nautilus-file-utilities.c b/src/nautilus-file-utilities.c
+index f8d8476..3e363a4 100644
+--- a/src/nautilus-file-utilities.c
++++ b/src/nautilus-file-utilities.c
+@@ -1565,3 +1565,21 @@ location_settings_search_get_recursive_for_location (GFile *location)
+ 
+     return recursive;
+ }
++
++gboolean
++nautilus_file_system_is_remote (const char *file_system)
++{
++    static const gchar * const remote_types[] =
++    {
++        "afp",
++        "google-drive",
++        "sftp",
++        "webdav",
++        "ftp",
++        "nfs",
++        "cifs",
++        NULL
++    };
++
++    return file_system != NULL && g_strv_contains (remote_types, file_system);
++}
+diff --git a/src/nautilus-file-utilities.h b/src/nautilus-file-utilities.h
+index b165d63..37f7f49 100644
+--- a/src/nautilus-file-utilities.h
++++ b/src/nautilus-file-utilities.h
+@@ -133,4 +133,6 @@ gchar * nautilus_uri_to_native_uri (const gchar *uri);
+ NautilusQueryRecursive location_settings_search_get_recursive (void);
+ NautilusQueryRecursive location_settings_search_get_recursive_for_location (GFile *location);
+ 
++gboolean nautilus_file_system_is_remote (const char *file_system);
++
+ #endif /* NAUTILUS_FILE_UTILITIES_H */
+diff --git a/src/nautilus-file.c b/src/nautilus-file.c
+index e30d791..28b5a13 100644
+--- a/src/nautilus-file.c
++++ b/src/nautilus-file.c
+@@ -8371,18 +8371,6 @@ nautilus_file_is_in_recent (NautilusFile *file)
+     return nautilus_directory_is_in_recent (file->details->directory);
+ }
+ 
+-static const gchar * const remote_types[] =
+-{
+-    "afp",
+-    "google-drive",
+-    "sftp",
+-    "webdav",
+-    "ftp",
+-    "nfs",
+-    "cifs",
+-    NULL
+-};
+-
+ /**
+  * nautilus_file_is_remote
+  *
+@@ -8406,7 +8394,7 @@ nautilus_file_is_remote (NautilusFile *file)
+ 
+     filesystem_type = nautilus_file_get_filesystem_type (file);
+ 
+-    return filesystem_type != NULL && g_strv_contains (remote_types, filesystem_type);
++    return nautilus_file_system_is_remote (filesystem_type);
+ }
+ 
+ /**
+diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
+index 3a0c9d4..28863f7 100644
+--- a/src/nautilus-search-engine.c
++++ b/src/nautilus-search-engine.c
+@@ -23,7 +23,7 @@
+ #include "nautilus-search-engine.h"
+ #include "nautilus-search-engine-private.h"
+ 
+-#include "nautilus-file.h"
++#include "nautilus-file-utilities.h"
+ #include "nautilus-search-engine-model.h"
+ #include "nautilus-search-provider.h"
+ #include <glib/gi18n.h>
+@@ -437,8 +437,20 @@ is_recursive_search (NautilusSearchEngineType  engine_type,
+ 
+         case NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY:
+         {
+-            g_autoptr (NautilusFile) file = nautilus_file_get (location);
+-            return !nautilus_file_is_remote (file);
++            g_autoptr (GFileInfo) file_system_info = NULL;
++
++            file_system_info = g_file_query_filesystem_info (location,
++                                                             G_FILE_ATTRIBUTE_FILESYSTEM_TYPE,
++                                                             NULL, NULL);
++            if (file_system_info != NULL)
++            {
++                const char *file_system;
++
++                file_system = g_file_info_get_attribute_string (file_system_info,
++                                                                G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
++
++                return !nautilus_file_system_is_remote (file_system);
++            }
+         }
+     }
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 61d3d3a..3bc1123 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -17,6 +17,10 @@ ubuntu_backspace_behaviour.patch
 #Needs updating
 #16_unity_new_documents.patch
 query-add-recursive-flags-and-use-it-in-search-engines.patch
+<<<<<<< debian/patches/series
+=======
+search-engine-Query-file-system-to-determine-remoteness.patch
+>>>>>>> debian/patches/series
 0015-tracker-search-engine-don-t-start-it-if-not-availabl.patch
 0016-search-engine-add-a-recent-search-engine-listing-Gtk.patch
 0017-recent-add-function-to-update-manager-on-file-rename.patch
-- 
ubuntu-desktop mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop

Reply via email to