Control: tag -1 moreinfo On Tue, Oct 08, 2013 at 02:16:10AM +0300, Pauli wrote: > Package: xserver-xorg-core > Version: 2:1.14.3-3 > Severity: normal > Tags: upstream patch > > Dear Maintainer, > > With hydrid graphics laptop I had started X with discreet radein set as > primary card using vgaswitcheroo. During that run I ended up trying to > enable PRIME offloading to radeon: > > xrandr --setprovideroutputsource radeon Intel > > That led to following crash: > #0 0x00007ff44fd431e5 in __GI_raise (sig=sig@entry=6) at > ../nptl/sysdeps/unix/sysv/linux/raise.c:56 > #1 0x00007ff44fd46398 in __GI_abort () at abort.c:90 > #2 0x00007ff44fd3c272 in __assert_fail_base (fmt=0x7ff44fe799c0 "%s%s%s:%u: > %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7ff452186ce7 > "slave->isGPU", > file=file@entry=0x7ff452186cb2 "../../dix/dispatch.c", > line=line@entry=3937, function=function@entry=0x7ff452186d80 > <__PRETTY_FUNCTION__.17904> "DetachUnboundGPU") > at assert.c:92 > #3 0x00007ff44fd3c322 in __GI___assert_fail > (assertion=assertion@entry=0x7ff452186ce7 "slave->isGPU", > file=file@entry=0x7ff452186cb2 "../../dix/dispatch.c", > line=line@entry=3937, function=function@entry=0x7ff452186d80 > <__PRETTY_FUNCTION__.17904> "DetachUnboundGPU") at assert.c:101 > #4 0x00007ff45202b2f0 in DetachUnboundGPU (slave=slave@entry=0x7ff45429c0d0) > at ../../dix/dispatch.c:3937 > #5 0x00007ff4520a77fd in xf86RandR14ProviderSetOffloadSink > (pScreen=0x7ff45429c0d0, provider=0x7ff4526ece20, > sink_provider=0x7ff45428f970) > at ../../../../hw/xfree86/modes/xf86RandR12.c:1821 > #6 0x00007ff4520ec911 in ProcRRSetProviderOffloadSink (client=<optimized > out>) at ../../randr/rrprovider.c:338 > #7 0x00007ff45202ad6e in Dispatch () at ../../dix/dispatch.c:432 > #8 0x00007ff45201a2ca in main (argc=10, argv=0x7fff78e24868, envp=<optimized > out>) at ../../dix/main.c:298 > > Problem is missing check that provider is actually configured as offscreen > card in protocol request validation. > > Attached patch adds the missing check to the protocol layer to avoid > server from asserting. >
Hi, is this still an issue with a newer xserver-xorg-core version (e.g. the version from jessie or stretch/sid)? Thanks, Andreas > diff --git a/randr/rrprovider.c b/randr/rrprovider.c > index b321e62..53a610a 100644 > --- a/randr/rrprovider.c > +++ b/randr/rrprovider.c > @@ -291,6 +291,8 @@ ProcRRSetProviderOutputSource(ClientPtr client) > > if (!(provider->capabilities & RR_Capability_SinkOutput)) > return BadValue; > + if (!provider->pScreen->isGPU) > + return BadValue; > > if (stuff->source_provider) { > VERIFY_RR_PROVIDER(stuff->source_provider, source_provider, > DixReadAccess); > @@ -322,6 +324,8 @@ ProcRRSetProviderOffloadSink(ClientPtr client) > VERIFY_RR_PROVIDER(stuff->provider, provider, DixReadAccess); > if (!(provider->capabilities & RR_Capability_SourceOffload)) > return BadValue; > + if (!provider->pScreen->isGPU) > + return BadValue; > > if (stuff->sink_provider) { > VERIFY_RR_PROVIDER(stuff->sink_provider, sink_provider, > DixReadAccess);
signature.asc
Description: Digital signature