exa, kdrive, and segfault

Arnaud Mouiche arnaud.mouiche at thomson.net
Thu Dec 3 02:25:16 PST 2009


Michel Dänzer wrote:
> On Thu, 2009-12-03 at 09:48 +0100, Arnaud Mouiche wrote:
>   
>> Hi,
>>
>> I start to play with EXA and tried to implement it under kdrive, for a
>> Davinci implementation
>> (http://focus.ti.com/docs/prod/folders/print/tms320dm6446.html)
>>
>> - staring with version 1.7.1 of xserver (getting from xorg 7.5)
>> - as davinci can be consider as a slow platform, so target kdrive for
>> that job
>> - copy/paste  hw/kdrive/fbdev as a starting point (working fine) and
>> looks at what hw/kdrive/ephyr is doing for EXA init, and with a EXA
>> implementation that does nothing first.
>>
>> there is a segfault when using "ExaMigrationSmart" and/or when
>> "checkDirtyCorrectness" is true.
>> not happened with "ExaMigrationGreedy", 
>>     
>
> Note that the default in Xorg is ExaMigrationAlways, and the other
> heuristics haven't been actively maintained since that's been the case.
>   
ok, good to know !
>
>   
>> and the segfault  is due to a use of 
>>     REGION_NOTEMPTY (pScreen, DamageRegion(pExaPixmap->pDamage)
>> with pExaPixmap->pDamage == NULL
>> (see background informations for the whole details)
>>     
>
> Does the patch below fix the crash?
>   
yes it (obviously) fix this the crash, and no other place with such 
pExaPixmap->pDamage miss use up to now.
I will continue this way, with ExaMigrationAlways, and report any other 
issue.

Thanks,

arnaud

>
> diff --git a/exa/exa_migration_classic.c b/exa/exa_migration_classic.c
> index 95189be..871679f 100644
> --- a/exa/exa_migration_classic.c
> +++ b/exa/exa_migration_classic.c
> @@ -75,6 +75,9 @@ exaPixmapIsDirty (PixmapPtr pPix)
>      if (pExaPixmap == NULL)
>  	EXA_FatalErrorDebugWithRet(("EXA bug: exaPixmapIsDirty was called on a non-exa pixmap.\n"), TRUE);
>  
> +    if (!pExaPixmap->pDamage)
> +	return FALSE;
> +
>      return REGION_NOTEMPTY (pScreen, DamageRegion(pExaPixmap->pDamage)) ||
>  	!REGION_EQUAL(pScreen, &pExaPixmap->validSys, &pExaPixmap->validFB);
>  }
>
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.x.org/archives/xorg-devel/attachments/20091203/7a775935/attachment.html 


More information about the xorg-devel mailing list