[Cin] unaligned load in bctheme

Phyllis Smith phylsmith2017 at gmail.com
Thu Dec 1 23:15:57 CET 2022


ANDREW, Perhaps I duplicated this incorrectly, but when I add after the
line    CFLAGS += $(static_incs)  the line
CFLAGS += -Wall -fsanitize=alignment   in guicast/Makefile to demonstrate
the problem, I just get compiler errors. I also set the environment
variable LDFLAGS and when I do    echo $LDFLAGS    it shows
-fsanitize=alignment   .
Did I make a mistake?  Did I miss a step?  The only steps I read in your
email was:
   (1) modify guicast/Makefile to add another CFLAGS line
   (2) set environment variable for LDFLAGS   (before LDFLAGS had no value)

See below for the end of my log file.

/usr/bin/ld:
> /tmp/cinelerra-5.1/cinelerra/../guicast/x86_64/libguicast.a(bclistboxitem.o):
> in function `BC_ListBoxItem::compare_item_text(void const*, void const*)':
> /tmp/cinelerra-5.1/guicast/bclistboxitem.C:162: undefined reference to
> `__ubsan_handle_type_mismatch_v1'
> /usr/bin/ld: /tmp/cinelerra-5.1/guicast/bclistboxitem.C:163: undefined
> reference to `__ubsan_handle_type_mismatch_v1'
> /usr/bin/ld: /tmp/cinelerra-5.1/guicast/bclistboxitem.C:163: undefined
> reference to `__ubsan_handle_type_mismatch_v1'
> /usr/bin/ld: /tmp/cinelerra-5.1/guicast/bclistboxitem.C:162: undefined
> reference to `__ubsan_handle_type_mismatch_v1'
> /usr/bin/ld:
> /tmp/cinelerra-5.1/cinelerra/../guicast/x86_64/libguicast.a(bclistboxitem.o):
> in function `ArrayList<BC_ListBoxItem*>::del(BC_ListBoxItem*&)':
>
/tmp/cinelerra-5.1/guicast/arraylist.h:14: undefined reference to
> `__ubsan_handle_type_mismatch_v1'
> /usr/bin/ld:
> /tmp/cinelerra-5.1/cinelerra/../guicast/x86_64/libguicast.a(bclistboxitem.o):/tmp/cinelerra-5.1/guicast/arraylist.h:14:
> more undefined references to `__ubsan_handle_type_mismatch_v1' follow
> collect2: error: ld returned 1 exit status
> make[2]: *** [Makefile:607: x86_64/lv2ui] Error 1
>
make[2]: *** Waiting for unfinished jobs....
> make[2]: Leaving directory '/tmp/cinelerra-5.1/cinelerra'
> make[1]: *** [Makefile:582: all-recursive] Error 1
> make[1]: Leaving directory '/tmp/cinelerra-5.1'
>
make: *** [Makefile:529: all] Error 2
>

On Wed, Nov 23, 2022 at 11:37 PM Andrew Randrianasulu <
randrianasulu at gmail.com> wrote:

>
> ---------- Forwarded message ---------
> От: Андрей Рандрианасулу <randrik at mail.ru>
> Date: чт, 24 нояб. 2022 г., 09:33
> Subject: unaligned load in bctheme
> To: randrianasulu <randrianasulu at gmail.com>
>
>
> so i tried to instrument cingg to see if  she does any unaligned access
>
>
> I added
>
>
> diff --git a/cinelerra-5.1/guicast/Makefile
> b/cinelerra-5.1/guicast/Makefile
> index 04d5a2e5..b724c668 100644
> --- a/cinelerra-5.1/guicast/Makefile
> +++ b/cinelerra-5.1/guicast/Makefile
> @@ -116,6 +116,7 @@ UTILS = $(OBJDIR)/bootstrap $(OBJDIR)/pngtoh
> $(OBJDIR)/pngto
> raw
>  BCXFER = xfer/$(OBJDIR)/xfer.stamp
>
>  CFLAGS += $(static_incs)
> +CFLAGS += -Wall -fsanitize=alignment
>
>  $(shell echo $(CFLAGS) > $(OBJDIR)/c_flags)
>  $(shell echo $(OBJS) > $(OBJDIR)/objs)
>
>
> and same -fsanitize=alignment to LDFLAGS env. variable before make.
>
>
> I got this:
>
> bash-5.1$  /dev/shm/cinelerra/cinelerra-5.1/bin/cin
> Cinelerra Infinity - built: Nov 24 2022 08:52:45
> git://git.cinelerra-gg.org/goodguy/cinelerra.git
> (c) 2006-2019 Heroine Virtual Ltd. by Adam Williams
> 2007-2020 mods for Cinelerra-GG by W.P.Morrow aka goodguy
> Cinelerra is free software, covered by the GNU General Public License,
> and you are welcome to change it and/or distribute copies of it under
> certain conditions. There is absolutely no warranty for Cinelerra.
>
> build plugin index for: /dev/shm/cinelerra/cinelerra-5.1/bin/plugins
> PluginFFilter::new_ffilter(overlay_opencl)
>   err: Input/output error
> PluginFFilter::new_ffilter(xfade_opencl)
>   err: Input/output error
> [openclsrc_814 @ 0xb78f400] OpenCL source requires output dimensions to be
> specified.
> PluginFFilter::new_ffilter(openclsrc)
>   err: Invalid argument
> bctheme.C:458:15: runtime error: load of misaligned address 0x098a364d for
> type 'int', which requires 4 byte alignment
> 0x098a364d: note: pointer points here
>  45 47 27 00 48 21 00  00 31 30 38 30 74 6f 34  38 30 2e 70 6e 67 00 00
>  00 00 00 31 30 38 30 74  6f
>              ^
> Total excess of backups: -50
> Session time: 0:00:07
> Cpu time: user: 0:00:03.699 sys: 0:00:00.480
>
> so patch below fixes this error.
>
> Can you please test it on various arches and distros?
>
>
> diff --git a/cinelerra-5.1/guicast/bctheme.C
> b/cinelerra-5.1/guicast/bctheme.C
> index 1ec64c7f..9addf9f7 100644
> --- a/cinelerra-5.1/guicast/bctheme.C
> +++ b/cinelerra-5.1/guicast/bctheme.C
> @@ -455,7 +455,10 @@ void BC_Theme::overlay(VFrame *dst, VFrame *src, int
> in_x1, int in_x2, int shift
>
>  void BC_Theme::set_data(unsigned char *ptr)
>  {
> -       int hdr_sz = *(int*)ptr - sizeof(int);
> +       //int hdr_sz = *(int*)ptr - sizeof(int);
> +       int hdr_sz = 0;
> +       memcpy(&hdr_sz, ptr, sizeof(int));
> +       hdr_sz -= sizeof(int);
>         unsigned char *cp = ptr + sizeof(int);
>         unsigned char *dp = cp + hdr_sz;
>         int start_item = images.size();
> lines 7-28/28 (END)
>
> --
> Андрей  Рандрианасулу
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20221201/0013e5c7/attachment.htm>


More information about the Cin mailing list