From: "Rémi Denis-Courmont" <remi@remlab.net>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH 1/5] lavu/common.h: Fix UB in av_clipl_int32_c()
Date: Thu, 30 May 2024 20:49:12 +0300
Message-ID: <3421890.a5N6fE6ukZ@basile.remlab.net> (raw)
In-Reply-To: <8012443e7bcefe0eea730fe694e38975a6a3d074.camel@haerdin.se>
Le torstaina 30. toukokuuta 2024, 19.48.13 EEST Tomas Härdin a écrit :
> > > Are you saying that UB is acceptable? You know the compiler is free
> > > to
> > > assume signed arithmetic doesn't overflow, right? If so then what
> > > other
> > > UB might we accept?
> >
> > He did not say that... He said we should switch to a better
> > implementation rather than trying to fix the existing potentially
> > buggy one.
>
> I have a fix for demonstrable UB and Rémi is problematizing it.
Andreas made cosmetic arguments against this patch before I had even seen the
patch, forget comment on it.
> It is not a "theoretical" UB - that's not how UB works.
It is a *theoretical* UB if you can not prove that it leads to misbehaviour in
any *practical* use. In theory, all UB is *potentially* fatal. Emphasis on
potentially.
So yes, while all UB instances are bad and deserve fixing, they are not all
equally bad nor urgent. UB that is proven to lead to remote code execution is
way worse than theoretical UB that has only been proven in literature, and is
not known or even seriously suspected to lead to broken optimisations.
> Any compiler doing
> basic value analysis will find it, and is therefore free to do whatever
> it wants, for example deleting all calls to av_clipl_int32_c().
That is formally true. But it is also formally true that, by that same logic,
since there is most certainly some UB instance left elsewhere in the codebase,
the entirety of libavutil could be elided by the compiler. In other words, in
theory, FFmpeg does not work at all. Does that mean that we should give up on
the project here and now?
> We could certainly replace some of these functions with intrinsics, but
> that's not what this patchset is about.
I am not sure what is your point because nobody said that av_clipl_int32_c()
should be replaced by intrinsics.
> I don't know what set of compilers we support.
That is irrelevant since all C99, C11 and C23 compilers support the proposed
substitute code as long as <stdint.h> defines int32_t.
> I don't know what intrinsics they support.
Also irrelevant.
> Am I to be compelled to figure that out, and provide the necessary
> intrinsics for all of them?
No, and you are the only person to have made an implication to the contrary as
far as *this* patch is concerned.
--
雷米‧德尼-库尔蒙
http://www.remlab.net/
_______________________________________________
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:[~2024-05-30 17:49 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-29 22:13 Tomas Härdin
2024-05-29 22:13 ` [FFmpeg-devel] [PATCH 2/5] lavu/common.h: Fix UB in av_clip_intp2_c() Tomas Härdin
2024-05-29 22:24 ` Andreas Rheinhardt
2024-05-29 23:08 ` Tomas Härdin
2024-05-29 22:14 ` [FFmpeg-devel] [PATCH 3/5] lavu/common.h: Fix UB in av_clip_uintp2_c() Tomas Härdin
2024-05-31 0:27 ` Michael Niedermayer
2024-05-29 22:14 ` [FFmpeg-devel] [PATCH 4/5] lavu/intmath.h: Fix UB in ff_ctz_c() and ff_ctzll_c() Tomas Härdin
2024-05-30 7:54 ` Rémi Denis-Courmont
2024-05-30 9:50 ` Tomas Härdin
2024-05-30 12:29 ` Hendrik Leppkes
2024-05-30 13:06 ` Rémi Denis-Courmont
2024-05-30 14:03 ` Tomas Härdin
2024-05-30 14:32 ` Rémi Denis-Courmont
2024-05-31 0:43 ` Ronald S. Bultje
2024-05-31 0:41 ` Michael Niedermayer
2024-05-31 5:48 ` Rémi Denis-Courmont
2024-05-31 0:31 ` Michael Niedermayer
2024-05-29 22:15 ` [FFmpeg-devel] [PATCH 5/5] lavu/mathematics: Return early if either a or b is zero Tomas Härdin
2024-05-31 0:22 ` Michael Niedermayer
2024-05-31 15:21 ` Tomas Härdin
2024-05-29 22:31 ` [FFmpeg-devel] [PATCH 1/5] lavu/common.h: Fix UB in av_clipl_int32_c() Andreas Rheinhardt
2024-05-30 9:48 ` Tomas Härdin
2024-05-30 6:41 ` Rémi Denis-Courmont
2024-05-30 9:40 ` Tomas Härdin
2024-05-30 11:50 ` Rémi Denis-Courmont
2024-05-30 14:07 ` Tomas Härdin
2024-05-30 14:28 ` Rémi Denis-Courmont
2024-05-30 15:32 ` Tomas Härdin
2024-05-30 15:38 ` Rémi Denis-Courmont
2024-05-31 1:03 ` Michael Niedermayer
2024-06-03 7:32 ` Rémi Denis-Courmont
2024-06-03 21:21 ` Michael Niedermayer
2024-05-30 15:42 ` James Almer
2024-05-30 16:48 ` Tomas Härdin
2024-05-30 17:49 ` Rémi Denis-Courmont [this message]
2024-05-30 19:07 ` Michael Niedermayer
2024-05-30 19:20 ` Rémi Denis-Courmont
2024-05-31 15:23 ` Tomas Härdin
2024-06-14 12:31 ` Tomas Härdin
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=3421890.a5N6fE6ukZ@basile.remlab.net \
--to=remi@remlab.net \
--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