From: Soft Works <softworkz@hotmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] av_fopen_utf8 and cross-DLL CRT object sharing issue on Windows
Date: Mon, 9 May 2022 00:30:32 +0000
Message-ID: <DM8P223MB036545C0B5609796883406D1BAC69@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <bfb9b857-6eba-4acb-e36a-dd55cb57bb4c@martin.st>
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> Martin Storsjö
> Sent: Sunday, May 8, 2022 10:12 PM
> To: FFmpeg development discussions and patches <ffmpeg-
> devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] av_fopen_utf8 and cross-DLL CRT object
> sharing issue on Windows
>
> On Sat, 7 May 2022, Soft Works wrote:
>
> >> -----Original Message-----
> >> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> >> Andreas Rheinhardt
> >> Sent: Saturday, May 7, 2022 6:32 AM
> >> To: ffmpeg-devel@ffmpeg.org
> >> Subject: Re: [FFmpeg-devel] av_fopen_utf8 and cross-DLL CRT object
> >> sharing issue on Windows
> >>
> >> Soft Works:
> >>>
> >>>
> >>>> -----Original Message-----
> >>>
> >>> I don't have experience with that kind of setup, but I would have
> >>> thought that with separate CRTs, you could already get into
> trouble
> >>> when you would allocate a string in the main application which
> >>> you pass to any of the DLL's APIs and which might get freed by
> >>> the DLL at a later time - doesn't that fail?
> >>>
> >>
> >> Whenever any of the FFmpeg libraries takes ownership of a string or
> >> another buffer*, we require it to be freeable with av_free
> (typically
> >> by
> >> saying that it needs to be allocated with the av_malloc family of
> >> functions). So all allocs and frees have to happen in libavutil.
> This
> >> is
> >> also true for all the other allocations directly performed by the
> the
> >> FFmpeg libraries.
> >> (The only exceptions to this are AVBuffer(Ref)s which allow users
> to
> >> use
> >> custom allocators and destructors.)
> >
> > Ah yes of course, thanks for the explanation. I still wonder whether
> > there aren't any other issues when multiple CRTs are being used?
> >
> > Or are the file IO APIs the only "weak" point with regards to
> > multiple CRTs being used?
>
> In the case of ffmpeg, yes.
>
> For generic library design, you'd have an issue anywhere where you
> pass
> CRT resources around - file descriptors from open, FILE*, and indeed
> as
> you mentioned - allocating and freeing memory with malloc/free in
> different DLLs. But as long as the library design is such that you
> don't
> hand over ownership of allocations and don't pass such objects across
> DLL
> boundaries, there's no issue.
Yup, understood. I thought there would be many more, but I realized
that those "many more" I thought about are all C++ things, not C.
So, putting this all together, I agree that the existence of
av_fopen_utf8 (as a public API!) is rather unfortunate. To make this
consistent, it would be necessary to provide av_ equivalents to
all the file APIs as well (but there are quite a few).
So I wonder whether it wouldn't make sense to deprecate this as
a public API member?
Kind regards,
softworkz
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-05-09 0:30 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-20 12:47 Martin Storsjö
2022-05-07 4:22 ` Soft Works
2022-05-07 4:32 ` Andreas Rheinhardt
2022-05-07 5:02 ` Soft Works
2022-05-08 20:11 ` Martin Storsjö
2022-05-09 0:30 ` Soft Works [this message]
2022-05-09 9:41 ` Martin Storsjö
2022-05-09 10:38 ` Soft Works
2022-05-09 10:47 ` Martin Storsjö
2022-05-09 10:53 ` Soft Works
2022-05-08 20:01 ` Martin Storsjö
2022-05-09 0:28 ` Soft Works
2022-05-09 9:36 ` Martin Storsjö
2022-05-09 10:59 ` Soft Works
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DM8P223MB036545C0B5609796883406D1BAC69@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM \
--to=softworkz@hotmail.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git