Booting L4Re with qemu-system-arm: Panic in sigma0

Matthias Lange matthias.lange at kernkonzept.com
Tue Oct 31 13:41:22 CET 2017


Hi,

this looks like an undefined instruction. Maybe the build and the
emulated CPU model does not match? Have you tried changing the CPU model
with the '-cpu" option?

Best,
Matthias.


On 10/31/2017 09:24 AM, Leslie Zhai wrote:
> Hi L4 hackers,
> 
> 
> $ svn info
> Path: .
> Working Copy Root Path: /data/project/l4re
> URL: https://svn.l4re.org/repos/oc/l4re/trunk
> Relative URL: ^/trunk
> Repository Root: https://svn.l4re.org/repos/oc/l4re
> Repository UUID: d050ee49-bd90-4346-b210-929a50b99cfc
> Revision: 75
> Node Kind: directory
> Schedule: normal
> Last Changed Author: l4check
> Last Changed Rev: 75
> Last Changed Date: 2017-10-15 19:49:39 +0800 (Sun, 15 Oct 2017)
> 
> 
> My Fiasco build config:
> 
> #
> # Automatically generated file; DO NOT EDIT.
> # Fiasco configuration
> #
> CONFIG_HAS_FPU_OPTION=y
> CONFIG_HAS_SERIAL_OPTION=y
> CONFIG_HAS_JDB_GZIP_OPTION=y
> 
> #
> # Target configuration
> #
> # CONFIG_IA32 is not set
> # CONFIG_AMD64 is not set
> CONFIG_ARM=y
> # CONFIG_MIPS is not set
> CONFIG_PF_INTEGRATOR=y
> # CONFIG_PF_REALVIEW is not set
> # CONFIG_PF_SUNXI is not set
> # CONFIG_PF_BCM283X is not set
> # CONFIG_PF_SA1100 is not set
> # CONFIG_PF_XSCALE is not set
> # CONFIG_PF_ARMADA38X is not set
> # CONFIG_PF_KIRKWOOD is not set
> # CONFIG_PF_TEGRA is not set
> # CONFIG_PF_LAYERSCAPE is not set
> # CONFIG_PF_IMX is not set
> # CONFIG_PF_RCAR3 is not set
> # CONFIG_PF_EXYNOS is not set
> # CONFIG_PF_S3C2410 is not set
> # CONFIG_PF_OMAP is not set
> # CONFIG_PF_ZYNQ is not set
> CONFIG_BSP_NAME="integrator"
> CONFIG_CAN_ARM_CPU_926=y
> CONFIG_CAN_ARM_CPU_1176=y
> CONFIG_ABI_VF=y
> CONFIG_ARM_926=y
> # CONFIG_ARM_1176 is not set
> CONFIG_FPU=y
> CONFIG_ARM_ALIGNMENT_CHECK=y
> CONFIG_ARM_EM_STD=y
> CONFIG_ARM_CPU_ERRATA=y
> 
> #
> # Kernel options
> #
> # CONFIG_CONTEXT_8K is not set
> CONFIG_CONTEXT_4K=y
> CONFIG_FINE_GRAINED_CPUTIME=y
> CONFIG_SCHED_FIXED_PRIO=y
> # CONFIG_SCHED_WFQ is not set
> # CONFIG_SCHED_FP_WFQ is not set
> 
> #
> # Debugging
> #
> CONFIG_INLINE=y
> # CONFIG_NDEBUG is not set
> # CONFIG_NO_FRAME_PTR is not set
> CONFIG_STACK_DEPTH=y
> CONFIG_LIST_ALLOC_SANITY=y
> CONFIG_SERIAL=y
> CONFIG_JDB=y
> CONFIG_JDB_LOGGING=y
> CONFIG_JDB_GZIP=y
> # CONFIG_JDB_ACCOUNTING is not set
> # CONFIG_WARN_NONE is not set
> # CONFIG_WARN_WARNING is not set
> CONFIG_WARN_ANY=y
> 
> #
> # ARM debugging options
> #
> CONFIG_VMEM_ALLOC_TEST=y
> CONFIG_DEBUG_KERNEL_PAGE_FAULTS=y
> 
> #
> # Compiling
> #
> CONFIG_CC="gcc"
> CONFIG_CXX="g++"
> CONFIG_HOST_CC="gcc"
> CONFIG_HOST_CXX="g++"
> CONFIG_MAINTAINER_MODE=y
> CONFIG_LABEL=""
> CONFIG_EXPERIMENTAL=y
> CONFIG_PERF_CNT=y
> CONFIG_BIT32=y
> CONFIG_WARN_LEVEL=2
> CONFIG_XARCH="arm"
> CONFIG_ABI="vf"
> 
> 
> My L4Re build config:
> 
> # Automatically generated. Don't edit
> 
> BID_COMPILER_TYPE=gcc
> BUILD_SYSTEMS=arm_armv5te arm_armv5te-l4f
> CONFIG_ARCH_ENABLE_STACK_PROTECTOR=y
> CONFIG_BID_GCC_ENABLE_STACK_PROTECTOR=y
> CONFIG_BID_GCC_STACK_PROTECTOR=y
> CONFIG_BUILD_ABI="l4f"
> CONFIG_BUILD_ABI_l4f=y
> CONFIG_BUILD_ARCH="arm"
> CONFIG_BUILD_ARCH_arm=y
> CONFIG_CPU_ARM_ARMV5TE=y
> CONFIG_CPU="armv5te"
> CONFIG_CTAGS="ctags"
> CONFIG_DROPS_INSTDIR="/path/to/l4re"
> CONFIG_DROPS_STDDIR="/path/to/l4re"
> CONFIG_ETAGS="etags"
> CONFIG_LEX="flex"
> CONFIG_MAKECONFS_ADD=""
> CONFIG_YACC="yacc"
> GCCDIR=/usr/lib/gcc/arm-linux-gnueabi/6.1.1
> GCCFORTRANAVAIL=
> GCC_HAS_ATOMICS=
> GCCINCFIXEDPATH=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/include-fixed
> GCCLIB_EH=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/libgcc_eh.a
> GCCLIB_FILE_crtbegin.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtbegin.o
> GCCLIB_FILE_crtbeginS.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtbeginS.o
> GCCLIB_FILE_crtbeginT.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtbeginT.o
> GCCLIB_FILE_crtend.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtend.o
> GCCLIB_FILE_crtendS.o=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/crtendS.o
> GCCLIB_HOST=/usr/lib/gcc/arm-linux-gnueabi/6.1.1/libgcc.a
> GCCLIB_S_SO=
> GCCMAJORVERSION=6
> GCCMINORVERSION=1
> GCCNOSTACKPROTOPT=-fno-stack-protector
> GCCPATCHLEVEL=1
> GCCSTACKPROTALLOPT=-fstack-protector-all
> GCCSTACKPROTOPT=-fstack-protector
> GCCSYSLIBDIRS=-L/usr/lib/gcc/arm-linux-gnueabi/6.1.1/
> -L/usr/lib/gcc/arm-linux-gnueabi/6.1.1/../../../../arm-linux-gnueabi/lib/arm-linux-gnueabi/6.1.1/
> -L/usr/lib/gcc/arm-linux-gnueabi/6.1.1/../../../../arm-linux-gnueabi/lib/ -L/usr/arm-linux-gnu/sys-root/lib/arm-linux-gnueabi/6.1.1/
> -L/usr/arm-linux-gnu/sys-root/lib/
> -L/usr/arm-linux-gnu/sys-root/usr/lib/arm-linux-gnueabi/6.1.1/
> -L/usr/arm-linux-gnu/sys-root/usr/lib/
> GCCVERSION=6
> HOST_SYSTEM=linux
> INT_CPP_NAME=cc1
> INT_CXX_NAME=cc1plus
> INT_LD_NAME=arm-linux-gnu-ld
> LD_EMULATION=armelf_linux_eabi
> LD_GENDEP_PREFIX=LD_PRELOAD=libgendep.so
> LD_LIBRARY_PATH=/data/project/xiangzhai/l4re/l4/build-arm/tool/gendep/64:/data/project/xiangzhai/l4re/l4/build-arm/tool/gendep/32
> 
> LD_HAS_HASH_STYLE_OPTION=n
> LDVERSION=227-3
> include /data/project/xiangzhai/l4re/l4/build-arm/.config.indep
> include /data/project/xiangzhai/l4re/l4/build-arm/.config.platform
> 
> 
> Booting L4Re with qemu-system-arm:
> 
> $ make qemu CROSS_COMPILE=arm-linux-gnu- E=hello
> MODULE_SEARCH_PATH=/data/project/xiangzhai/l4re/kernel/fiasco/build-arm
> make[1]: Entering directory '/data/project/xiangzhai/l4re/l4'
>   Image size(s) in bytes:
>             bootstrap_hello.elf:  1279488
>   Start address: 0x1000000
>   --> Build-Nr: 6
> QEMU-cmd: qemu-system-arm -kernel
> /data/project/xiangzhai/l4re/l4/build-arm/images/bootstrap.elf -serial
> stdio -M integratorcp -m 256
> 
> L4 Bootstrapper
>   Build: #6 Tue Oct 31 15:50:55 CST 2017, 6.1.1 20160621 (Red Hat Cross
> 6.1.1-2)
>   Scanning up to 256 MB RAM, starting at offset 32MB
>   Memory size is 256MB (00000000 - 0fffffff)
>   RAM: 0000000000000000 - 000000000fffffff: 262144kB
>   Total RAM: 256MB
>   Scanning fiasco
>   Scanning sigma0
>   Scanning moe
>   Moving up to 5 modules behind 1100000
>   moving module 02 { 10e7000-11284af } -> { 11d8000-12194af } [267440]
>   moving module 01 { 10d5000-10e6343 } -> { 11c6000-11d7343 } [70468]
>   moving module 00 { 1053000-10d4edb } -> { 1144000-11c5edb } [532188]
>   moving module 04 { 1031000-1052697 } -> { 1122000-1143697 } [136856]
>   moving module 03 { 100f000-1030473 } -> { 1100000-1121473 } [136308]
>   Loading fiasco
>   Loading sigma0
>   Loading moe
>   find kernel info page...
>   found kernel info page (via ELF) at 2000
> Regions of list 'regions'
>     [     1000,      193f] {      940} Kern   fiasco
>     [     2000,     8efff] {    8d000} Kern   fiasco
>     [    8f000,     8f0eb] {       ec} Root   mbi_rt
>     [    e0000,     eb16b] {     b16c} Sigma0 sigma0
>     [    f0000,     f517b] {     517c} Sigma0 sigma0
>     [   140000,    1711df] {    311e0} Root   moe
>     [   180000,    18c4eb] {     c4ec} Root   moe
>     [  1000000,   100e4f7] {     e4f8} Boot   bootstrap
>     [  1100000,   1143fff] {    44000} Root   Module
>   found kernel options (via ELF) at 3000
>   Sigma0 config    ip:000e0100 sp:00000000
>   Roottask config  ip:00140254 sp:00000000
>   Starting kernel fiasco at 00001118
> Hello from Startup::stage2
> FPU: Initialize
> FPU0: Subarch: 1, Part: 10, Rev: 0, Var: 9, Impl: 41
> 
> KERNEL: Warning: Buddy::alloc: Size mismatch: 1c000 v 20000
> SERIAL ESC: allocated IRQ 1 for serial uart
> Not using serial hack in slow timer handler.
> Welcome to L4/Fiasco.OC!
> L4/Fiasco.OC microkernel on arm
> Rev: 362fdae-dirty compiled with gcc 6.1.1 20160621 (Red Hat Cross
> 6.1.1-2) for Integrator    []
> Build: #2 Tue Oct 31 15:39:15 CST 2017
> 
> Calibrating timer loop... done.
> MDB: use page size: 20
> MDB: use page size: 12
> EXCEPTION: (00) Why undef insn? pfa=00002000, error=00000000 psr=20000110
> R[0]: 00002000 00000000 00000000 000e01d0  000f0004 00002000 000f0030
> 00000000
> R[8]: 00000000 00000000 00000000 000f281c  000f2808 00000000 00000000
> 000e01d4
> 
> KERNEL: Warning: Sigma0 raised an exception --> HALT
> Panic: ...
> ---------------------------------------------------------------------
>     CPU 0 [f001519c]: abort
> jdb:
> 
> 
> Then how to use addr2line to find the root cause? please give me some
> hint, thanks a lot!
> 
> $ arm-linux-gnu-addr2line -p -i -e bin/arm_armv5te/bootstrap.elf -a
> 00002000
> 
> 
> Because 0001-Fix-invalid-initialization-in-new.patch has been already
> merged into svn trunk, so this
> http://os.inf.tu-dresden.de/pipermail/l4-hackers/2017/008111.html might
> not fix my issue, but as Sarah mentioned "looks like a compiler issue"?
> 
> $ arm-linux-gnu-gcc -v
> Using built-in specs.
> COLLECT_GCC=arm-linux-gnu-gcc
> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/arm-linux-gnueabi/6.1.1/lto-wrapper
> Target: arm-linux-gnueabi
> Configured with: ../gcc-6.1.1-20160621/configure --bindir=/usr/bin
> --build=x86_64-redhat-linux-gnu --datadir=/usr/share
> --disable-decimal-float --disable-dependency-tracking --disable-gold
> --disable-libgcj --disable-libgomp --disable-libmpx
> --disable-libquadmath --disable-libssp --disable-libunwind-exceptions
> --disable-shared --disable-silent-rules --disable-sjlj-exceptions
> --disable-threads --with-ld=/usr/bin/arm-linux-gnu-ld
> --enable-__cxa_atexit --enable-checking=release
> --enable-gnu-unique-object --enable-initfini-array
> --enable-languages=c,c++ --enable-linker-build-id --enable-lto
> --enable-nls --enable-obsolete --enable-plugin --enable-targets=all
> --exec-prefix=/usr --host=x86_64-redhat-linux-gnu
> --includedir=/usr/include --infodir=/usr/share/info
> --libexecdir=/usr/libexec --localstatedir=/var --mandir=/usr/share/man
> --prefix=/usr --program-prefix=arm-linux-gnu- --sbindir=/usr/sbin
> --sharedstatedir=/var/lib --sysconfdir=/etc --target=arm-linux-gnueabi
> --with-bugurl=http://bugzilla.redhat.com/bugzilla/ --with-isl
> --with-newlib --with-plugin-ld=/usr/bin/arm-linux-gnu-ld
> --with-sysroot=/usr/arm-linux-gnu/sys-root --with-system-libunwind
> --with-system-zlib --without-headers --with-tune=cortex-a8
> --with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16
> --with-abi=aapcs-linux --enable-gnu-indirect-function
> --with-linker-hash-style=gnu
> Thread model: single
> gcc version 6.1.1 20160621 (Red Hat Cross 6.1.1-2) (GCC)



More information about the l4-hackers mailing list