Bug 12437 - Server and computer lockup when trying to play Xv
Summary: Server and computer lockup when trying to play Xv
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Eric Anholt
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-09-15 14:32 UTC by Raúl
Modified: 2007-10-12 12:30 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
Xorg log. (28.50 KB, text/plain)
2007-09-15 14:37 UTC, Raúl
no flags Details
xorg configuration file (4.09 KB, text/plain)
2007-09-15 14:37 UTC, Raúl
no flags Details
Xorg log of the crash with more recent git (20071007) (62.47 KB, text/plain)
2007-10-10 16:43 UTC, Raúl
no flags Details

Description Raúl 2007-09-15 14:32:12 UTC
Hello:

I've seen this thread on the mailing list http://lists.freedesktop.org/archives/xorg/2007-September/028271.html and after this I've started trying.

Indeed on my i855GM equipped Dell inspiron 510m laptop, the computer locked totally when trying to play video using Xv for the second time in a row.

I'm attaching the Xorg.log and my xorg.conf. This all is with latest git version.

This is the backtrace with key frames listing:
#0  0xffffe410 in ?? ()
#1  0xbf9cf61c in ?? ()
#2  0x00000006 in ?? ()
#3  0x00000e69 in ?? ()
#4  0xb7d577f5 in raise () from /lib/i686/cmov/libc.so.6
#5  0xb7d59181 in abort () from /lib/i686/cmov/libc.so.6
#6  0x081c60db in FatalError (f=0xb7b9b8dc "lockup\n") at ../../os/log.c:555
#7  0xb7b71592 in I830WaitLpRing (pScrn=0x8211af0, n=131064, timeout_millis=0) at ../../src/i830_accel.c:150
#8  0xb7b717e2 in I830Sync (pScrn=0x8211af0) at ../../src/i830_accel.c:201
#9  0xb7b8463b in I830StopVideo (pScrn=0x8211af0, data=0x825598c, shutdown=1) at ../../src/i830_video.c:1017
#10 0xb7b8474b in i830_crtc_dpms_video (crtc=0x82143c0, on=0) at ../../src/i830_video.c:2845
#11 0xb7b75de0 in i830_crtc_dpms (crtc=0x82143c0, mode=3) at ../../src/i830_display.c:713
#12 0xb7b7820d in RestoreHWState (pScrn=0x8211af0) at ../../src/i830_driver.c:1987
#13 0xb7b7a00b in I830LeaveVT (scrnIndex=0, flags=0) at ../../src/i830_driver.c:3018
#14 0xb7a3b467 in XAALeaveVT (index=0, flags=0) at ../../../../hw/xfree86/xaa/xaaInit.c:691
#15 0x080db6ed in xf86XVLeaveVT (index=0, flags=0) at ../../../../hw/xfree86/common/xf86xv.c:1278
#16 0xb7c1928f in glxDRILeaveVT (index=0, flags=0) at ../../../GL/glx/glxdri.c:839
#17 0x080a73cd in AbortDDX () at ../../../../hw/xfree86/common/xf86Init.c:1287
#18 0x081c5bc3 in AbortServer () at ../../os/log.c:407
#19 0x081c60c6 in FatalError (f=0x81d0dbc "Caught signal %d.  Server aborting\n") at ../../os/log.c:553
#20 0x080c86a0 in xf86SigHandler (signo=11) at ../../../../hw/xfree86/common/xf86Events.c:1460
#21 0xffffe420 in ?? ()
#22 0x0000000b in ?? ()
#23 0x00000033 in ?? ()
#24 0xc0100000 in ?? ()
#25 0x0000007b in ?? ()
#26 0x0000007b in ?? ()
#27 0x08211af0 in ?? ()
#28 0x089f0fc0 in ?? ()
#29 0xbf9cfd48 in ?? ()
#30 0xbf9cfd30 in ?? ()
#31 0xb7ba6808 in ?? () from /usr/lib/xorg/modules/drivers//intel_drv.so
#32 0x087b34e0 in ?? ()
#33 0x00000000 in ?? ()

#7  0xb7b71592 in I830WaitLpRing (pScrn=0x8211af0, n=131064, timeout_millis=0) at ../../src/i830_accel.c:150
150		 FatalError("lockup\n");
145		 pI830->AccelInfoRec = NULL;	/* Stops recursive behavior */
146	#endif
147	#ifdef I830_USE_EXA
148		 pI830->EXADriverPtr = NULL;
149	#endif
150		 FatalError("lockup\n");
151	      }
152	
153	      DELAY(10);
154	   }

#8  0xb7b717e2 in I830Sync (pScrn=0x8211af0) at ../../src/i830_accel.c:201
201	   I830WaitLpRing(pScrn, pI830->LpRing->mem->size - 8, 0);
196	      OUT_RING(MI_FLUSH | flags);
197	      OUT_RING(MI_NOOP);		/* pad to quadword */
198	      ADVANCE_LP_RING();
199	   }
200	
201	   I830WaitLpRing(pScrn, pI830->LpRing->mem->size - 8, 0);
202	
203	   pI830->LpRing->space = pI830->LpRing->mem->size - 8;
204	   pI830->nextColorExpandBuf = 0;
205	}

#9  0xb7b8463b in I830StopVideo (pScrn=0x8211af0, data=0x825598c, shutdown=1) at ../../src/i830_video.c:1017
1017		I830Sync(pScrn);
1012		    if (pI830->entityPrivate)
1013			pI830->entityPrivate->XvInUse = -1;
1014		}
1015		/* Sync before freeing the buffer, because the pages will be unbound.
1016		 */
1017		I830Sync(pScrn);
1018		i830_free_memory(pScrn, pPriv->buf);
1019		pPriv->videoStatus = 0;
1020	    } else {
1021		if (pPriv->videoStatus & CLIENT_VIDEO_ON) {

#10 0xb7b8474b in i830_crtc_dpms_video (crtc=0x82143c0, on=0) at ../../src/i830_video.c:2845
2845		I830StopVideo(pScrn, pPriv, TRUE);
2840	    } else {
2841		/* We stop the video when mode switching, so we don't lock up
2842		 * the engine. The overlayOK will determine whether we can re-enable
2843		 * with the current video on completion of the mode switch.
2844		 */
2845		I830StopVideo(pScrn, pPriv, TRUE);
2846		pPriv->overlayOK = FALSE;
2847		pPriv->oneLineMode = FALSE;
2848	    }
2849	}

#11 0xb7b75de0 in i830_crtc_dpms (crtc=0x82143c0, mode=3) at ../../src/i830_display.c:713
713		i830_crtc_dpms_video(crtc, FALSE);
708		/* Shut off compression if in use */
709		if (i830_use_fb_compression(crtc))
710		    i830_disable_fb_compression(crtc);
711	
712		/* Give the overlay scaler a chance to disable if it's on this pipe */
713		i830_crtc_dpms_video(crtc, FALSE);
714	
715		/* Disable the VGA plane that we never use */
716		OUTREG(VGACNTRL, VGA_DISP_DISABLE);
717	

#12 0xb7b7820d in RestoreHWState (pScrn=0x8211af0) at ../../src/i830_driver.c:1987
1987	      crtc->funcs->dpms(crtc, DPMSModeOff);
1982	   i830WaitForVblank(pScrn);
1983	   
1984	   /* Disable pipes */
1985	   for (i = 0; i < xf86_config->num_crtc; i++) {
1986	      xf86CrtcPtr crtc = xf86_config->crtc[i];
1987	      crtc->funcs->dpms(crtc, DPMSModeOff);
1988	   }
1989	   i830WaitForVblank(pScrn);
1990	
1991	   if (IS_MOBILE(pI830) && !IS_I830(pI830))

#13 0xb7b7a00b in I830LeaveVT (scrnIndex=0, flags=0) at ../../src/i830_driver.c:3018
3018	   RestoreHWState(pScrn);
3013	
3014	   xf86_hide_cursors (pScrn);
3015	
3016	   ResetState(pScrn, TRUE);
3017	
3018	   RestoreHWState(pScrn);
3019	
3020	   if (pI830->debug_modes) {
3021	      i830CompareRegsToSnapshot(pScrn, "After LeaveVT");
3022	      i830DumpRegs (pScrn);

I think there should be some problem when closing Xv.

Thanks.
Comment 1 Raúl 2007-09-15 14:37:19 UTC
Created attachment 11583 [details]
Xorg log.
Comment 2 Raúl 2007-09-15 14:37:56 UTC
Created attachment 11584 [details]
xorg configuration file

Please forget about the ForceEnablePipeA option.
Comment 3 Willi Mann 2007-09-16 02:08:33 UTC
Are you interested in my gdb logs? I've produced them by switching to VT, not by playing a second video. 
Comment 4 Raúl 2007-09-16 10:54:45 UTC
Willi,
regarding the backtraces, 2 things could happen:
a) The backtrace matches the one I've posted. In that case it's not necessary you dupe it, unless there's some info I haven't provided.
a) The backtrace is different, meaning that it's not referring to the same problem. Check if the problem is already reported or alternatively file a new bug report.

In general having a backtrace is very useful in order to identify where the problem is and also to check if that's already reported.
Thanks for you interest.

Comment 5 Raúl 2007-10-10 16:43:15 UTC
Created attachment 11983 [details]
Xorg log of the crash with more recent git (20071007)
Comment 6 Raúl 2007-10-10 16:44:39 UTC
The backtrace I get:
#0  XkbEnableDisableControls (xkbi=0x180, change=542, newValues=512, 
    changes=0x0, cause=0xbfae01d4) at ../../xkb/xkbUtils.c:748
#1  0x0818d5f1 in XkbRemoveResourceClient (inDev=0x826f040, id=1096810496)
    at ../../xkb/xkbEvents.c:1014
#2  0x08085542 in CloseDevice (dev=0x826f040) at ../../dix/devices.c:602
#3  0x080857a9 in CloseDownDevices () at ../../dix/devices.c:624
#4  0x081ba4e3 in AbortServer () at ../../os/log.c:405
#5  0x081baa66 in FatalError (
    f=0x81c4f4c "Caught signal %d.  Server aborting\n") at ../../os/log.c:552
#6  0x080c64bd in xf86SigHandler (signo=11)
    at ../../../../hw/xfree86/common/xf86Events.c:764
#7  0xffffe420 in ?? ()
#8  0x0000000b in ?? ()
#9  0x00000033 in ?? ()
#10 0xc0100000 in ?? ()
#11 0x0000007b in ?? ()
#12 0x0000007b in ?? ()
#13 0x08218e80 in ?? ()
#14 0x08ecf5f0 in ?? ()
#15 0xbfae0618 in ?? ()
#16 0xbfae0600 in ?? ()
#17 0xb7affeec in ?? () from /usr/lib/xorg/modules/drivers//intel_drv.so
#18 0x00000016 in ?? ()
#19 0xb7e0cff4 in ?? () from /lib/i686/cmov/libc.so.6
#20 0xfff60700 in ?? ()
#21 0x0000000e in ?? ()
#22 0x00000007 in ?? ()
#23 0xb7ad9075 in i830_free_memory (pScrn=0x8217aa0, mem=0x8ecf5f0)
    at ../../src/i830_memory.c:240
#24 0xb7adcdea in I830StopVideo (pScrn=0x8217aa0, data=0x8267924, shutdown=1)
    at ../../src/i830_video.c:1018
#25 0xb7adceeb in i830_crtc_dpms_video (crtc=0x8219fa8, on=0)
    at ../../src/i830_video.c:2846
#26 0xb7ace1e0 in i830_crtc_dpms (crtc=0x8219fa8, mode=3)
    at ../../src/i830_display.c:713
#27 0x080f0f3e in xf86DPMSSet (scrn=0x8217aa0, mode=3, flags=0)
    at ../../../../hw/xfree86/modes/xf86Crtc.c:1961
#28 0x080f162e in xf86SaveScreen (pScreen=0x8225fe8, mode=0)
    at ../../../../hw/xfree86/modes/xf86Crtc.c:1987
#29 0x0807caa3 in SaveScreens (on=2, mode=1) at ../../dix/window.c:3453
#30 0x080c5942 in DPMSSet (level=1)
    at ../../../../hw/xfree86/common/xf86DPMS.c:160
#31 0x081acb69 in ScreenSaverTimeoutExpire (timer=0x86562e0, now=2036720, 
    arg=0x0) at ../../os/WaitFor.c:631
#32 0x081ace74 in DoTimer (timer=0x86562e0, now=542, prev=0x180)
    at ../../os/WaitFor.c:459
#33 0x081ad607 in WaitForSomething (pClientsReady=0xbfae0a50)
    at ../../os/WaitFor.c:293
#34 0x0808ce82 in Dispatch () at ../../dix/dispatch.c:425
#35 0x0807461b in main (argc=8, argv=0xbfae0f74, envp=
Cannot access memory at address 0x188
) at ../../dix/main.c:452
Comment 7 Daniel Stone 2007-10-11 02:12:44 UTC
This is the relevant part:

(In reply to comment #6)
> #23 0xb7ad9075 in i830_free_memory (pScrn=0x8217aa0, mem=0x8ecf5f0)
>     at ../../src/i830_memory.c:240
> #24 0xb7adcdea in I830StopVideo (pScrn=0x8217aa0, data=0x8267924, shutdown=1)
>     at ../../src/i830_video.c:1018
> #25 0xb7adceeb in i830_crtc_dpms_video (crtc=0x8219fa8, on=0)
>     at ../../src/i830_video.c:2846
> #26 0xb7ace1e0 in i830_crtc_dpms (crtc=0x8219fa8, mode=3)
>     at ../../src/i830_display.c:713
> #27 0x080f0f3e in xf86DPMSSet (scrn=0x8217aa0, mode=3, flags=0)
>     at ../../../../hw/xfree86/modes/xf86Crtc.c:1961
> #28 0x080f162e in xf86SaveScreen (pScreen=0x8225fe8, mode=0)
>     at ../../../../hw/xfree86/modes/xf86Crtc.c:1987
> #29 0x0807caa3 in SaveScreens (on=2, mode=1) at ../../dix/window.c:3453
> #30 0x080c5942 in DPMSSet (level=1)
>     at ../../../../hw/xfree86/common/xf86DPMS.c:160
> #31 0x081acb69 in ScreenSaverTimeoutExpire (timer=0x86562e0, now=2036720, 
>     arg=0x0) at ../../os/WaitFor.c:631

All the stuff above that is just fatal signal handling, which definitely needs to be improved, but it's not the cause of the crash.
Comment 8 Willi Mann 2007-10-12 02:57:17 UTC
latest git of intel driver fixes this issue for me  it doesn t hang when trying to play the second or further videos , but I still can t switch to VT after I ve played video with xv.  Segfault as in Bug#12451, similar backtrace 
Comment 9 Eric Anholt 2007-10-12 12:30:02 UTC
This looks like the bug I fixed yesterday, so it should be fixed for both reporters.


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.