Skip to content

glib: arm64 2.88.2 libgobject-2.0.so code hits ARM Cortex-A53 Erratum 843419 #17197

Description

@Icenowy

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions