Bug 17859 - X server crashes on rotation in xf86ResizeOffscreenLinear [ATI x1250 GPU]
Summary: X server crashes on rotation in xf86ResizeOffscreenLinear [ATI x1250 GPU]
Status: RESOLVED INVALID
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/Radeon (show other bugs)
Version: 7.4 (2008.09)
Hardware: All Linux (All)
: high major
Assignee: xf86-video-ati maintainers
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-10-01 10:59 UTC by Bryce Harrington
Modified: 2010-10-19 16:43 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Bryce Harrington 2008-10-01 10:59:42 UTC
Forwarding this report from Ubuntu:

https://bugs.edge.launchpad.net/ubuntu/+source/xserver-xorg-video-ati/+bug/276782

"Fresh bits installed 9/30 from daily image of Intrepid, onto a Dell Latitude XT (ATI x1250 GPU, IIRC).

   xrandr -o left; xrandr -o normal; xrandr -o left

Crashes the X server. -- Jim Gettys"

Backtrace:
0: /usr/X11R6/bin/X(xf86SigHandler+0x79) [0x80c3069]
1: [0xb806b400]
2: /usr/X11R6/bin/X(xf86ResizeOffscreenLinear+0x3b) [0x80c871b]
3: /usr/lib/xorg/modules/drivers//radeon_drv.so [0xb7ad7f77]
4: /usr/lib/xorg/modules/drivers//radeon_drv.so [0xb7afd15e]
5: /usr/X11R6/bin/X(xf86CrtcRotate+0x328) [0x80f40c8]
6: /usr/X11R6/bin/X(xf86CrtcSetMode+0x403) [0x80eb243]
7: /usr/X11R6/bin/X [0x80f2582]
8: /usr/X11R6/bin/X(RRCrtcSet+0x96) [0x816ce96]
9: /usr/X11R6/bin/X(ProcRRSetScreenConfig+0x4db) [0x8171f1b]
10: /usr/X11R6/bin/X [0x816b5a5]
11: /usr/X11R6/bin/X(Dispatch+0x34f) [0x808c91f]
12: /usr/X11R6/bin/X(main+0x47d) [0x8071d8d]
13: /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5) [0xb7c75685]
14: /usr/X11R6/bin/X [0x8071171]
Saw signal 11. Server aborting.

I was not able to reproduce the problem on a Dell XPS 1640 with an HD 3670 [1002:95:93], but Jim is easily able to reproduce it on his system.  We attempted to attach gdb to the process to get a better trace, but with gdb attached it simply hangs in WaitForSomething().
Comment 1 Jim Gettys 2008-10-01 11:33:53 UTC
And as the system is very new, and doesn't have personal files on it yet, I can easily create an account if someone needs to debug remotely...
Comment 2 Alex Deucher 2008-10-01 11:48:02 UTC
I suspect there's in issue with the xrandr 1.1 compatibility stuff in the xserver since you are using xrandr -o and your laptop has several outputs.  Do you still get the crash if you specify the rotation with xrandr 1.2 API calls?

xrandr --output LVDS --rotate left
Comment 3 Jim Gettys 2008-10-01 11:58:06 UTC
Still dies with a sequence of 

xrandr --output LVDS --rotate left
xrandr --output LVDS --rotate right
xrandr --output LVDS --rotate normal
xrandr --output LVDS --rotate inverted

After some number of these, the X server is still crashing...
Comment 4 Alex Deucher 2008-10-01 12:22:54 UTC
Can you start the xserver in gdb rather than attaching to the running process?  It'd be nice to get a backtrace.  Unfortunately, I can't reproduce it here.  It looks like it may be related the dixLookupPrivate changes.
Comment 5 Jim Gettys 2008-10-01 13:14:08 UTC
OK, that worked.  Here's the backtrace...

#0  dixLookupPrivate (privates=0x198, key=0x81df2d8)
    at ../../dix/privates.c:131
	rec = <value optimized out>
	ptr = <value optimized out>
#1  0x080c871b in xf86ResizeOffscreenLinear (resize=0x96a7c58, size=1024000)
    at ../../../../hw/xfree86/common/xf86fbman.c:199
No locals.
#2  0xb79f0f77 in radeon_allocate_memory (pScrn=0x968bf58, 
    mem_struct=0x96a6480, size=4096000, align=4096)
    at ../../src/radeon_memory.c:61
	linear = <value optimized out>
	pScreen = (ScreenPtr) 0x96a8458
	info = <value optimized out>
	offset = <value optimized out>
#3  0xb7a1615e in radeon_crtc_shadow_allocate (crtc=0x96a62a0, width=1280, 
    height=800) at ../../src/radeon_crtc.c:421
	pScrn = (ScrnInfoPtr) 0x198
	rotate_offset = <value optimized out>
#4  0x080f40c8 in xf86CrtcRotate (crtc=0x96a62a0, mode=0xbfa89870, rotation=4)
    at ../../../../hw/xfree86/modes/xf86Rotate.c:607
	shadowData = <value optimized out>
	shadow = (PixmapPtr) 0x0
	width = 1280
	height = 800
	old_width = 0
	old_height = 0
	pScrn = <value optimized out>
	pScreen = (ScreenPtr) 0x96a8458
	crtc_to_fb = {matrix = {{-65536, 0, 83886080}, {0, -65536, 52428800}, {
      0, 0, 65536}}}
	fb_to_crtc = {matrix = {{-65536, 0, 83886080}, {0, -65536, 52428800}, {
      0, 0, 65536}}}
#5  0x080eb243 in xf86CrtcSetMode (crtc=0x96a62a0, mode=0xbfa89870, 
    rotation=408, x=0, y=0) at ../../../../hw/xfree86/modes/xf86Crtc.c:312
	scrn = (ScrnInfoPtr) 0x968bf58
	i = <value optimized out>
	ret = <value optimized out>
	didLock = 0
	adjusted_mode = (DisplayModePtr) 0x9897d40
	saved_mode = {prev = 0x0, next = 0x0, name = 0x0, status = MODE_OK, 
  type = 0, Clock = 71450, HDisplay = 1280, HSyncStart = 1301, 
  HSyncEnd = 1333, HTotal = 1460, HSkew = 0, VDisplay = 800, VSyncStart = 804, 
  VSyncEnd = 808, VTotal = 816, VScan = 0, Flags = 10, ClockIndex = 0, 
  SynthClock = 0, CrtcHDisplay = 1280, CrtcHBlankStart = 1280, 
  CrtcHSyncStart = 1301, CrtcHSyncEnd = 1333, CrtcHBlankEnd = 1460, 
  CrtcHTotal = 1460, CrtcHSkew = 0, CrtcVDisplay = 800, CrtcVBlankStart = 800,
   CrtcVSyncStart = 804, CrtcVSyncEnd = 808, CrtcVBlankEnd = 816, 
  CrtcVTotal = 816, CrtcHAdjusted = 0, CrtcVAdjusted = 0, PrivSize = 0, 
  Private = 0x0, PrivFlags = 0, HSync = 0, VRefresh = 0}
	saved_x = 0
	saved_y = 0
	saved_rotation = 1
#6  0x080f2582 in xf86RandR12CrtcSet (pScreen=0x96a8458, randr_crtc=0x96a90a8, 
    randr_mode=0x96a9930, x=0, y=0, rotation=408, num_randr_outputs=1, 
    randr_outputs=0xbfa89a30) at ../../../../hw/xfree86/modes/xf86RandR12.c:769
	mode = {prev = 0x0, next = 0x0, name = 0x0, status = MODE_OK, 
  type = 0, Clock = 71450, HDisplay = 1280, HSyncStart = 1301, 
  HSyncEnd = 1333, HTotal = 1460, HSkew = 0, VDisplay = 800, VSyncStart = 804, 
  VSyncEnd = 808, VTotal = 816, VScan = 0, Flags = 10, ClockIndex = 0, 
  SynthClock = 0, CrtcHDisplay = 1280, CrtcHBlankStart = 1280, 
  CrtcHSyncStart = 1301, CrtcHSyncEnd = 1333, CrtcHBlankEnd = 1460, 
  CrtcHTotal = 1460, CrtcHSkew = 0, CrtcVDisplay = 800, CrtcVBlankStart = 800, 
  CrtcVSyncStart = 804, CrtcVSyncEnd = 808, CrtcVBlankEnd = 816, 
  CrtcVTotal = 816, CrtcHAdjusted = 0, CrtcVAdjusted = 0, PrivSize = 0, 
  Private = 0x0, PrivFlags = 0, HSync = 0, VRefresh = 0}
	pScrn = (ScrnInfoPtr) 0x968bf58
	crtc = (xf86CrtcPtr) 0x96a62a0
	changed = 1
	o = <value optimized out>
	ro = <value optimized out>
	save_enabled = 1
#7  0x0816ce96 in RRCrtcSet (crtc=0x96a90a8, mode=0x96a9930, x=0, y=0, 
    rotation=<value optimized out>, numOutputs=1, outputs=0xbfa89a30)
    at ../../randr/rrcrtc.c:302
	pScreen = (ScreenPtr) 0x96a8458
	ret = <value optimized out>
#8  0x08171f1b in ProcRRSetScreenConfig (client=0x9899108)
    at ../../randr/rrscreen.c:922
	rep = {type = 8 '\b', status = 145 '\221', sequenceNumber = 2441, 
  length = 136311872, newTimestamp = 3215497816, 
  newConfigTimestamp = 135622986, root = 136311876, subpixelOrder = 39476, 
  pad4 = 49064, pad5 = 159968648, pad6 = 23}
	pDraw = (DrawablePtr) 0x96fec20
	rc = <value optimized out>
	pScreen = (ScreenPtr) 0x96a8458
	pScrPriv = (rrScrPrivPtr) 0x96a9f78
	time = {months = 0, milliseconds = 8555932}
	i = 0
	rate = 60
	has_rate = 1
	output = (RROutputPtr) 0x96aa128
	crtc = (RRCrtcPtr) 0x96a90a8
	mode = (RRModePtr) 0x96a9930
	pData = (RR10DataPtr) 0x96e72f8
	pSize = (RRScreenSizePtr) 0x96e730c
	width = 1280
	height = 800
#9  0x0816b5a5 in ProcRRDispatch (client=0x198) at ../../randr/randr.c:476
No locals.
#10 0x0808c91f in Dispatch () at ../../dix/dispatch.c:454
	result = <value optimized out>
	client = (ClientPtr) 0x9899108
	nready = 0
	start_tick = 3400
#11 0x08071d8d in main (argc=1, argv=0xbfa89ba4, envp=Cannot access memory at address 0x1a0
) at ../../dix/main.c:441
	i = <value optimized out>
	error = 136146932
	xauthfile = <value optimized out>
	alwaysCheckForInput = {0, 1}
(gdb) 

Comment 6 Jim Gettys 2008-10-01 19:08:26 UTC
FWIW: this time, before crashing, it put some trash on the screen; clearly pixmaps that don't belong on the screen....

Something is trashing memory allocation.
Comment 7 Michel Dänzer 2008-10-02 00:59:30 UTC
Does this also happen with EXA rather than XAA?
Comment 8 Jim Gettys 2008-10-02 07:40:43 UTC
Yes.  Still crashes.
Comment 9 Alex Deucher 2008-10-03 06:08:14 UTC
if you are running a git based version of ati can you try again with 6.9.0?
Comment 10 Alex Deucher 2009-11-11 10:31:25 UTC
Is this still an issue with xf86-video-ati from git master or a newer xserver?
Comment 11 Alex Deucher 2010-10-19 16:43:31 UTC
closing due to lack of feedback.


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.