[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: