On Tue, Oct 08, 2024 at 02:57:25PM +0200, Frank Brodbeck wrote:
> Oct  8 13:28:14 quirm /bsd: OpenBSD 7.6 (RAMDISK_CD) #326: Mon Sep 30 
> 09:00:03 MDT 2024
> Oct  8 13:28:14 quirm /bsd:     
> dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/RAMDISK_CD

Kernel bsd.rd does not use relinking.  So we can find the code from rip.

> Oct  8 13:28:14 quirm /bsd: root on rd0a swap on rd0b dump on rd0b
> Oct  8 13:28:14 quirm /bsd: WARNING: CHECK AND RESET THE DATE!
> Oct  8 13:28:14 quirm /bsd: uvm_fault(0xfffffd827dc3e810, 0x0, 0, 1) -> e
> Oct  8 13:28:14 quirm /bsd: fatal page fault in supervisor mode
> Oct  8 13:28:14 quirm /bsd: trap type 6 code 0 rip ffffffff81374c4c cs 8 
> rflags 10246 cr2 0 cpl 0 rsp ffff80002f25dbb0

Sorted nm output of release bsd.rd says

ffffffff81374c2c T wsdisplaywrite
ffffffff81374c83 T wsdisplaytty

rip is ffffffff81374c4c, look at wsdisplaywrite+0x20

0000000000000fac <wsdisplaywrite>:
...
/usr/src/sys/dev/wscons/wsdisplay.c:1019
     fcc:       48 8b 04 f8             mov    (%rax,%rdi,8),%rax
/usr/src/sys/dev/wscons/wsdisplay.c:1024

So it happens here:

  1010  int
  1011  wsdisplaywrite(dev_t dev, struct uio *uio, int flag)
  1012  {
  1013          struct wsdisplay_softc *sc;
  1014          struct tty *tp;
  1015          int unit;
  1016          struct wsscreen *scr;
  1017
  1018          unit = WSDISPLAYUNIT(dev);
* 1019          sc = wsdisplay_cd.cd_devs[unit];
  1020
  1021          if (ISWSDISPLAYCTL(dev))
  1022                  return (0);
  1023
  1024          if ((scr = sc->sc_scr[WSDISPLAYSCREEN(dev)]) == NULL)

> Oct  8 13:28:14 quirm /bsd: gsbase 0xffffffff81938ff0  kgsbase 0x0
> Oct  8 13:28:14 quirm /bsd: panic: trap type 6, code=0, pc=ffffffff81374c4c
> Oct  8 13:28:14 quirm /bsd: panic: trap type 6, code=0, pc=ffffffff81374c4c
> Oct  8 13:28:14 quirm /bsd: dump to dev 17,1 not possible
> Oct  8 13:28:14 quirm /bsd: rebooting...

bluhm

Reply via email to