I'm still trying to get to the bottom of the ebreak problem ...
Unfortunately I've been completely unable to force the process
to write a core dump, and I don't have gdb in the stage 3 environment.
However I can see the registers printed by the kernel:
Oops - illegal instruction [#4]
CPU: 0 PID: 72 Comm: rpmbuild Tainted: G D W 4.15.0-rc3-01064-g418457520fbb #8
sepc: ffffffe07d714eb8 ra : ffffffe07d714eb8 sp : ffffffe07cf39ac0
gp : ffffffe0002bf538 tp : ffffffe07dc7e580 t0 : ffffffe0000192f4
t1 : ffffffe000213508 t2 : ffffffe000213588 s0 : 0000000000000001
s1 : 00000000003e8405 a0 : ffffffe07cf39b98 a1 : 00000000003e8405
a2 : 0000000000001000 a3 : 0000000000000008 a4 : ffffffe07d624360
a5 : ffffffffffffffff a6 : 0000000000000fa0 a7 : 0000000000000000
s2 : 0000000000000010 s3 : 0000000000000010 s4 : ffffffe07e1fcfa0
s5 : 0000000000000055 s6 : 0000000000200000 s7 : 0000000000000040
s8 : 0000000000000008 s9 : 0000000000000010 s10: ffffffe07e1fcfa0
s11: 0000000000000055 t3 : 00000020000d3910 t4 : 0000000000000002
t5 : 0000000000000037 t6 : 0000000000000000
sstatus: 0000000000000100 sbadaddr: 00000000000081a4 scause: 0000000000000002
---[ end trace d80e35992f1aebc7 ]---
and the /proc/PID/maps of the corresponding process just before it
segfaults (see attached).
Unfortunately sepc makes no sense. The priv spec says that on a trap
into S-mode the virtual address should be written to sepc, but
sepc = ffffffe07d714eb8 doesn't map to any address in the map. In
fact it makes no sense at all even if I mask off upper bits.
I suppose this might be a qemu bug? Or is there something obvious
that I'm missing?
Unfortunately spike can no longer emulate disks
("--disk/+disk unsupported (use a ramdisk)") which makes it very
difficult to try to reproduce this in spike.
Rich.
00010000-00015000 r-xp 00000000 fe:00 1014765 /usr/bin/rpmbuild
00015000-00016000 r--p 00004000 fe:00 1014765 /usr/bin/rpmbuild
00016000-00017000 rw-p 00005000 fe:00 1014765 /usr/bin/rpmbuild
00017000-00059000 rw-p 00000000 00:00 0 [heap]
2000000000-2000017000 r-xp 00000000 fe:00 900943 /usr/lib/
ld-2.26.so
2000018000-2000019000 r--p 00017000 fe:00 900943 /usr/lib/
ld-2.26.so
2000019000-200001b000 rw-p 00018000 fe:00 900943 /usr/lib/
ld-2.26.so
200001b000-200001d000 r-xp 00000000 00:00 0 [vdso]
200001d000-200001f000 rw-p 00000000 00:00 0
2000022000-2000049000 r-xp 00000000 fe:00 883454 /usr/lib64/librpmbuild.so.7.0.0
2000049000-200004b000 r--p 00026000 fe:00 883454 /usr/lib64/librpmbuild.so.7.0.0
200004b000-200004c000 rw-p 00028000 fe:00 883454 /usr/lib64/librpmbuild.so.7.0.0
200004c000-200004d000 rw-p 00000000 00:00 0
200004d000-20001fc000 r-xp 00000000 fe:00 885665 /usr/lib64/librpm.so.7.0.0
20001fc000-20001fd000 ---p 001af000 fe:00 885665 /usr/lib64/librpm.so.7.0.0
20001fd000-2000201000 r--p 001af000 fe:00 885665 /usr/lib64/librpm.so.7.0.0
2000201000-2000208000 rw-p 001b3000 fe:00 885665 /usr/lib64/librpm.so.7.0.0
2000208000-2000209000 rw-p 00000000 00:00 0
2000209000-2000221000 r-xp 00000000 fe:00 883921 /usr/lib64/libmagic.so.1.0.0
2000221000-2000222000 ---p 00018000 fe:00 883921 /usr/lib64/libmagic.so.1.0.0
2000222000-2000223000 r--p 00018000 fe:00 883921 /usr/lib64/libmagic.so.1.0.0
2000223000-2000224000 rw-p 00019000 fe:00 883921 /usr/lib64/libmagic.so.1.0.0
2000224000-200025e000 r-xp 00000000 fe:00 883052 /usr/lib64/
libdw-0.170.so
200025e000-200025f000 ---p 0003a000 fe:00 883052 /usr/lib64/
libdw-0.170.so
200025f000-2000261000 r--p 0003a000 fe:00 883052 /usr/lib64/
libdw-0.170.so
2000261000-2000263000 rw-p 0003c000 fe:00 883052 /usr/lib64/
libdw-0.170.so
2000263000-20002b9000 r-xp 00000000 fe:00 883901 /usr/lib64/librpmio.so.7.0.0
20002b9000-20002bc000 r--p 00055000 fe:00 883901 /usr/lib64/librpmio.so.7.0.0
20002bc000-20002bf000 rw-p 00058000 fe:00 883901 /usr/lib64/librpmio.so.7.0.0
20002bf000-20002c3000 rw-p 00000000 00:00 0
20002c3000-20002d5000 r-xp 00000000 fe:00 883804 /usr/lib64/
libelf-0.170.so
20002d5000-20002d6000 r--p 00011000 fe:00 883804 /usr/lib64/
libelf-0.170.so
20002d6000-20002d7000 rw-p 00012000 fe:00 883804 /usr/lib64/
libelf-0.170.so
20002d7000-20002f3000 r-xp 00000000 fe:00 885699 /usr/lib64/liblzma.so.5.2.2
20002f3000-20002f4000 r--p 0001b000 fe:00 885699 /usr/lib64/liblzma.so.5.2.2
20002f4000-20002f5000 rw-p 0001c000 fe:00 885699 /usr/lib64/liblzma.so.5.2.2
20002f5000-2000389000 r-xp 00000000 fe:00 901582 /usr/lib/
libm-2.26.so
2000389000-200038a000 r--p 00093000 fe:00 901582 /usr/lib/
libm-2.26.so
200038a000-200038b000 rw-p 00094000 fe:00 901582 /usr/lib/
libm-2.26.so
200038b000-20003ba000 r-xp 00000000 fe:00 883443 /usr/lib64/libbeecrypt.so.7.0.0
20003ba000-20003bb000 ---p 0002f000 fe:00 883443 /usr/lib64/libbeecrypt.so.7.0.0
20003bb000-20003bc000 r--p 0002f000 fe:00 883443 /usr/lib64/libbeecrypt.so.7.0.0
20003bc000-20003bf000 rw-p 00030000 fe:00 883443 /usr/lib64/libbeecrypt.so.7.0.0
20003bf000-20003c7000 r-xp 00000000 fe:00 885676 /usr/lib64/libpopt.so.0.0.0
20003c7000-20003c8000 r--p 00007000 fe:00 885676 /usr/lib64/libpopt.so.0.0.0
20003c8000-20003c9000 rw-p 00008000 fe:00 885676 /usr/lib64/libpopt.so.0.0.0
20003c9000-20003e4000 r-xp 00000000 fe:00 885608 /usr/lib64/libz.so.1.2.11
20003e4000-20003e5000 ---p 0001b000 fe:00 885608 /usr/lib64/libz.so.1.2.11
20003e5000-20003e6000 r--p 0001b000 fe:00 885608 /usr/lib64/libz.so.1.2.11
20003e6000-20003e7000 rw-p 0001c000 fe:00 885608 /usr/lib64/libz.so.1.2.11
20003e7000-20003e9000 rw-p 00000000 00:00 0
20003e9000-20003eb000 r-xp 00000000 fe:00 901546 /usr/lib/
libdl-2.26.so
20003eb000-20003ec000 r--p 00001000 fe:00 901546 /usr/lib/
libdl-2.26.so
20003ec000-20003ed000 rw-p 00002000 fe:00 901546 /usr/lib/
libdl-2.26.so
20003ed000-2000400000 r-xp 00000000 fe:00 901592 /usr/lib/
libpthread-2.26.so
2000400000-2000401000 r--p 00012000 fe:00 901592 /usr/lib/
libpthread-2.26.so
2000401000-2000402000 rw-p 00013000 fe:00 901592 /usr/lib/
libpthread-2.26.so
2000402000-2000406000 rw-p 00000000 00:00 0
2000406000-2000502000 r-xp 00000000 fe:00 901574 /usr/lib/
libc-2.26.so
2000502000-2000506000 r--p 000fb000 fe:00 901574 /usr/lib/
libc-2.26.so
2000506000-2000508000 rw-p 000ff000 fe:00 901574 /usr/lib/
libc-2.26.so
2000508000-200050c000 rw-p 00000000 00:00 0
200050c000-2000511000 r-xp 00000000 fe:00 900942 /usr/lib/
librt-2.26.so
2000511000-2000512000 r--p 00004000 fe:00 900942 /usr/lib/
librt-2.26.so
2000512000-2000513000 rw-p 00005000 fe:00 900942 /usr/lib/
librt-2.26.so
2000513000-2000517000 rw-p 00000000 00:00 0
2000517000-200051e000 r-xp 00000000 fe:00 901583 /usr/lib/
libnss_files-2.26.so
200051e000-200051f000 ---p 00007000 fe:00 901583 /usr/lib/
libnss_files-2.26.so
200051f000-2000520000 r--p 00007000 fe:00 901583 /usr/lib/
libnss_files-2.26.so
2000520000-2000521000 rw-p 00008000 fe:00 901583 /usr/lib/
libnss_files-2.26.so
2000521000-2000527000 rw-p 00000000 00:00 0
3fffac8000-3fffae9000 rw-p 00000000 00:00 0 [stack]
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html