[vlc-devel] [vlc-commits] Remove libvlc_free
Rémi Denis-Courmont
remi at remlab.net
Fri May 24 11:06:36 CEST 2019
Calling it in the DLL is UB if the thread has no CRT or the wrong CRT. As stated like 7 times already
Le 24 mai 2019 11:35:12 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>On 2019-05-24 10:04, Rémi Denis-Courmont wrote:
>> If you don't have the right free inside the EXE, you cannot call
>LibVLC
>
>I said you do the free *inside the DLL* in order to make it work.
>
>> 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é.
>>
>> _______________________________________________
>> 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/cbf0bfb2/attachment.html>
More information about the vlc-devel
mailing list