Bug description
NetworkManager, packagekitd and polkitd frequently SEGV on my MT8173, and when in debugger, the crashing instruction is a LDR loading from a innocent address.
The crashing snippets is below:
2eff8: f0000280 adrp x0, 81000 <g_value_get_gtype@@Base+0x3aff0>
2effc: a900fedf stp xzr, xzr, [x22, #8]
2f000: aa1603e1 mov x1, x22
2f004: f940ec00 ldr x0, [x0, #472]
(From disassembly of libgobject-2.0.so in glib_2.88.2-0_arm64.deb)
This matches the "Sequence 1" of Erratum 843419:
Sequence 1:
1) An ADRP instruction, which writes to a register Rn.
• This instruction must be located in memory at an address where the bottom 12 bits are equal to 0xFF8 or
0xFFC.
2) A load or store instruction:
• This can be:
• A single register load or store, of either integer or vector registers
• Or an STP or STNP, of either integer or vector registers
• Or an Advanced SIMD ST1 store instruction.
• This must not write to Rn.
• This may optionally read Rn (either as an address register or a data register to be stored).
• If a load, this must access a region of memory which crosses a 64-bit boundary.
• If a store, this must access a region of memory which crosses a 128-bit boundary.
3) There can optionally be one instruction after instruction 2.
• This cannot be a branch.
• This cannot write Rn.
• This may optionally read Rn.
4) A load or store instruction from the "Load/store register (unsigned immediate)" encoding class, using Rn as the
base address register.
I don't know why this still appears even if the GCC is built with --enable-fix-cortex-a53-843419 option.
Steps to reproduce
Run a glib program (e.g. pkgcli from packagekit) that calls D-Bus on a Cortex-A53 CPU r0p3- / old r0p4, and then boom.
Update channel(s)
stable
Package and version
Package: glib
Status: install ok installed
Section: libs
Installed-Size: 43052
Maintainer: AOSC OS Maintainers <maintainers@aosc.io>
Architecture: arm64
Version: 2.88.2
Replaces: glib (<= 2.68.0), gobject-introspection (<= 1:1.72.0-1)
Provides: glib-static, libglib2.0-0:arm64 (= 2.88.2), libglib2.0-0t64:arm64 (= 2.88.2), libglib2.0-dev:arm64 (= 2.88.2), libgio-2.0-dev:arm64 (= 2.88.2), libgirepository-2.0-0:arm64 (= 2.88.2), libgirepository-2.0-dev:arm64 (= 2.88.2), gir1.2-girepository-3.0:arm64 (= 2.88.2), gir1.2-gmodule-2.0:arm64 (= 2.88.2), gir1.2-gmodule-2.0:arm64 (= 2.88.2), gir1.2-glib-2.0:arm64 (= 2.88.2), gir1.2-glib-2.0:arm64 (= 2.88.2), gir1.2-glib-2.0:arm64 (= 2.88.2), gir1.2-gobject-2.0:arm64 (= 2.88.2), gir1.2-gobject-2.0:arm64 (= 2.88.2), gir1.2-gobject-2.0:arm64 (= 2.88.2), gir1.2-gobject-2.0:arm64 (= 2.88.2), gir1.2-glibunix-2.0:arm64 (= 2.88.2), gir1.2-glibunix-2.0:arm64 (= 2.88.2), gir1.2-glibunix-2.0:arm64 (= 2.88.2), gir1.2-glibunix-2.0:arm64 (= 2.88.2), gir1.2-glibunix-2.0:arm64 (= 2.88.2), gir1.2-giounix-2.0:arm64 (= 2.88.2), gir1.2-giounix-2.0:arm64 (= 2.88.2), gir1.2-giounix-2.0:arm64 (= 2.88.2), gir1.2-giounix-2.0:arm64 (= 2.88.2), gir1.2-giounix-2.0:arm64 (= 2.88.2), gir1.2-giounix-2.0:arm64 (= 2.88.2), gir1.2-gio-2.0:arm64 (= 2.88.2), gir1.2-gio-2.0:arm64 (= 2.88.2), gir1.2-gio-2.0:arm64 (= 2.88.2), gir1.2-gio-2.0:arm64 (= 2.88.2), gir1.2-gio-2.0:arm64 (= 2.88.2), gir1.2-gio-2.0:arm64 (= 2.88.2), gir1.2-gio-2.0:arm64 (= 2.88.2)
Depends: cryptsetup (>= 2.8.6), glibc (>= 1:2.42-5), pcre (>= 8.45-1), libffi (>= 3.6.0), elfutils (>= 0.191-2), util-linux (>= 2.42-1)
Breaks: glib-static (<= 2.68.0), gobject-introspection (<= 1:1.72.0-1)
Description: Common C routines used by GTK+ and other libs
Description-md5: 8622bfbdc26a109eddcb0ad062770893
X-AOSC-ACBS-Version: 20260602
X-AOSC-Commit: 82cef5b396
X-AOSC-Packager: AOSC OS Maintainers <maintainers@aosc.io>
X-AOSC-Autobuild4-Version: 4.17.10
Bug description
NetworkManager, packagekitd and polkitd frequently SEGV on my MT8173, and when in debugger, the crashing instruction is a LDR loading from a innocent address.
The crashing snippets is below:
(From disassembly of libgobject-2.0.so in glib_2.88.2-0_arm64.deb)
This matches the "Sequence 1" of Erratum 843419:
I don't know why this still appears even if the GCC is built with
--enable-fix-cortex-a53-843419option.Steps to reproduce
Run a glib program (e.g.
pkgclifrom packagekit) that calls D-Bus on a Cortex-A53 CPU r0p3- / old r0p4, and then boom.Update channel(s)
stable
Package and version