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 0x7ff44fd431e5 in __GI_raise (sig=sig@entry=6) at
> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> #1 0x7ff44fd46398 in __GI_abort () at abort.c:90
> #2 0x7ff44fd3c272 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 0x7ff44fd3c322 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 0x7ff45202b2f0 in DetachUnboundGPU (slave=slave@entry=0x7ff45429c0d0)
> at ../../dix/dispatch.c:3937
> #5 0x7ff4520a77fd in xf86RandR14ProviderSetOffloadSink
> (pScreen=0x7ff45429c0d0, provider=0x7ff4526ece20,
> sink_provider=0x7ff45428f970)
> at ../../../../hw/xfree86/modes/xf86RandR12.c:1821
> #6 0x7ff4520ec911 in ProcRRSetProviderOffloadSink (client= out>) at ../../randr/rrprovider.c:338
> #7 0x7ff45202ad6e in Dispatch () at ../../dix/dispatch.c:432
> #8 0x7ff45201a2ca in main (argc=10, argv=0x7fff78e24868, envp= 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