[Mesa-dev] [PATCH] etnaviv: fix resource usage tracking across different pipe_context's

Marek Vasut marex at denx.de
Wed Dec 12 00:17:15 UTC 2018


On 12/11/2018 10:40 PM, Lukas F. Hartmann wrote:
> Hi,

Hi,

> I tested the patch on i.MX6QP with:
> Linux reform 4.20.0-rc2-00133-g1ce80e0fe98e-dirty #10 SMP Mon Nov 26
> 02:02:42 CET 2018 armv7l GNU/Linux
> 
> Running a recent Xorg built from source with modesetting driver and
> etnaviv.
> 
> I was getting segfaults after a few seconds of usage and tracked them
> down to a corrupt pointer (probably use-after-free):
> 
> http://dump.mntmn.com/marexpatch-trace1.txt.html
> 
> After looking at your patch for a while I came up with this addition
> (last line) in etna_resource.c, to remove the resource from the
> used_resources set when it is destroyed.
> 
> @@ -464,6 +469,9 @@ etna_resource_destroy(struct pipe_screen *pscreen,
> struct pipe_resource *prsc) {
>     struct etna_resource *rsc = etna_resource(prsc);
>  
> +   _mesa_set_destroy(rsc->pending_ctx, NULL);
> +   _mesa_set_remove_key(etna_screen(pscreen)->used_resources, rsc);
> 
> I've been running with this version for a few days and it seems stable.
> The patch seems to do its job (tested qupzilla and qutebrowser, no
> more corrupted tiles). Just sometimes an occassional black tile shows
> up. So something is still up, but the patch is a perceived improvement.

Nice, thanks. Lemme try that here too.

-- 
Best regards,
Marek Vasut


More information about the mesa-dev mailing list