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.
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/356136 -- 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 62b7833..1d1673f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +nautilus (1:3.26.4-0~ubuntu18.04.2) bionic; 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) <ma...@ubuntu.com> Thu, 04 Oct 2018 16:15:08 +0200 + nautilus (1:3.26.4-0~ubuntu18.04.1) bionic; urgency=medium * New upstream release: 3.26.4 (LP: #1782681, LP: #1765776) 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 <ernest...@gnome.org> +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 41a35d1..2942ff8 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 ubuntu-desktop@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop