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/bionic with
~3v1n0/ubuntu/+source/nautilus:ubuntu/bionic-xubuntu-cancel-search as a
prerequisite.
Requested reviews:
Ubuntu Desktop (ubuntu-desktop)
Related bugs:
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/355859
--
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/bionic.
diff --git a/debian/changelog b/debian/changelog
index 312bb43..5e63a62 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,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)
+ * 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
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..20e597c 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,7 @@ index 0000000..bcd73b9
+
+#endif /* __NAUTILUS_SEARCH_ENGINE_RECENT_H__ */
diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
-index 3a0c9d4..793b831 100644
+index 28863f7..a4c6007 100644
--- 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..ad248da 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,7 @@ 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
-index 63413a6..9416214 100644
+index 28b5a13..7886d1f 100644
--- 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..158b448 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,7 @@ index 0000000..ac5e3fc
+
+#endif /* __NAUTILUS_SEARCH_ENGINE_LOCATE_H__ */
diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
-index 793b831..902d483 100644
+index a4c6007..475a432 100644
--- 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..3c89693 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,7 @@ index b567611..b165d63 100644
+
#endif /* NAUTILUS_FILE_UTILITIES_H */
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
-index 3f6a69f..63413a6 100644
+index 22ea199..e30d791 100644
--- 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..d0bf55c 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -17,6 +17,7 @@ ubuntu_backspace_behaviour.patch
#Needs updating
#16_unity_new_documents.patch
query-add-recursive-flags-and-use-it-in-search-engines.patch
+search-engine-Query-file-system-to-determine-remoteness.patch
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