Bug 15925

Summary: X crash in memcpy() when starting to play videos (Intel 915GM)
Product: xorg Reporter: Bryce Harrington <bryce>
Component: Driver/intelAssignee: Wang Zhenyu <zhenyu.z.wang>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: major    
Priority: medium CC: nalimilan, unggnu
Version: 7.3 (2007.09)   
Hardware: x86 (IA32)   
OS: Linux (All)   
URL: https://bugs.launchpad.net/xserver-xorg-video-intel/+bug/220019
Whiteboard:
i915 platform: i915 features:

Description Bryce Harrington 2008-05-13 21:29:06 UTC
Forwarding this bug reported against Ubuntu:
https://bugs.launchpad.net/xserver-xorg-video-intel/+bug/220019

"This bug is occurring in Hardy, xserver-xorg version 1:7.3+10ubuntu10, regardless of compiz being activated or not, with Totem as well as with MPlayer. I have an Intel 915GM card using the i810 server.

Randomly, opening a video makes X crash before any image is displayed. X restarts and I'm back to GDM. No specific video will trigger this, and later I'll be able to play the same video file without trouble. I could notice the crash is almost always occurring when Kdenlive (video editing app) has been running for a while; but else the bug can happen at anytime, in an unpredictable way.

Attached are the different log files, and here's the most relevant part of Xorg.0.log.old (that of the crash):
Backtrace:
0: /usr/bin/X(xf86SigHandler+0x7e) [0x80c780e]
1: [0xb7f9f420]
2: /usr/bin/X [0x80da805]
3: /usr/lib/xorg/modules/extensions//libextmod.so(XvdiPutImage+0x178) [0xb7c08608]
4: /usr/lib/xorg/modules/extensions//libextmod.so [0xb7c0b476]
5: /usr/bin/X [0x81506de]
6: /usr/bin/X(Dispatch+0x2cf) [0x808d8df]
7: /usr/bin/X(main+0x48b) [0x807471b]
8: /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0) [0xb7d31450]
9: /usr/bin/X(FontFileCompleteXLFD+0x201) [0x8073a91]

Fatal server error:
Caught signal 11. Server aborting
"

http://launchpadlibrarian.net/13590425/Xorg.0.log.old
http://launchpadlibrarian.net/13590420/Xorg.0.log

lspci info:
00:02.0 VGA compatible controller [0300]: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller [8086:2592] (rev 03) (prog-if 00 [VGA controller])
	Subsystem: Toshiba America Info Systems Unknown device [1179:ff00]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 0
	Interrupt: pin A routed to IRQ 17
	Region 0: Memory at b0080000 (32-bit, non-prefetchable) [size=512K]
	Region 1: I/O ports at 1800 [size=8]
	Region 2: Memory at c0000000 (32-bit, prefetchable) [size=256M]
	Region 3: Memory at b0000000 (32-bit, non-prefetchable) [size=256K]
	Capabilities: <access denied>


Here's a more detailed backtrace:

http://launchpadlibrarian.net/14258144/trace with gdb.log
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb7caba30 (LWP 6788)]
0xb7dbd9bc in memcpy () from /lib/tls/i686/cmov/libc.so.6
(gdb) bt full
#0  0xb7dbd9bc in memcpy () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#1  0xb7b841d8 in I830PutImage (pScrn=0x821b718, src_x=<value optimized out>, 
    src_y=<value optimized out>, drw_x=5, drw_y=119, src_w=720, src_h=576, 
    drw_w=796, drw_h=447, id=808596553, 
    buf=0xa2910000 "SerZFT\\UY[]\\YWX[ZPONIR__hhhtwmlimkhfhhb[UURROKOQPU\\]UMLPUZZSORTSTTSQPQTV`c^VZfjfhcdeca]VSX]XWZ[bfidciebkhvvpttnmsprmmomuurjgiffmztyz{zw}z~\201\200~\177\200\200\206\203\202\201~}}z\200\202\177s}\204w\177\205\202~}\177\201~yy\201\207\203\212}y\206\204s\201\210mboywhhh\204�\232\210\216\213\223\215tkss"..., width=720, height=576, sync=0, clipBoxes=0xbf8c52e4, data=0x822f134, 
    pDraw=0x8d798f8) at ../../src/i830_video.c:1379
	pI830 = (I830Ptr) 0x821d168
	pScreen = (ScreenPtr) 0x8229918
	pPixmap = <value optimized out>
	x1 = 0
	x2 = 47185920
	y1 = 0
	y2 = 37748736
	srcPitch = 720
	srcPitch2 = 360
	dstPitch = 384
	destId = 808596553
	top = 0
---Type <return> to continue, or q <return> to quit---
	left = 0
	npixels = 720
	nlines = 576
	size = 663552
	dstBox = {x1 = 5, y1 = 119, x2 = 801, y2 = 566}
	pitchAlignMask = <value optimized out>
	alloc_size = <value optimized out>
	extraLinear = <value optimized out>
	crtc = <value optimized out>
#2  0x080da805 in xf86XVPutImage (client=0x8a13738, pDraw=0x8d798f8, 
    pPort=0x825a1f8, pGC=0x8ae7c20, src_x=<value optimized out>, 
    src_y=<value optimized out>, src_w=<value optimized out>, 
    src_h=<value optimized out>, drw_x=0, drw_y=0, 
    drw_w=<value optimized out>, drw_h=<value optimized out>, 
    format=0x8259fc0, 
    data=0xa2910000 "SerZFT\\UY[]\\YWX[ZPONIR__hhhtwmlimkhfhhb[UURROKOQPU\\]UMLPUZZSORTSTTSQPQTV`c^VZfjfhcdeca]VSX]XWZ[bfidciebkhvvpttnmsprmmomuurjgiffmztyz{zw}z~\201\200~\177\200\200\206\203\202\201~}}z\200\202\177s}\204w\177\205\202~}\177\201~yy\201\207\203\212}y\206\204s\201\210mboywhhh\204�\232\210\216\213\223\215tkss"..., sync=0, width=<value optimized out>, height=<value optimized out>)
    at ../../../../hw/xfree86/common/xf86xv.c:1777
	portPriv = <value optimized out>
	WinRegion = {extents = {x1 = 5, y1 = 119, x2 = 801, y2 = 566}, 
---Type <return> to continue, or q <return> to quit---
  data = 0x0}
	ClipRegion = {extents = {x1 = 5, y1 = 119, x2 = 801, y2 = 566}, 
  data = 0x0}
	ret = 0
#3  0xb7c37608 in XvdiPutImage (client=0x8a13738, pDraw=0x8d798f8, 
    pPort=0x825a1f8, pGC=0x8ae7c20, src_x=<value optimized out>, 
    src_y=<value optimized out>, src_w=<value optimized out>, 
    src_h=<value optimized out>, drw_x=<value optimized out>, 
    drw_y=<value optimized out>, drw_w=<value optimized out>, 
    drw_h=<value optimized out>, image=0x8259fc0, 
    data=0xa2910000 "SerZFT\\UY[]\\YWX[ZPONIR__hhhtwmlimkhfhhb[UURROKOQPU\\]UMLPUZZSORTSTTSQPQTV`c^VZfjfhcdeca]VSX]XWZ[bfidciebkhvvpttnmsprmmomuurjgiffmztyz{zw}z~\201\200~\177\200\200\206\203\202\201~}}z\200\202\177s}\204w\177\205\202~}\177\201~yy\201\207\203\212}y\206\204s\201\210mboywhhh\204�\232\210\216\213\223\215tkss"..., sync=0, width=<value optimized out>, height=<value optimized out>)
    at ../../Xext/xvmain.c:730
No locals.
#4  0xb7c3a476 in ProcXvShmPutImage (client=0x8a13738)
    at ../../Xext/xvdisp.c:1180
	pDraw = (DrawablePtr) 0x8d798f8
	pPort = (XvPortPtr) 0x825a1f8
	pImage = (XvImagePtr) 0x8259fc0
	pGC = (GCPtr) 0x8ae7c20
---Type <return> to continue, or q <return> to quit---
	status = -1567555584
	size_needed = <value optimized out>
	i = <value optimized out>
	width = 720
	height = 576
#5  0x081506de in XaceCatchExtProc (client=0x8a13738) at ../../Xext/xace.c:299
	major = 140
	ext = <value optimized out>
#6  0x0808d8df in Dispatch () at ../../dix/dispatch.c:502
	result = <value optimized out>
	client = (ClientPtr) 0x8a13738
	nready = 0
	start_tick = 3760
#7  0x0807471b in main (argc=10, argv=0xbf8c59a4, envp=Cannot access memory at address 0xbc
)
    at ../../dix/main.c:452
	i = 1
	error = 136163204
	xauthfile = <value optimized out>
	alwaysCheckForInput = {0, 1}
(gdb)
Comment 1 Bryce Harrington 2008-05-13 21:30:17 UTC
The reporter said "i810 server" but judging from the logs I suspect he meant "-intel driver".
Comment 2 Wang Zhenyu 2008-05-14 00:43:28 UTC
Better to try current 2.3.1 driver first, I don't remember if we have fixed bugs like this.
Comment 3 Milan Bouchet-Valat 2008-05-14 10:32:54 UTC
I'm the original reporter. I'll try this when I have the required time, if I can easily get the packages from Debian unstable (I won't build from sources).
Comment 4 Wang Zhenyu 2008-05-14 17:54:14 UTC
debian sid has included 2.3.1 driver.
Comment 5 Milan Bouchet-Valat 2008-05-17 06:45:53 UTC
I was not able to reproduce it with the new version so I assume it's been fixed. Thanks! (So much work to get a good trace, only to find out it's already over! ;-) )
Comment 6 Bryce Harrington 2008-05-17 10:58:58 UTC
Great to hear that the bug is fixed in 2.3.1 - anyone have an idea what git commit id resolved it?  If so, we could consider for a backport to Hardy.
Comment 7 Wang Zhenyu 2008-05-18 19:04:33 UTC
Maybe Michel's patch on bug #13108? 

Close this one anyway.
Comment 8 unggnu 2008-05-30 11:10:00 UTC
I am not sure if this issue is fixed. Ubuntu Intel driver uses overlay video per default and the one of Debian sid textured video.
How is it possible to switch from textured to overlay video with the Debian sid driver?

Btw. the problem has something to do with video resolution. I have experimented a little bit with FFMPEG and it seems that every video with a resolution higher than 1024x512 crashes on my system if another video is opened afterwards. But if I change both axis it works up to 512x1040. If one size is decreased considerable the other could be increased but I haven't found a system.
Btw. even the 1920x1080 video plays fine except of performance issues and could be reopened without problems until another video is started.
Comment 9 Julien Cristau 2008-05-30 14:34:51 UTC
> --- Comment #8 from unggnu@googlemail.com  2008-05-30 11:10:00 PST ---
> How is it possible to switch from textured to overlay video with the
> Debian sid driver?
> 
mplayer -vo xv:port=<n> where <n> is the port number you get from xvinfo
for the video overlay adaptor.
Comment 10 unggnu 2008-05-30 16:06:10 UTC
Thanks for the hint. It really seems to be fixed.
If anybody remembers a patch which might have fixed this video resolution problem please post. Thanks.
Comment 11 unggnu 2008-05-31 03:12:47 UTC
Just for the records it was most likely fixed through commit f425181695b1b3864373e1919cf651229f19fa69 . At least it doesn't work with f269c69b4e7be076dc9838d0e0801c940ccdba08 but works with ac763634069fe070b3afc073ce437959612d39fe.

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.