[Bug 354688] Re: crash in drm_intel_gem_bo_start_gtt_access

Albert Damen albrt at gmx.net
Sun Apr 5 14:25:43 UTC 2009


The problem is in xxv-intel, src/i830_video.c
In I830PutImage:
    if (pPriv->buf == NULL) {
        pPriv->buf = drm_intel_bo_alloc(pI830->bufmgr,
                                        "xv buffer", alloc_size, 4096);
        if (pPriv->buf == NULL)
            return BadAlloc;
        if (!pPriv->textured && drm_intel_bo_pin(pPriv->buf, 4096) != 0) {
            drm_intel_bo_unreference(pPriv->buf);
            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                       "Failed to pin xv buffer\n");
            return BadAlloc;
        }
    }

The first time totem is run, pPriv->buf is NULL, a buffer is allocated and, given the failed to pin error message, pPriv->buf is now not NULL. drm_intel_bo_unreference frees the buffer, but does not set pPriv->buf back to NULL.
Therefore, next time totem is run, -intel will think we have a valid xv buffer and crash.

Attached patch solves the problem and makes totem return the BadAlloc
error message every time. X no longer crashes.

As the same problem exists in git master, I will forward the bug and
patch upstream.

** Attachment added: "119_fix_crash_xv_large_virtual_size.patch"
   http://launchpadlibrarian.net/24835958/119_fix_crash_xv_large_virtual_size.patch

** Package changed: xorg (Ubuntu Jaunty) => xserver-xorg-video-intel
(Ubuntu Jaunty)

-- 
crash in drm_intel_gem_bo_start_gtt_access
https://bugs.launchpad.net/bugs/354688
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs at lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs




More information about the universe-bugs mailing list