[Bug 91083] Atom D525 pineview segfault in gen3_emit_composite_primitive_constant_identity_mask_no_offset

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sat Jun 27 04:20:42 PDT 2015


https://bugs.freedesktop.org/show_bug.cgi?id=91083

--- Comment #3 from Chris Wilson <chris at chris-wilson.co.uk> ---
Hmm, I didn't consider that because it was a SIGSEGV and not a SIGBUS which is
what I expect from a failed pagefault.

Elsewhere we do trap fault failures and cancel the operation (losing the
rendering is better than killing X and its clients). It might be sensible to do
so here as well. For example,

diff --git a/src/sna/sna_glyphs.c b/src/sna/sna_glyphs.c
index 6ee4033..1ce77d4 100644
--- a/src/sna/sna_glyphs.c
+++ b/src/sna/sna_glyphs.c
@@ -2010,6 +2010,9 @@ sna_glyphs(CARD8 op,
                goto fallback;
        }

+       if (sigtrap_get())
+               goto fallback;
+
        priv = sna_pixmap(pixmap);
        if (priv == NULL) {
                DBG(("%s: fallback -- destination unattached\n",
__FUNCTION__));
@@ -2033,13 +2036,13 @@ sna_glyphs(CARD8 op,
                                           src, dst,
                                           src_x, src_y,
                                           nlist, list, glyphs))
-                               return;
+                               goto out;
                } else {
                        if (glyphs_to_dst(sna, op,
                                          src, dst,
                                          src_x, src_y,
                                          nlist, list, glyphs))
-                               return;
+                               goto out;
                }
        }

@@ -2053,15 +2056,19 @@ sna_glyphs(CARD8 op,
                                    src, dst, mask,
                                    src_x, src_y,
                                    nlist, list, glyphs))
-                       return;
+                       goto out;
        } else {
                if (glyphs_slow(sna, op,
                                src, dst,
                                src_x, src_y,
                                nlist, list, glyphs))
-                       return;
+                       goto out;
        }

+out:
+       sigtrap_put();
+       return;
+
 fallback:
        glyphs_fallback(op, src, dst, mask, src_x, src_y, nlist, list, glyphs);
 }

should handle this crash more gracefully. Do you mind testing with the older
kernel?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20150627/4f2de23a/attachment-0001.html>


More information about the intel-gfx-bugs mailing list