[Mesa-dev] [PATCH v2 05/32] glsl: Zero per_vertex_accumulator::fields for valgrind & nir_serialize

Jason Ekstrand jason at jlekstrand.net
Fri Oct 20 21:14:25 UTC 2017


On Thu, Oct 19, 2017 at 4:51 PM, Kenneth Graunke <kenneth at whitecape.org>
wrote:

> On Wednesday, October 18, 2017 10:31:53 PM PDT Jordan Justen wrote:
> > Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> > ---
> >  src/compiler/glsl/builtin_variables.cpp | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/src/compiler/glsl/builtin_variables.cpp
> b/src/compiler/glsl/builtin_variables.cpp
> > index ea2d897cc8..d3cf12475b 100644
> > --- a/src/compiler/glsl/builtin_variables.cpp
> > +++ b/src/compiler/glsl/builtin_variables.cpp
> > @@ -318,6 +318,7 @@ per_vertex_accumulator::per_vertex_accumulator()
> >     : fields(),
> >       num_fields(0)
> >  {
> > +   memset(fields, 0, sizeof(fields));
> >  }
>
> This shouldn't fix anything, we're calling the fields() constructor,
> which should value-initialize every element of the fields array,
> calling the constructor for glsl_struct_type on each element.
>
> That constructor is supposed to zero initialize items.  Maybe it is
> missing some of them?
>

No, the problem is that, when we do the user data check in the blob code,
valgrind complains about the padding bytes in-between field elements.  C++
constructors don't initialize that data.  That said, I agree that this is a
tad sketchy.  I just wish there were some way to shut up valgrind.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171020/60b2e601/attachment.html>


More information about the mesa-dev mailing list