Summary: | Crash in drm_intel_gem_bo_start_gtt_access with XV if DRI disabled | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Albert Damen <albrt> | ||||||||
Component: | Driver/intel | Assignee: | Eric Anholt <eric> | ||||||||
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> | ||||||||
Severity: | normal | ||||||||||
Priority: | medium | CC: | bens, bryce | ||||||||
Version: | unspecified | Keywords: | patch | ||||||||
Hardware: | x86-64 (AMD64) | ||||||||||
OS: | Linux (All) | ||||||||||
Whiteboard: | |||||||||||
i915 platform: | i915 features: | ||||||||||
Attachments: |
|
Description
Albert Damen
2009-04-05 07:58:25 UTC
Created attachment 24573 [details]
xorg.conf
Created attachment 24574 [details]
Full backtrace
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. Created attachment 24575 [details] [review] Proposed fix Setting virtual >2048 on 945 results in DRI disabled. I've pulled albert's patch in for Ubuntu Jaunty, after jbarnes took a quick look and gave a thumbs up. Would be most comfortable in that choice if this patch made it into the upstream tree as well. pushed. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.