Bug#853063: unblock: gnome-shell/3.22.2-4
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package gnome-shell and/or set a shorter time delay.
This fixes RC bug #853018, one of two root causes for inability to
unlock the lock screen if a user fails to read the release notes and
carries out the upgrade from within the GNOME GUI (the other is in
gdm3 and has a separate unblock request).
unblock gnome-shell/3.22.2-4
>+ - Ship a copy of the process-working spinner animation from Shell
>+ 3.14.x, and install it where Shell 3.14.x would expect to find it.
>+ This avoids a code path where the lock screen would fail to unlock
>+ because the animation code didn't cope with inability to load the
>+ animation. (Closes: #853018)
The RC bug fix. We were lucky here: gnome-shell 3.22 has an incompatible
(different size) animation of the same name, but it compiles it into a
GResource file for faster access instead of shipping a "loose" file on
disk, so it doesn't actually try to read this one.
>+ - d/p/animations-Guard-against-empty-animations.patch,
>+ d/p/texture-cache-Warn-when-loading-sliced-image-fails.patch:
>+ Add two patches from upstream 3.22 branch to harden the same part
>+ of the lock screen code against hitting a similar issue, and
>+ issue warnings to the system log if it happens.
Make sure a similar thing won't happen when upgrading from stretch to
buster.
Regards,
S
at the southernmost point of the Cambridge BSP
diffstat for gnome-shell-3.22.2 gnome-shell-3.22.2
changelog | 17
gnome-shell-common.install | 3
jessie-upgrade/process-working.svg | 261 ++++++++++
patches/animations-Guard-against-empty-animations.patch | 33 +
patches/series | 2
patches/texture-cache-Warn-when-loading-sliced-image-fails.patch | 61 ++
6 files changed, 377 insertions(+)
diff -Nru gnome-shell-3.22.2/debian/changelog gnome-shell-3.22.2/debian/changelog
--- gnome-shell-3.22.2/debian/changelog 2017-01-20 09:48:04.000000000 +0000
+++ gnome-shell-3.22.2/debian/changelog 2017-01-29 11:45:16.000000000 +0000
@@ -1,3 +1,20 @@
+gnome-shell (3.22.2-4) unstable; urgency=medium
+
+ * Team upload.
+ * Work around upgrades not being done offline:
+ - Ship a copy of the process-working spinner animation from Shell
+ 3.14.x, and install it where Shell 3.14.x would expect to find it.
+ This avoids a code path where the lock screen would fail to unlock
+ because the animation code didn't cope with inability to load the
+ animation. (Closes: #853018)
+ - d/p/animations-Guard-against-empty-animations.patch,
+ d/p/texture-cache-Warn-when-loading-sliced-image-fails.patch:
+ Add two patches from upstream 3.22 branch to harden the same part
+ of the lock screen code against hitting a similar issue, and
+ issue warnings to the system log if it happens.
+
+ -- Simon McVittie <smcv@debian.org> Sun, 29 Jan 2017 11:45:16 +0000
+
gnome-shell (3.22.2-3) unstable; urgency=medium
* Team upload.
diff -Nru gnome-shell-3.22.2/debian/gnome-shell-common.install gnome-shell-3.22.2/debian/gnome-shell-common.install
--- gnome-shell-3.22.2/debian/gnome-shell-common.install 2013-06-29 15:23:02.000000000 +0100
+++ gnome-shell-3.22.2/debian/gnome-shell-common.install 2017-01-29 02:00:14.000000000 +0000
@@ -5,3 +5,6 @@
usr/share/gnome-shell
usr/share/gtk-doc
usr/share/locale
+
+# This is a hack for #853018. Remove this after Debian stretch is released.
+debian/jessie-upgrade/process-working.svg /usr/share/gnome-shell/theme
diff -Nru gnome-shell-3.22.2/debian/jessie-upgrade/process-working.svg gnome-shell-3.22.2/debian/jessie-upgrade/process-working.svg
--- gnome-shell-3.22.2/debian/jessie-upgrade/process-working.svg 1970-01-01 01:00:00.000000000 +0100
+++ gnome-shell-3.22.2/debian/jessie-upgrade/process-working.svg 2017-01-29 02:00:14.000000000 +0000
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg5369"
+ version="1.1"
+ inkscape:version="0.48+devel r10053 custom"
+ width="96"
+ height="48"
+ sodipodi:docname="process-working.svg"
+ style="display:inline">
+ <metadata
+ id="metadata5375">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs5373" />
+ <sodipodi:namedview
+ pagecolor="#808080"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1975"
+ inkscape:window-height="1098"
+ id="namedview5371"
+ showgrid="true"
+ borderlayer="true"
+ inkscape:showpageshadow="false"
+ inkscape:zoom="16"
+ inkscape:cx="53.997662"
+ inkscape:cy="22.367695"
+ inkscape:window-x="1600"
+ inkscape:window-y="33"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="layer2">
+ <inkscape:grid
+ type="xygrid"
+ id="grid11933"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="tiles"
+ style="display:none">
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect12451"
+ width="24"
+ height="24"
+ x="0"
+ y="0" />
+ <rect
+ y="24"
+ x="0"
+ height="24"
+ width="24"
+ id="rect12453"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ y="0"
+ x="24"
+ height="24"
+ width="24"
+ id="rect12455"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect12457"
+ width="24"
+ height="24"
+ x="24"
+ y="24" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect12459"
+ width="24"
+ height="24"
+ x="48"
+ y="0" />
+ <rect
+ y="24"
+ x="48"
+ height="24"
+ width="24"
+ id="rect12461"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ y="0"
+ x="72"
+ height="24"
+ width="24"
+ id="rect12463"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect12465"
+ width="24"
+ height="24"
+ x="72"
+ y="24" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="spinner">
+ <g
+ transform="matrix(0.28240106,0,0,0.28240106,146.92015,-382.52444)"
+ id="g10450-5"
+ style="display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ style="opacity:0.6;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m -477.76072,1373.3569 0,9.4717"
+ id="path18768"
+ sodipodi:nodetypes="cc"
+ inkscape:transform-center-y="-4.6808838" />
+ <path
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="-3.3099227"
+ sodipodi:nodetypes="cc"
+ id="path18770"
+ d="m -461.0171,1380.2922 -7.23427,7.3824"
+ style="opacity:0.7;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:transform-center-x="-3.3098966" />
+ <path
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-x="-4.6808962"
+ style="opacity:0.8;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m -454.08163,1397.0359 -9.47165,0"
+ id="path18772"
+ sodipodi:nodetypes="cc"
+ inkscape:transform-center-y="-2.6596956e-05" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ id="path18774"
+ d="m -461.01709,1413.7796 -6.93831,-7.0864"
+ style="opacity:0.9;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:transform-center-x="-3.3098966"
+ inkscape:transform-center-y="3.3098652" />
+ <path
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="4.6808757"
+ style="color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m -477.76074,1420.715 9e-5,-9.4716"
+ id="path18776"
+ sodipodi:nodetypes="cc" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ id="path18778"
+ d="m -494.50442,1413.7796 6.79048,-6.9384"
+ style="opacity:0.3;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:transform-center-y="3.3098769"
+ inkscape:transform-center-x="3.3098883" />
+ <path
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-x="4.6808941"
+ style="opacity:0.4;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="m -501.43987,1397.0359 9.47174,0"
+ id="path18780"
+ sodipodi:nodetypes="cc"
+ inkscape:transform-center-y="-2.6596956e-05" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ id="path18782"
+ d="m -494.5044,1380.2922 6.64243,6.9384"
+ style="opacity:0.5;color:#000000;fill:none;stroke:#ffffff;stroke-width:7.08212566;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:transform-center-x="3.3098902"
+ inkscape:transform-center-y="-3.3099302" />
+ </g>
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#g10450-5"
+ id="use4981"
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,36,-4.9705636)"
+ width="400"
+ height="400" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#use4981"
+ id="use4983"
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,43.032478,-21.909695)"
+ width="400"
+ height="400" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#use4983"
+ id="use4985"
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,50.081986,-38.904617)"
+ width="400"
+ height="400" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#use4985"
+ id="use4987"
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,-38.919996,-31.872139)"
+ width="400"
+ height="400" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#use4987"
+ id="use4989"
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,52.986628,2.0890543)"
+ width="400"
+ height="400" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#use4989"
+ id="use4991"
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,60.013026,-14.912936)"
+ width="400"
+ height="400" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#use4991"
+ id="use4993"
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,67.022396,-31.859127)"
+ width="400"
+ height="400" />
+ </g>
+</svg>
diff -Nru gnome-shell-3.22.2/debian/patches/animations-Guard-against-empty-animations.patch gnome-shell-3.22.2/debian/patches/animations-Guard-against-empty-animations.patch
--- gnome-shell-3.22.2/debian/patches/animations-Guard-against-empty-animations.patch 1970-01-01 01:00:00.000000000 +0100
+++ gnome-shell-3.22.2/debian/patches/animations-Guard-against-empty-animations.patch 2017-01-29 02:00:14.000000000 +0000
@@ -0,0 +1,33 @@
+From 92630f67c61816be21b8e1fa618c11915dbbee51 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
+Date: Mon, 21 Nov 2016 18:09:42 +0100
+Subject: [PATCH 1/2] animations: Guard against empty animations
+
+Our animation code not only relies on the animation being loaded
+(which we handle), but also on having at least one frame - otherwise
+the computation of the next frame index will turn up NaN through
+division by zero. Guard against this case by treating empty animations
+as not loaded.
+
+Bug: https://bugzilla.gnome.org/show_bug.cgi?id=774805
+Origin: upstream, 3.22.3, commit:92630f67c61816be21b8e1fa618c11915dbbee51
+---
+ js/ui/animation.js | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/js/ui/animation.js b/js/ui/animation.js
+index 23ec934d8..1ae9ba0ea 100644
+--- a/js/ui/animation.js
++++ b/js/ui/animation.js
+@@ -67,7 +67,7 @@ const Animation = new Lang.Class({
+ },
+
+ _animationsLoaded: function() {
+- this._isLoaded = true;
++ this._isLoaded = this._animations.get_n_children() > 0;
+
+ if (this._isPlaying)
+ this.play();
+--
+2.11.0
+
diff -Nru gnome-shell-3.22.2/debian/patches/series gnome-shell-3.22.2/debian/patches/series
--- gnome-shell-3.22.2/debian/patches/series 2016-08-20 16:58:13.000000000 +0100
+++ gnome-shell-3.22.2/debian/patches/series 2017-01-29 11:44:21.000000000 +0000
@@ -1,3 +1,5 @@
27-nm-libexec-path.patch
#30-remoteMenu-Prevent-the-shell-from-becoming-unrespons.patch
41-handle-logind-fail.patch
+animations-Guard-against-empty-animations.patch
+texture-cache-Warn-when-loading-sliced-image-fails.patch
diff -Nru gnome-shell-3.22.2/debian/patches/texture-cache-Warn-when-loading-sliced-image-fails.patch gnome-shell-3.22.2/debian/patches/texture-cache-Warn-when-loading-sliced-image-fails.patch
--- gnome-shell-3.22.2/debian/patches/texture-cache-Warn-when-loading-sliced-image-fails.patch 1970-01-01 01:00:00.000000000 +0100
+++ gnome-shell-3.22.2/debian/patches/texture-cache-Warn-when-loading-sliced-image-fails.patch 2017-01-29 02:00:14.000000000 +0000
@@ -0,0 +1,61 @@
+From 516568a226ca908c6170f8b568d36ab5ec63d1e1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
+Date: Tue, 22 Nov 2016 18:12:35 +0100
+Subject: [PATCH 2/2] texture-cache: Warn when loading sliced image fails
+
+Sliced images are loaded into a group actor with one child actor
+per slice. In case loading the image fails, we currently quietly
+return the empty group actor, which makes diagnosing problems
+unnecessarily hard - just be a bit more verbose on failure.
+
+Bug: https://bugzilla.gnome.org/show_bug.cgi?id=774805
+Origin: upstream, 3.22.3, commit:516568a226ca908c6170f8b568d36ab5ec63d1e1
+---
+ src/st/st-texture-cache.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c
+index 1c718acb9..281241ade 100644
+--- a/src/st/st-texture-cache.c
++++ b/src/st/st-texture-cache.c
+@@ -1088,6 +1088,7 @@ load_sliced_image (GTask *result,
+ GdkPixbuf *pix;
+ gint width, height, y, x;
+ GdkPixbufLoader *loader;
++ GError *error = NULL;
+ gchar *buffer = NULL;
+ gsize length;
+
+@@ -1099,11 +1100,17 @@ load_sliced_image (GTask *result,
+ loader = gdk_pixbuf_loader_new ();
+ g_signal_connect (loader, "size-prepared", G_CALLBACK (on_loader_size_prepared), data);
+
+- if (!g_file_load_contents (data->gfile, NULL, &buffer, &length, NULL, NULL))
+- goto out;
++ if (!g_file_load_contents (data->gfile, NULL, &buffer, &length, NULL, &error))
++ {
++ g_warning ("Failed to open sliced image: %s", error->message);
++ goto out;
++ }
+
+- if (!gdk_pixbuf_loader_write (loader, (const guchar *) buffer, length, NULL))
+- goto out;
++ if (!gdk_pixbuf_loader_write (loader, (const guchar *) buffer, length, &error))
++ {
++ g_warning ("Failed to load image: %s", error->message);
++ goto out;
++ }
+
+ if (!gdk_pixbuf_loader_close (loader, NULL))
+ goto out;
+@@ -1128,6 +1135,7 @@ load_sliced_image (GTask *result,
+ * though the subpixbufs will hold a reference. */
+ g_object_unref (loader);
+ g_free (buffer);
++ g_clear_pointer (&error, g_error_free);
+ g_task_return_pointer (result, res, free_glist_unref_gobjects);
+ }
+
+--
+2.11.0
+
Reply to: