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

Steve Lhomme robux4 at ycbcr.xyz
Fri May 24 10:35:12 CEST 2019


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
> 


More information about the vlc-devel mailing list