Comment # 8 on bug 1042012 from
(In reply to Dr. Werner Fink from comment #7)
> Created attachment 727291 [details]
> source-luatex.dif
> 
> (In reply to Richard Biener from comment #6)
> > So as I thought GCC is taking advantage of
> > 
> >  #ifdef _MSC_VER
> >  __declspec(align(16))
> >  #endif
> >  struct cdata {
> >      const struct ctype type
> >  #ifdef __GNUC__
> >        __attribute__ ((aligned(16)))
> >  #endif
> >        ;
> >  };
> > 
> > when loading from cd->type but
> > 
> >     cd = (struct cdata*) lua_touserdata(L, idx);
> > 
> > lua_touserdata doesn't honor that alignment.  You can probably see that
> > at the point of the crash %eax is not aligned to 16 bytes.
> 
> Aha ... thanks, with the attached patch the problem is gone. Maybe gcc7
> should throw an error at compile time if the aligment does not fit.

Well, the compiler doesn't know that lua_touserdata doesn't properly align
the type.  Whatever that function does.

Dropping the aligned attribute is a valid fix (the extra NULL check seems
unrelated to the issue).  Is the aligned attribute new compared to the old
sources?

> The function lua_touserdata() is from lua52 library


You are receiving this mail because: