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);
Attachment:
signature.asc
Description: Digital signature