[Cairo] Odd crash in cairo-demo/xrspline
Eric Christopherson
rakko at charter.net
Tue Jul 29 13:46:59 PDT 2003
On Mon, Jul 28, 2003 at 07:48:32PM -0400, Carl Worth wrote:
> On Jul 28, Eric Christopherson wrote:
> > I seem to suffer a consistently reproducible crash when running the demo
> > program xrspline. Upon running it, the X server itself crashes hard; it
> > doesn't do any cleanup such as setting the keyboard or video back to their
> > old states.
>
> The server crash is obviously a bad sign. Cairo should not be able to
> crash the server so there is at least a bug in the server or driver
> somewhere, (not to say that there isn't a Cairo bug tickling it).
>
> > 648 if (!XPending(win->dpy) && win->needs_refresh) {
>
> My guess is the XPending call is causing previous requests to flush
> and one of those is actually triggering the problem. Why don't you try
> adding the following call right before the call to win_init:
>
> XSynchronize (dpy, 1);
>
> That might give a little more insight into what's causing the server
> such grief.
[snip]
I've run another test after adding that, and getting librender and
libXrender from CVS. The end of the gdb log now looks like:
XRenderFindStandardFormat (dpy=0x804b340, format=134532248) at Xrender.c:821
821 }
0x400dd3d2 in XcCompositeTrapezoids (op=3, src=0x804d4e8, dst=0x804cb70,
xSrc=49, ySrc=-32767, traps=0x804eb38, ntraps=33) at xc.c:140
140 XRenderCompositeTrapezoids (dst->dpy, op, src->picture,
dst->picture,
XRenderCompositeTrapezoids (dpy=0x804b340, op=3, src=16777224, dst=16777220,
maskFormat=0x804cc98, xSrc=49, ySrc=-32767, traps=0x804eb38, ntrap=33) at
Trap.c:38
38 XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
XRenderFindDisplay (dpy=0x804b340) at Xrender.c:283
283 dpyinfo = XRenderExtFindDisplay (&XRenderExtensionInfo, dpy);
XRenderExtFindDisplay (extinfo=0x40153610, dpy=0x804b340) at Xrender.c:47
47 if ((dpyinfo = extinfo->cur) && dpyinfo->display == dpy)
41 {
47 if ((dpyinfo = extinfo->cur) && dpyinfo->display == dpy)
41 {
47 if ((dpyinfo = extinfo->cur) && dpyinfo->display == dpy)
58 return dpyinfo;
64 }
XRenderFindDisplay (dpy=0x804b340) at Xrender.c:284
284 if (!dpyinfo)
288 }
XRenderCompositeTrapezoids (dpy=0x804b340, op=3, src=16777224, dst=16777220,
maskFormat=0x804cc98, xSrc=49, ySrc=-32767, traps=0x804eb38, ntrap=33) at
Trap.c:42
42 unsigned long max_req = dpy->bigreq_size ?
dpy->bigreq_size : dpy->max_request_size;
44 RenderSimpleCheckExtension (dpy, info);
45 LockDisplay(dpy);
46 while (ntrap)
48 GetReq(RenderTrapezoids, req);
49 req->reqType = info->codes->major_opcode;
48 GetReq(RenderTrapezoids, req);
49 req->reqType = info->codes->major_opcode;
50 req->renderReqType = X_RenderTrapezoids;
51 req->op = (CARD8) op;
53 req->dst = dst;
54 req->maskFormat = maskFormat ? maskFormat->id : 0;
52 req->src = src;
53 req->dst = dst;
54 req->maskFormat = maskFormat ? maskFormat->id : 0;
48 GetReq(RenderTrapezoids, req);
52 req->src = src;
54 req->maskFormat = maskFormat ? maskFormat->id : 0;
59 if (len > (max_req - req->length)) {
55 req->xSrc = xSrc;
54 req->maskFormat = maskFormat ? maskFormat->id : 0;
57 n = ntrap;
56 req->ySrc = ySrc;
55 req->xSrc = xSrc;
57 n = ntrap;
59 if (len > (max_req - req->length)) {
58 len = ((long) n) * (SIZEOF (xTrapezoid) >> 2);
59 if (len > (max_req - req->length)) {
56 req->ySrc = ySrc;
59 if (len > (max_req - req->length)) {
58 len = ((long) n) * (SIZEOF (xTrapezoid) >> 2);
59 if (len > (max_req - req->length)) {
63 SetReqLen (req, len, len);
65 DataInt32 (dpy, (int *) traps, len);
64 len <<= 2;
65 DataInt32 (dpy, (int *) traps, len);
67 traps += n;
65 DataInt32 (dpy, (int *) traps, len);
67 traps += n;
69 UnlockDisplay(dpy);
70 SyncHandle();
0x401508f4 71 }
X connection to :0.0 broken (explicit kill or server shutdown).
Does this help anyone tell what might be going on?
--
Furrfu! r a k k o at c h a r t e r dot n e t
More information about the cairo
mailing list