On Thu, Feb 08, 2024 at 12:39:13PM +0000, Stuart Henderson wrote:
> I hit this after running "kbd -l". On this machine (VM) the keyboard is
> not responsive in DDB so I can't get any more from it.
>
> uvm_fault(0xfffffd8073ad8a10, 0x0, 0, 1) -> e
> kernel: page fault trap, code=0
> Stopped at wskbd_displayioctl_sc+0x1b9: cmpl $0,0(%rcx,%rsi,8)
> TID PID UID PRFLAGS PFLAGS CPU COMMAND
>
> 243085 96740 667 0x18000002 0 4 perl
>
> 513689 69079 667 0x18000002 0 5 check_dns
>
> * 62677 84076 0 0x8000003 0 3K kbd
>
> wskbd_displayioctl_sc(ffff8000001f8600,c0105715,ffff80003171a990,2,ffff800032003aa8,0)
> at wskbd_displayioctl_sc+0x1b9
> wskbd_do_ioctl_sc(ffff8000001f8600,c0105715,ffff80003171a990,2,ffff800032003aa8,0)
> at wskbd_do_ioctl_sc+0xba
> wskbdioctl(4300,c0105715,ffff80003171a990,2,ffff800032003aa8) at
> wskbdioctl+0x4e
> VOP_IOCTL(fffffd8134b59dc0,c0105715,ffff80003171a990,2,fffffd8034ef8e58,ffff800032003aa8)
> at VOP_IOCTL+0x5d
> vn_ioctl(fffffd807961ce20,c0105715,ffff80003171a990,ffff800032003aa8) at
> vn_ioctl+0x79
> sys_ioctl(ffff800032003aa8,ffff80003171aa90,ffff80003171aaf0) at
> sys_ioctl+0x2af
> syscall(ffff80003171ab80) at syscall+0x5e3
> Xsyscall() at Xsyscall+0x128
> end of kernel
> end trace frame: 0x70d9d6640370, count: 7
> https://www.openbsd.org/ddb.html describes the minimum info required in bug
> reports. Insufficient info makes it difficult to find and fix bugs.
> ddb{3}>
Does this help?
diff --git sys/dev/wscons/wskbd.c sys/dev/wscons/wskbd.c
index 7631cd5f701..dd65f61ce63 100644
--- sys/dev/wscons/wskbd.c
+++ sys/dev/wscons/wskbd.c
@@ -1229,7 +1229,10 @@ getkeyrepeat:
case WSKBDIO_GETENCODINGS:
uedp = (struct wskbd_encoding_data *)data;
- for (count = 0; sc->id->t_keymap.keydesc[count].name; count++)
+ for (count = 0;
+ sc->id->t_keymap.keydesc != NULL &&
+ sc->id->t_keymap.keydesc[count].name;
+ count++)
;
if (uedp->nencodings > count)
uedp->nencodings = count;