[FFmpeg-trac] #8138(avcodec:reopened): load of misaligned address in libavcodec/startcode.c

FFmpeg trac at avcodec.org
Sun Nov 14 13:38:36 EET 2021

#8138: load of misaligned address in libavcodec/startcode.c
             Reporter:  Suhwan      |                    Owner:  (none)
                 Type:  defect      |                   Status:  reopened
             Priority:  normal      |                Component:  avcodec
              Version:  git-master  |               Resolution:
             Keywords:  ubsan       |               Blocked By:
             Blocking:              |  Reproduced by developer:  0
Analyzed by developer:  0           |
Changes (by trem):

 * status:  closed => reopened
 * resolution:  invalid =>


 I also came across this UBsan complaint and beg to differ that it's a non-

 Per C11 (n1570) p7:

 > A pointer to an object type may be converted to a pointer to a different
 object type.
 > If the resulting pointer is not correctly aligned [...] for the
 referenced type, the
 > behavior is undefined.

 It does not make a difference if that UB is behind an
 `HAVE_FAST_UNALIGNED` define or not. Though it may very well be used to
 indicate if it's performance-wise a good idea to do those loads, as FFmpeg

 So we agree that this load is *possible* when that code path is hit, but
 the standard still says that it is UB to do through a cast. But
 indirection through a memcpy is a cheap way out of this dilemma. I hacked
 it up here:


 Please compare it to the original version here:


 And see the assembly is identical, yet no UB is involved. I am willing to
 submit a patch (obeying coding / formatting standards) if there is
 consensus that this is an issue that should be resolved.
Ticket URL: <https://trac.ffmpeg.org/ticket/8138#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker

More information about the FFmpeg-trac mailing list