[vlc-devel] [vlc-commits] Remove libvlc_free

Rémi Denis-Courmont remi at remlab.net
Fri May 24 10:04:32 CEST 2019


If you don't have the right free inside the EXE, you cannot call LibVLC directly as already explained several times. So it's moot whether you have libvlc_free() or not.

Le 24 mai 2019 10:44:11 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>On 2019-05-24 9:36, Rémi Denis-Courmont wrote:
>> I don't know what point you are trying to make here. Nobody
>questioned 
>> that mismatched heap allocators would crash. Of course they would.
>> 
>> The problem is that if you can't get the right free() function, then
>you 
>> can't call libvlc_free().
>
>Yes, you can get the right free(), if the free() call is done inside
>the 
>DLL and not the EXE. It was possible before you removed libvlc_free(). 
>It was even documented as such.
>
>Now this trivial use case is not even possible with current state of 
>libvlc. The host cannot reliably release the memory it is given.
>
>  At that point, the code is probably already UB
>> even before freeing the allocation either way.
>> 
>> Le 24 mai 2019 09:37:20 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a
>écrit :
>> 
>>     On 2019-05-24 7:44, Steve Lhomme wrote:
>> 
>>         On 2019-05-24 7:25, Steve Lhomme wrote:
>> 
>>             On 2019-05-23 17:11, Rémi Denis-Courmont wrote:
>> 
>>                 Le torstaina 23. toukokuuta 2019, 13.57.32 EEST Steve
>>                 Lhomme a écrit :
>> 
>>                     Here's another one: we could decide to rewrite
>>                     libvlc in C++ and keep
>>                     the same ABI. Does that mean we would have to
>forced
>>                     libvlc hosts to
>>                     call "delete psz-str" because we don't feel like
>>                     keeping
>>                     libvlc_free() ?
>> 
>> 
>>                 You would have to keep using malloc() otherwise you
>>                 would break the
>>                 existing
>>                 ABI 3.0 or 4.0 anyway that says you can use free().
>> 
>> 
>>             That's indeed a problem. I think the free() option should
>>             not have
>>             been there in the first place. I would rather vote to
>remove
>>             this option.
>> 
>>             For example we could decide that for performance reasons
>we
>>             allocate
>>             using aligned_alloc(). On some system that requires an
>>             aligned_free().
>>             We cannot do that if we allow free() of a particular
>runtime.
>> 
>> 
>>         Another use case: building libvlc/vlc with allocation
>tooling,
>>         redirecting malloc/free to debug leaks. Calling free()
>outside
>>         of libvlc
>>         with memory allocated this will likely crash or report errors
>>         when a
>>         legitimate free() is done. We should not tie our hands by
>allowing
>>         free() at all.
>> 
>> 
>>     Attached is a quick example of a library done incorrectly:
>> 
>>     The EXE links with the *debug* DLL C runtime, as most people
>would use
>>     while debugging their code.
>> 
>>     The DLL links with the *standard* DLL C runtime, as a distributed
>DLL
>>     would use.
>> 
>>     Calling free() on the memory returned by the DLL crashes with a
>heap
>>     allocation error. That doesn't happen is the free() is done in
>the DLL.
>> 
>> 
>> -- 
>> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez
>excuser 
>> ma brièveté.
>> 
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>> 
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel

-- 
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190524/8aaef53a/attachment.html>


More information about the vlc-devel mailing list