asfmux: crash due to memory alignment error on 32-bit ARM platforms
Found in gst-plugins-bad 1.20.3
but appears to be present in the latest code:
$ CK_FORK=no meson test elements_asfmux -v --gdb
ninja: Entering directory `/usr/src/packages/user/gst-plugins-bad/src/gst-plugins-bad-1.20.2/build'
ninja: no work to do.
1/1 elements_asfmux RUNNING
>>> GST_REGISTRY=/usr/src/packages/user/gst-plugins-bad/src/gst-plugins-bad-1.20.2/build/tests/check/elements_asfmux.registry GST_PLUGIN_SYSTEM_PATH_1_0='' GST_PLUGIN_PATH_1_0=/usr/src/packages/user/gst-plugins-bad/src/gst-plugins-bad-1.20.2/build:/usr/lib/gstreamer-1.0:/usr/lib/gstreamer-1.0 GST_STATE_IGNORE_ELEMENTS='' CK_DEFAULT_TIMEOUT=20 MALLOC_PERTURB_=147 GST_PLUGIN_SCANNER_1_0=/usr/libexec/gstreamer-1.0/gst-plugin-scanner GST_PLUGIN_LOADING_WHITELIST=gstreamer:gst-plugins-base:gst-plugins-good:gst-plugins-ugly:gst-libav:libnice:gst-plugins-bad@/usr/src/packages/user/gst-plugins-bad/src/gst-plugins-bad-1.20.2/build gdb --quiet --args /usr/src/packages/user/gst-plugins-bad/src/gst-plugins-bad-1.20.2/build/tests/check/elements_asfmux
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀ ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Reading symbols from /usr/src/packages/user/gst-plugins-bad/src/gst-plugins-bad-1.20.2/build/tests/check/elements_asfmux...
(gdb) run
Starting program: /usr/src/packages/user/gst-plugins-bad/src/gst-plugins-bad-1.20.2/build/tests/check/elements_asfmux
[Detaching after fork from child process 749116]
Running suite(s): asfmux
Program received signal SIGBUS, Bus error.
0xf79cc36c in gst_asf_put_guid (buf=buf@entry=0xf7a6a096 "", guid=...) at ../gst/asfmux/gstasfobjects.c:318
318 *aux16 = GUINT16_TO_LE (guid.v2);
(gdb) bt
#0 0xf79cc36c in gst_asf_put_guid (buf=buf@entry=0xf7a6a096 "", guid=...) at ../gst/asfmux/gstasfobjects.c:318
#1 0xf79ca7c2 in gst_asf_mux_write_file_properties (buf=<synthetic pointer>, asfmux=0xf7c08018) at ../gst/asfmux/gstasfmux.c:656
#2 gst_asf_mux_start_file (asfmux=0xf7c08018) at ../gst/asfmux/gstasfmux.c:1347
#3 gst_asf_mux_collected (collect=0xf799c491, data=0xf7c08018) at ../gst/asfmux/gstasfmux.c:1966
#4 0xf799c7fe in ?? () from /usr/lib/libgstbase-1.0.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
...
(gdb) disas
Dump of assembler code for function gst_asf_put_guid:
0xf79cc354 <+0>: sub sp, #8
0xf79cc356 <+2>: push {r4, r7}
0xf79cc358 <+4>: add r7, sp, #0
0xf79cc35a <+6>: add.w r12, r7, #8
0xf79cc35e <+10>: ldrd r1, r4, [r7, #16]
0xf79cc362 <+14>: stmia.w r12, {r2, r3}
0xf79cc366 <+18>: ldr r3, [r7, #12]
0xf79cc368 <+20>: rev r4, r4
0xf79cc36a <+22>: rev r1, r1
=> 0xf79cc36c <+24>: strd r2, r3, [r0]
0xf79cc370 <+28>: strd r4, r1, [r0, #8]
0xf79cc374 <+32>: mov sp, r7
0xf79cc376 <+34>: pop {r4, r7}
0xf79cc378 <+36>: add sp, #8
0xf79cc37a <+38>: bx lr
There may be other places in this file (or in the project) where this issue occurs.
See also: