Bug 17982

Summary: crash when running xrandr --query and DRI compiled in
Product: xorg Reporter: Lee Leahu <6khRTwRnE3AB>
Component: Server/Ext/DRIAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: ewalsh
Version: git   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Lee Leahu 2008-10-08 11:34:37 UTC
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fa2291946f0 (LWP 16297)]
0x0000000000432a02 in privateExists (privates=0x902c70, key=0x0) at privates.c:79
79          return *key && *privates &&
(gdb) bt
#0  0x0000000000432a02 in privateExists (privates=0x902c70, key=0x0) at privates.c:79
#1  0x0000000000432ad3 in dixSetPrivate (privates=0x902c70, key=0x0, val=0x90b950) at privates.c:188
#2  0x00007fa2262e7baf in DRIScreenInit (pScreen=0x9029e0, pDRIInfo=0xabed70, pDRMFD=0x8a2040) at dri.c:358
#3  0x00007fa225e92c87 in RADEONDRIScreenInit (pScreen=0x9029e0) at radeon_dri.c:1550
#4  0x00007fa225e4da77 in RADEONScreenInit (scrnIndex=0, pScreen=0x9029e0, argc=4, argv=0x7fff311ab9c8)
    at radeon_driver.c:3442
#5  0x0000000000432497 in AddScreen (pfnInit=0x7fa225e4cfd0 <RADEONScreenInit>, argc=4, argv=0x7fff311ab9c8) at main.c:690
#6  0x0000000000486920 in InitOutput (pScreenInfo=0x86df60, argc=4, argv=0x7fff311ab9c8) at xf86Init.c:1089
#7  0x000000000043168d in main (argc=4, argv=0x7fff311ab9c8, envp=0x7fff311ab9f0) at main.c:310


hardware:
 - amd turion 64bit
 - radeon xpress 200m 5955 pcie
Comment 1 Lee Leahu 2008-10-08 13:13:25 UTC
This also affects 32bit platforms:
  - AMD Athlon XP 3000+
  - ATI Radeon 9600

The build is based on the git version.
Last commit in the git version is 'd744dc013cf5ca3141c0fdf55e36d713fe9f53ba'
Comment 2 Lee Leahu 2008-10-08 14:13:42 UTC
This seems only to be triggered when the driver is build with dri support enabled.
Comment 3 Michel Dänzer 2008-10-09 01:36:15 UTC
I think this was introduced by xserver commit 4017d3190234e189a0bbd33193a148d4d3c7556b ('devPrivates rework: since API is already broken, switch everything over to new system.'): DRICloseScreen() sets DRIScreenPrivKey = NULL, and there's no code to set it to non-NULL for the next server generation.

Eamon, how should this be fixed? Just drop the DRIScreenPrivKey = NULL assignments?
Comment 4 Maarten Maathuis 2008-10-10 14:32:49 UTC
Should be fixed in 5b336585a4cdf11d20831a9536ad581e959ea7f1.

I tested it and grepped the code for other instances of setting the NULL, but found none. There is also no sane reason to change this pointer imo.
Comment 5 Lee Leahu 2008-10-15 17:31:25 UTC
Confirming fixed in 5b336585a4cdf11d20831a9536ad581e959ea7f1.

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.