Unhandled level 2 translation fault (11) at 0x000000b8, esr 0x92000046, rpi3 (aarch64)

Bas van Tiel bvantiel at gmail.com
Thu Dec 29 08:38:14 PST 2016


Hi,

when using a signal handler as a way to context switch between
different usercontexts a reproducible exception occurs on my rpi3 in
64-bit mode. (https://gist.github.com/DanGe42/7148946)

Running the context_demo program as a 32-bit ARM executable on a
64-bit kernel is OK, running as a 32 || 64 bit executable on an x86
kernel is OK.

In the first exception the PC doesn’t look correct, and the *pmd is 0.
The 2nd exception happens after running the program again, the PC is 0x0.

A successful function trace was not possible -> complete kernel hangup
when enabling.

Is there another way to gather more information about what is happening?

Linux (none) 4.10.0-rc1-v8+ #3 SMP PREEMPT Thu Dec 29 12:10:12 CET
2016 aarch64 GNU/Linux

[   46.350738] a.out[196]: unhandled level 2 translation fault (11) at
0x000000b8, esr 0x92000046
[   46.360516] pgd = ffffffc0392cb000
[   46.365377] [000000b8] *pgd=00000000392ec003
[   46.365381] , *pud=00000000392ec003
[   46.370878] , *pmd=0000000000000000
[   46.375907]
[   46.383974]
[   46.389107] CPU: 0 PID: 196 Comm: a.out Not tainted 4.10.0-rc1-v8+ #3
[   46.397949] Hardware name: Raspberry Pi 3 Model B (DT)
[   46.406218] task: ffffffc039ad6580 task.stack: ffffffc039bfc000
[   46.413892] PC is at 0x7fb4e34810
[   46.418230] LR is at 0x400b84
[   46.422956] pc : [<0000007fb4e34810>] lr : [<0000000000400b84>]
pstate: 60000000
[   46.431522] sp : 0000000000413350
[   46.436480] x29: 0000000000413350 x28: 0000000000000016
[   46.443142] x27: 0000000000000000 x26: 0000000000000020
[   46.451908] x25: 0000007fb4f35488 x24: 0000000000415f00
[   46.459641] x23: 0000000000000016 x22: 0000000000400b84
[   46.469198] x21: 0000000000413670 x20: 0000000000417030
[   46.476970] x19: 0000000000001000 x18: 0000000000000000
[   46.484744] x17: 0000007fb4e34810 x16: 0000000000411270
[   46.492175] x15: 00000000000005f1 x14: 0000000000000000
[   46.498884] x13: 0000000000000000 x12: 0000000000000000
[   46.506013] x11: 0000000000000020 x10: 0101010101010101
[   46.517164] x9 : 0000000000413670 x8 : 00000000ffffffe0
[   46.525541] x7 : 0000000000413350 x6 : 0000000000413350
[   46.533495] x5 : 00000000ffffffe0 x4 : 0000000000413730
[   46.544052] x3 : 0000000000000008 x2 : 0000000000000000
[   46.552211] x1 : 0000000000413670 x0 : 0000000000000000
[   46.558668]

2nd time startup of the executable

[  262.565147] a.out[201]: unhandled level 2 translation fault (11) at
0x00000000, esr 0x82000006
[  262.575243] pgd = ffffffc03939a000
[  262.579948] [00000000] *pgd=000000003938f003
[  262.579951] , *pud=000000003938f003
[  262.586040] , *pmd=0000000000000000
[  262.590479]
[  262.598234]
[  262.601108] CPU: 0 PID: 201 Comm: a.out Not tainted 4.10.0-rc1-v8+ #3
[  262.609086] Hardware name: Raspberry Pi 3 Model B (DT)
[  262.615731] task: ffffffc03904a600 task.stack: ffffffc039bfc000
[  262.621768] PC is at 0x0
[  262.624300] LR is at 0x0
[  262.626835] pc : [<0000000000000000>] lr : [<0000000000000000>]
pstate: 60000000
[  262.634437] sp : 00000000004159c0
[  262.637753] x29: 0000000000000000 x28: 0000000000000000
[  262.643242] x27: 0000000000000000 x26: 0000000000000000
[  262.648554] x25: 0000000000000000 x24: 0000000000000000
[  262.654033] x23: 0000000000000000 x22: 0000000000000000
[  262.659349] x21: 00000000004008f0 x20: 0000000000000000
[  262.664825] x19: 0000000000000000 x18: 0000000000000000
[  262.670145] x17: 0000007fb065b620 x16: 0000000000400b84
[  262.675622] x15: 00000000000003d1 x14: 0000000000000000
[  262.680938] x13: 0000000000000000 x12: 0000000000000000
[  262.686413] x11: 0000000000000020 x10: 0101010101010101
[  262.691835] x9 : 00000000004112c0 x8 : 0000000000000087
[  262.697159] x7 : 0000000000000000 x6 : 0000000000000000
[  262.702634] x5 : 0000000000000000 x4 : 0000000000000000
[  262.707949] x3 : 0000000000000000 x2 : 0000000000000000
[  262.713424] x1 : 0000000000000000 x0 : 0000000000000000
[  262.718739]

rpi3:
minimal kernel (64-bit, cortex-a53, little endian, 4Kb page,
initramfs), different kernels tried 4.8/4.9/4.10.0-rc1-v8+ the same
result occurs, also with different compilers.

kernel, aarch64-linux-gnu-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016
application, aarch64-linux-gnu-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016

The only item I found by reading through the different source-files was the
structure definition of struct kernel_rt_sigframe
(http://osxr.org:8080/glibc/source/ports/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h?v=glibc-2.18)
compared to the struct rt_sigframe (linux/arch/arm64/signal.c).

Any help or pointers to solve this issue are welcome,

regards
Bas



More information about the linux-arm-kernel mailing list