<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED FIXED - Atom D525 pineview segfault in gen3_emit_composite_primitive_constant_identity_mask_no_offset"
href="https://bugs.freedesktop.org/show_bug.cgi?id=91083#c3">Comment # 3</a>
on <a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED FIXED - Atom D525 pineview segfault in gen3_emit_composite_primitive_constant_identity_mask_no_offset"
href="https://bugs.freedesktop.org/show_bug.cgi?id=91083">bug 91083</a>
from <span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span></b>
<pre>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?</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
</ul>
</body>
</html>