Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Nov 2016 20:54:08 -0800
From:      Mark Millard <markmi@dsl-only.net>
To:        freebsd-arm <freebsd-arm@freebsd.org>, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   FYI: a Pine64+ 2G aarch64 head -r308247 crash and some information about it
Message-ID:  <B2C3CC2A-B60C-46A4-A359-1FAD0B15862E@dsl-only.net>

next in thread | raw e-mail | index | archive | help
This is just in case any of the information happens to prove =
useful/interesting.
I'm not expecting any assistance.

Note: After the crash ddb was not responding to input so this is all =
that I have.

Note: This was an experiment with head -r308247 but was built like =
stable for
      performance issues (GENERIC included and then overridden, not =
GENERIC-UP
      based).

The below was found via dmesg and/or /var/log/messages content while the =
Pine64
was busy building lang/gcc6 and its prerequisites (as a stability test).

It got lots of spurious interrupt notices per second, such as:

> gic0: Spurious interrupt detected: last irq: 27 on CPU0
> gic0: Spurious interrupt detected: last irq: 27 on CPU2
> gic0: Spurious interrupt detected: last irq: 106 on CPU3
> gic0: Spurious interrupt detected: last irq: 27 on CPU1
> gic0: Spurious interrupt detected: last irq: 27 on CPU1
> gic0: gic0: Spurious interrupt detected: last irq: 27 on CPU1
> Spurious interrupt detected: last irq: 27 on CPU3
> gic0: gic0: Spurious interrupt detected: last irq: 27 on CPU0
> Spurious interrupt detected: last irq: 27 on CPU1
> gic0: Spurious interrupt detected: last irq: 27 on CPU1
> gic0: Spurious interrupt detected: last irq: 27 on CPU2
> gic0: Spurious interrupt detected: last irq: 27 on CPU3

27 happened the most by far. 106 was fairly rare. I'd not noticed any =
other
figures. =46rom what I saw all were "gic0".

sh had a few signal 11's and one signal 4 as of when I had last checked:

> pid 13900 (sh), uid 0: exited on signal 11 (core dumped)
> pid 19325 (sh), uid 0: exited on signal 11 (core dumped)
> pid 49697 (sh), uid 0: exited on signal 11 (core dumped)
> pid 68390 (sh), uid 0: exited on signal 4 (core dumped)
> pid 81149 (sh), uid 0: exited on signal 11 (core dumped)

I did not notice any other core dumps.

And the following happened once that I noticed:

> (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 00 16 a3 a4 80 00 00 40 00=20=

> (da0:umass-sim0:0:0:0): CAM status: CCB request completed with an =
error
> (da0:umass-sim0:0:0:0): Retrying command

The root filesystem was on a USB SSD.

The above was all from a ssh session history. The below is from the =
serial
console. . .

Later it got the crash:

> panic: ARM64TODO: reclaim_pv_chunk
> cpuid =3D 2
> KDB: stack backtrace:
> db_trace_self() at db_trace_self_wrapper+0x28
>         pc =3D 0xffff00000068b430  lr =3D 0xffff0000000631dc
>         sp =3D 0xffff000083758080  fp =3D 0xffff000083758290
>=20
> db_trace_self_wrapper() at vpanic+0x170
>         pc =3D 0xffff0000000631dc  lr =3D 0xffff000000335f10
>         sp =3D 0xffff0000837582a0  fp =3D 0xffff000083758320
>=20
> vpanic() at panic+0x4c
>         pc =3D 0xffff000000335f10  lr =3D 0xffff000000335d9c
>         sp =3D 0xffff000083758330  fp =3D 0xffff0000837583b0
>=20
> panic() at reclaim_pv_chunk+0x10
>         pc =3D 0xffff000000335d9c  lr =3D 0xffff0000006a13d4
>         sp =3D 0xffff0000837583c0  fp =3D 0xffff0000837583c0
>=20
> reclaim_pv_chunk() at get_pv_entry+0x2bc
>         pc =3D 0xffff0000006a13d4  lr =3D 0xffff00000069c270
>         sp =3D 0xffff0000837583d0  fp =3D 0xffff000083758400
>=20
> get_pv_entry() at pmap_enter+0x68c
>         pc =3D 0xffff00000069c270  lr =3D 0xffff00000069b41c
>         sp =3D 0xffff000083758410  fp =3D 0xffff0000837584b0
>=20
> pmap_enter() at vm_fault_hold+0x2f0
>         pc =3D 0xffff00000069b41c  lr =3D 0xffff000000641eb8
>         sp =3D 0xffff0000837584c0  fp =3D 0xffff000083758600
>=20
> vm_fault_hold() at vm_fault_quick_hold_pages+0x120
>         pc =3D 0xffff000000641eb8  lr =3D 0xffff000000645004
>         sp =3D 0xffff000083758610  fp =3D 0xffff000083758670
>=20
> vm_fault_quick_hold_pages() at vn_io_fault1+0x250
>         pc =3D 0xffff000000645004  lr =3D 0xffff00000042b788
>         sp =3D 0xffff000083758680  fp =3D 0xffff0000837587c0
>=20
> vn_io_fault1() at vn_io_fault+0x170
>         pc =3D 0xffff00000042b788  lr =3D 0xffff0000004297a4
>         sp =3D 0xffff0000837587d0  fp =3D 0xffff000083758840
>=20
> vn_io_fault() at dofilewrite+0xbc
>         pc =3D 0xffff0000004297a4  lr =3D 0xffff0000003a35e4
>         sp =3D 0xffff000083758850  fp =3D 0xffff000083758890
>=20
> dofilewrite() at kern_writev+0x6c
>         pc =3D 0xffff0000003a35e4  lr =3D 0xffff0000003a32d4
>         sp =3D 0xffff0000837588a0  fp =3D 0xffff0000837588e0
>=20
> kern_writev() at sys_write+0x7c
>         pc =3D 0xffff0000003a32d4  lr =3D 0xffff0000003a3258
>         sp =3D 0xffff0000837588f0  fp =3D 0xffff000083758930
>=20
> sys_write() at do_el0_sync+0x6fc
>         pc =3D 0xffff0000003a3258  lr =3D 0xffff0000006a2778
>         sp =3D 0xffff000083758940  fp =3D 0xffff000083758a70
>=20
> do_el0_sync() at handle_el0_sync+0x64
>         pc =3D 0xffff0000006a2778  lr =3D 0xffff00000068d1d0
>         sp =3D 0xffff000083758a80  fp =3D 0xffff000083758b90
>=20
> handle_el0_sync() at 0x696ff0
>         pc =3D 0xffff00000068d1d0  lr =3D 0x0000000000696ff0
>         sp =3D 0xffff000083758ba0  fp =3D 0x0000ffffffffc610
>=20
> KDB: enter: panic
> [ thread pid 850 tid 100149 ]
> Stopped at      kdb_enter+0x40: undefined       d4200000


Side notes:

To do the lang/gcc6 test I adjusted lang/gcc6/Makefile to (hopefully) =
allow
an aarch64 build attempt:

> # svnlite diff /usr/ports/lang/gcc6
> Index: /usr/ports/lang/gcc6/Makefile
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- /usr/ports/lang/gcc6/Makefile	(revision 424540)
> +++ /usr/ports/lang/gcc6/Makefile	(working copy)
> @@ -35,7 +35,7 @@
>  DISTVERSION=3D	${PORTVERSION:C/([0-9]+).*\.s([0-9]+)/\1-\2/}
>  GCC_VERSION=3D	${PORTVERSION:C/(.+)\.s[0-9]{8}/\1/}
>  SUFFIX=3D		${PORTVERSION:C/([0-9]+).*/\1/}
> -ONLY_FOR_ARCHS=3D	amd64 i386 powerpc powerpc64 sparc64 arm armv6 =
armv6hf
> +ONLY_FOR_ARCHS=3D	amd64 i386 powerpc powerpc64 sparc64 arm armv6 =
armv6hf aarch64
>  USES=3D		compiler cpe gmake iconv libtool makeinfo perl5 =
tar:bzip2
>  USE_BINUTILS=3D	yes
>  USE_PERL5=3D	build
> @@ -73,7 +73,7 @@
>  USE_GCC=3D	4.9+
>  .endif
> =20
> -.if ${ARCH} =3D=3D "armv6" || ${ARCH} =3D=3D "armv6hf"
> +.if ${ARCH} =3D=3D "armv6" || ${ARCH} =3D=3D "armv6hf" || ${ARCH} =3D=3D=
 "aarch64"
>  . if ${COMPILER_TYPE} =3D=3D clang
>  .  if empty(PORT_OPTIONS:MBOOTSTRAP)
>  MAKE_ARGS+=3DCXXFLAGS=3D-fbracket-depth=3D512

It did not make it to lang/gcc6 itself but did build several things.

(I did not care if lang/gcc6 really worked or not: Environment stability
test.)

=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B2C3CC2A-B60C-46A4-A359-1FAD0B15862E>