First of all thanks for Daniel for the fix !

I followed the code on fossil-scm with printfs on va_start/va_end using the
previous tcc stdargs implementation and it showed me that both the parent
and child do va_end on the same pointer that's why the segfault.

And as I looked on the generated code by gcc/clang/pcc all of then do not
us alloc/call all is inlined so no problem of double free.

So I'll not bother look any further on fossil-scm to find why it happens
with the old tcc stdarg implementation.

Thanks again for all of you for this great work !


On Sat, Mar 29, 2014 at 11:37 PM, Michael Matz <matz....@frakked.de> wrote:

> Hi,
>
>
> On Sat, 29 Mar 2014, Domingo Alvarez Duarte wrote:
>
>  clang and pcc also generates inline assembly instead of call/alloc.
>>
>
> Yes.  I haven't said the relevant stdarg functions have to use malloc.
> They just need to interoperate with what the ABI says (and that's passing
> by pointer).  Daniel downthread is correct in that va_list itself doesn't
> have to be a pointer, that was merely TCCs way of fulfilling the ABI
> requirements.  So he fixed it meanwhile, so I'm fine.
>
> The fossil-scm issue should still be investigated somewhen.  TCCs old
> implementation of stdarg was conforming, so changing it to something else
> shouldn't affect any correctly written code (meaning that I'd suspect
> either some different bug in TCC that now is merely hidden, or a bug in
> fossil-scm (perhaps in their usage of stdarg functions) that's now hidden).
>
>
>
> Ciao,
> Michael.
>
> _______________________________________________
> Tinycc-devel mailing list
> Tinycc-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/tinycc-devel
>
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to