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

Rémi Denis-Courmont remi at remlab.net
Fri May 24 09:36:16 CEST 2019


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(). 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é.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190524/4382708c/attachment.html>


More information about the vlc-devel mailing list