| Summary: | savage fail in fb overlay privates | ||
|---|---|---|---|
| Product: | xorg | Reporter: | Dave Airlie <airlied> |
| Component: | Driver/savage | Assignee: | Xorg Project Team <xorg-team> |
| Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> |
| Severity: | normal | ||
| Priority: | medium | CC: | toni.spets |
| Version: | git | ||
| Hardware: | Other | ||
| OS: | All | ||
| Whiteboard: | |||
| i915 platform: | i915 features: | ||
#5 0x080bb8ad in CMapRefreshColors (pmap=<value optimized out>,
defs=<value optimized out>, indices=0x9d770a0)
at ../../../../hw/xfree86/common/xf86cmap.c:669
#6 0x080bc06b in CMapReinstallMap (pmap=0x0)
at ../../../../hw/xfree86/common/xf86cmap.c:542
#7 0x080eb040 in compInstallColormap (pColormap=0x9fa3e78)
at ../../composite/compinit.c:100
#8 0x08069d2a in ProcInstallColormap (client=0x9f7d5f8)
at ../../dix/dispatch.c:2451
#9 0x0806e087 in Dispatch () at ../../dix/dispatch.c:432
#10 0x080625ba in main (argc=6, argv=0xbfddd1a4, envp=0xbfddd1c0)
at ../../dix/main.c:291
other half of the backtrace.
Looks like the savage driver is trying to use fbOverlay functions without ever initializing it. I'll bet this fixes the problem:
diff --git a/src/savage_driver.c b/src/savage_driver.c
index 7c3ce90..324c4a4 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -4266,7 +4266,8 @@ SavageUpdateKey(ScrnInfoPtr pScrn, int r, int g, int b)
ul = 1;
ol = 0;
}
- if (!(pScreen = pScrn->pScreen)
+ if (!(pScreen = pScrn->pScreen)
+ || !psav->FBStart2nd
|| !(pScrOvlPriv = fbOverlayGetScrPriv(pScreen)))
return;
key = ((Shift(r,psav->overlay.redShift) & psav->overlay.redMask)
(In reply to comment #2) > Looks like the savage driver is trying to use fbOverlay functions without ever > initializing it. I'll bet this fixes the problem: > > diff --git a/src/savage_driver.c b/src/savage_driver.c > index 7c3ce90..324c4a4 100644 > --- a/src/savage_driver.c > +++ b/src/savage_driver.c > @@ -4266,7 +4266,8 @@ SavageUpdateKey(ScrnInfoPtr pScrn, int r, int g, int b) > ul = 1; > ol = 0; > } > - if (!(pScreen = pScrn->pScreen) > + if (!(pScreen = pScrn->pScreen) > + || !psav->FBStart2nd > || !(pScrOvlPriv = fbOverlayGetScrPriv(pScreen))) > return; > key = ((Shift(r,psav->overlay.redShift) & psav->overlay.redMask) That fixes the crash, thank you both. Please don't close until the fix is in git. fix pushed to git. Fixed in xf86-video-savage-2.3.2. Closing bug. |
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.
1.9.0 X server + savage from git #0 0x00f10416 in __kernel_vsyscall () #1 0x00173941 in raise () from /lib/libc.so.6 #2 0x00176e42 in abort () from /lib/libc.so.6 #3 0x0016c8e8 in __assert_fail () from /lib/libc.so.6 #4 0x002e12e1 in dixGetPrivateAddr (pScrn=<value optimized out>, r=<value optimized out>, g=0, b=0) at /usr/include/xorg/privates.h:122 #5 dixGetPrivate (pScrn=<value optimized out>, r=<value optimized out>, g=0, b=0) at /usr/include/xorg/privates.h:137 #6 dixLookupPrivate (pScrn=<value optimized out>, r=<value optimized out>, g=0, b=0) at /usr/include/xorg/privates.h:167 #7 SavageUpdateKey (pScrn=<value optimized out>, r=<value optimized out>, g=0, b=0) at savage_driver.c:4270 #7 SavageUpdateKey (pScrn=<value optimized out>, r=<value optimized out>, g=0, b=0) at savage_driver.c:4270 4270 || !(pScrOvlPriv = fbOverlayGetScrPriv(pScreen))) assert X: /usr/include/xorg/privates.h:122: dixGetPrivateAddr: Assertion `key->initialized' failed. may be a server bug.