Summary: | Server crashes after upgrade: X: ../../../include/privates.h:122: dixGetPrivateAddr: Assertion `key->initialized' failed. | ||||||
---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | David Ronis <David.Ronis> | ||||
Component: | Server/General | Assignee: | Keith Packard <keithp> | ||||
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> | ||||
Severity: | critical | ||||||
Priority: | medium | ||||||
Version: | git | ||||||
Hardware: | x86 (IA32) | ||||||
OS: | Linux (All) | ||||||
Whiteboard: | |||||||
i915 platform: | i915 features: | ||||||
Bug Depends on: | |||||||
Bug Blocks: | 27592 | ||||||
Attachments: |
|
Description
David Ronis
2010-06-07 08:54:52 UTC
A stack trace would be really useful here; obviously it's not crashing for everyone... Obviously... The stacktrace is below. Note that this is an older machine, a HP laptop, with a Radeon Mobility 9100IGP graphics card. I have had several, as yet unresolved, issues with this card (e.g., https://bugs.freedesktop.org/show_bug.cgi?id=25597), and most recently GL has stopped working properly. Here's the stactrace X: ../../../include/privates.h:122: dixGetPrivateAddr: Assertion `key->initialized' failed. Program received signal SIGABRT, Aborted. 0xb72aec66 in raise () from /lib/libc.so.6 (gdb) thread apply all bt full Thread 1 (Thread 0xb726b7c0 (LWP 18702)): #0 0xb72aec66 in raise () from /lib/libc.so.6 No symbol table info available. #1 0xb72b0571 in abort () from /lib/libc.so.6 No symbol table info available. #2 0xb72a7e60 in __assert_fail () from /lib/libc.so.6 No symbol table info available. #3 0xb71e323e in dixGetPrivateAddr (privates=0x826c648, key=0xb71e7e9c) at ../../../include/privates.h:122 __PRETTY_FUNCTION__ = "dixGetPrivateAddr" #4 0xb71e32a9 in dixGetPrivate (privates=0x826c648, key=0xb71e7e9c) at ../../../include/privates.h:137 __PRETTY_FUNCTION__ = "dixGetPrivate" #5 0xb71e334a in dixLookupPrivate (privates=0x826c648, key=0xb71e7e9c) at ../../../include/privates.h:167 No locals. #6 0xb71e3379 in DRI2GetScreen (pScreen=0x826c4f0) at dri2.c:112 No locals. #7 0xb71e4dd4 in DRI2Connect (pScreen=0x826c4f0, driverType=0, fd=0x82aea38, driverName=0xbfacd428, deviceName=0xbfacd424) at dri2.c:959 ds = 0xb71e4dc3 #8 0xb7237784 in __glXDRIscreenProbe (pScreen=0x826c4f0) at glxdri2.c:704 ---Type <return> to continue, or q <return> to quit--- driverName = 0xbfacd448 "\230Ô¬¿+\206\"·ðÄ&\bó\203\"·" deviceName = 0xb72455b8 "hÔ\005" screen = 0x82ae9e8 filename = "ØÎ*\bh\000\000\000h\000\000\000h\000\000\000ô¿<·\220ç*\b`{#\bà\214r·\000\000\000\000øÓ¬¿@7\006\bô¿<·\000\000\000\000 Ñ<·øÓ¬¿Í\027/· Ñ<·\020\000\000\000`{#\bà\214r·\000\000\000\000(Ô¬¿\026\200\006\b\020\000\000\000\001\000\000\000\000\000\000\000?\220\036·\005\000\000\000\000\200\036·ÔÕ\005\000Hâ*\b|Í\004\b" buffer_size = 134644858 pScrn = 0x82620d8 extensions = 0x824bb94 driConfigs = 0x82ae248 i = 134644783 #9 0xb722862b in GlxExtensionInit () at glxext.c:378 glxScreen = 0x811503b extEntry = 0x806cd35 pScreen = 0x826c4f0 i = 0 p = 0xb7247e7c glx_provided = 0 #10 0x080d158e in InitExtensions (argc=1, argv=0xbfacd5a4) at ../../../mi/miinitext.c:541 i = 26 ---Type <return> to continue, or q <return> to quit--- ext = 0x82a7e80 listInitialised = 1 #11 0x0806324e in main (argc=1, argv=0xbfacd5a4, envp=0xbfacd5ac) at main.c:211 i = 256 alwaysCheckForInput = {0, 1} Looks like your driver isn't calling DRI2ScreenInit. Here's a patch which makes DRI2 simply fail in that case: diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index d33b0d1..96a8db4 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -956,8 +956,12 @@ Bool DRI2Connect(ScreenPtr pScreen, unsigned int driverType, int *fd, const char **driverName, const char **deviceName) { - DRI2ScreenPtr ds = DRI2GetScreen(pScreen); + DRI2ScreenPtr ds; + + if (!dixPrivateKeyRegistered(dri2ScreenPrivateKey)) + return FALSE; + ds = DRI2GetScreen(pScreen); if (ds == NULL || driverType >= ds->numDrivers || !ds->driverNames[driverType]) return FALSE; I applied the patch, and now X starts. I'm using the radeon driver. From Xorg.0.log [ 27850.031] (II) Loading /usr/lib/xorg/modules/drivers/radeon_drv.so [ 27850.031] (II) Module radeon: vendor="X.Org Foundation" [ 27850.031] compiled for 1.8.99, module version = 6.13.99 [ 27850.031] Module class: X.Org Video Driver I'll atach the rest of the log file. Created attachment 36118 [details]
Log file after patch
Shouldn't the patch be committed? Thanks for testing, this is in commit 505724c5f3e4fc1475fa54f20d08c0c06fb32443 |
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.