13 KiB
Errors
Command failures and integration errors.
[ERR-20260906-001] linux_compat exec returns -4 after guest park
Logged: 2026-09-06T23:10:00+08:00
Command: DSK lxc->exec / exec_async for KDE preflight and deshab-kde-session
Error: rc=0xfffffffffffffffc (-4 超时无 EXEC_EXIT)
Context: Linux guest already EXEC_READY + parked; virtio-gpu and extra-rootfs backends bound; chooser sent key 2. linux_resume returned via HLT but linux_to_utsm ring had no EXEC_EXIT. Guest serial interleaved ([utsm-linux] ini[VMEXIT]), switch_root/vdc lines not recovered. WSL host only 7.6G so QEMU is 6G with a 3.9G extra-rootfs module.
Next: confirm daemon recv of EXEC_REQUEST after first park; check initramfs vs switch_root; raise WSL memory before blaming KDE packages.
Root cause (2026-09-07): UTSM_IOCTL_RECV_MSG / SEND_MSG in utsm_hcall.c called copy_to_user(umsg.data) / copy_from_user(..., umsg.data) after umsg was already a kernel stack copy. That is -EFAULT. Daemon recv_msg fails, parks with no EXEC_EXIT → host -4. Empty EXEC_READY send worked because data_len==0 skipped the bad copy. Fix: memcpy within the kernel struct, then a single copy_to_user of the whole ioctl arg.
Resolution
- Resolved: 2026-09-07T06:41:00+08:00
- Notes: Rebuilt bzImage + patched ESP. QEMU verify:
KDE preflight rc=0,exec_async rc=0,KDE spawned; desktopguest ping rc=0.
[ERR-20260907-001] virtio-blk vdb/vdc sector 0 I/O error
Logged: 2026-09-07T22:50:00+08:00 Priority: high Status: in_progress Area: backend
Summary
Linux 6.6 能 probe virtio-blk(blk_size 修好后),但 vdb/vdc 读 sector 0 曾立即 I/O error。2026-09-08 已能 EXT4-fs (vdb): mounted,串口无 I/O error。
Error
virtio_blk virtio2: [vdb] 1572864 512-byte logical blocks
I/O error, dev vdb, sector 0 op 0x0:(READ)
EXT4-fs (vdb): Could not load journal inode
I/O error, dev vdc, sector 0
Context
e820 已改为实际映射大小后仍失败。host 已 log extra-rootfs bound。virtio_gpa_to_host 对请求缓冲返回 NULL、或 chain 解析漏间接描述符,最可疑。
Suggested Fix
对 rootfs_blk_handle_chain 在 IOERR 路径打 GPA/len 日志;确认 desc.addr 落在 0x05000000 RAM 窗口。
Progress (2026-09-08)
- e820
0x00400000-0x03FFFFFF标成 60MB RAM,但 EPT 只映射了 kernel/initrd 等几页。virtio-blk READ 缓冲落在空洞且 vCPU 从未 store →virtio_gpa_to_host返回 NULL → IOERR。 - 修复:
virtio_gpa_to_host按需映射;启动时填满该窗口空洞(~34MB);size_max改为 65535 字节;描述符链支持 INDIRECT + 多段;rootfs 内存可写。 - 验证:vdb mount OK,无 I/O error。Arch
/sbin/init(systemd) 与/bin/sh在 glibc 同一偏移 SIGSEGV(segfault at ffffffff,确定性,非随机坏块)。PID 1 改为utsm_exec_daemon后EXEC_READY恢复。KDE 用户态仍起不来:host exec 的动态链接 sh/startplasma 同样崩;vdc overlay 本轮未见挂上。
Progress (2026-09-08 later)
- vdc 已挂上:init 必须在
mount --move /dev之前 mount vdc。现串口有persist moved to new root /mnt/persist+ overlay /opt /home /root。 - WRMSR IA32_FS_BASE 必须写入
VMCS_GUEST_FS_BASE(忽略写会留下 TLS=0)。 - musl busybox(无 SHSTK note)在
push上segfault at 0;改回 Arch/bin/sh→bash 后变成 glibc#GP,IP 正好是endbr64(libc RX 映射 +0x175140)。 - 在 host 上
wrmsr IA32_U_CET=0或临时打开CR4.CET会让 UTSM 在 Linux park 前就死掉,不要再试。 - 当前 blocker:动态链接 glibc 的 IBT landing pad(
endbr64)在 nested VMX 下 #GP。Plasma 仍起不来。
Progress (2026-09-10)
- 盘上 libc
0x199140已是90 90 90 90;guest 仍在同一 RIP #GP。 - 用户态 #GP 会 VM-exit 到 L1;
guest_fetch读到全 0,ENDBR skip 从未命中。 ibt=off内核认;user_shstk=off在 Linux 6.6 未知。- nested KVM 不提供 VMCS CET save/load。
/bin/sh→busybox.static 后:segfault at 0error 6(PUSH/SSP=0)。- 不要用
0F 1F 40 00替换 ENDBR。
Progress (2026-09-10 afternoon)
- 限制 RIP 的盲 skip:glibc
0x7f…140连续 skip 8×4 字节后segfault at 7f…d000;busybox.staticpush r13仍写地址 0(RSP 正常,是 SHSTK/SSP=0)。 - L1
CR4=0x20a0(无 CET);L1 CPUID 也无 CET_SS/IBT。不能在 L1WRMSRCET。 - VM-entry MSR-load
IA32_U_CET=0:VMLAUNCH 指令成功,随后 exit reason 34(MSR loading failure),Linux 未 park。已停用该 list。 - QEMU 进程
arch_prctl(ARCH_SHSTK_DISABLE):WSL 返回 EINVAL,/proc/cpuinfo无 shstk/ibt。LD_PRELOAD 无效。 - Guest
rdmsrl_safe/wrmsrl_safe(IA32_U_CET):rd=wr=-EIO(#GP)。L2 也碰不到 CET MSR,但硬件 IBT/SHSTK 仍作用于用户态。 - CET 在 L0 生效且对 L1/L2 都不可编程。在禁止 host
wrmsr的前提下 Plasma 起不来。
Progress (2026-09-10 evening)
- 去掉 #PF 拦截后 park +
desktop ready恢复。 KVM_SET_MSRSCET 返回 r=0(0 个 MSR 写成功),KVM 不虚拟化 CET。patch_boot_on_img.sh把/bin/sh改成 busybox.static 会让所有脚本在0x4bede0PUSH 写地址 0 上死掉。已改回/bin/sh -> bash。- bash/glibc 用户态 #GP:RIP
0x7f…140,ilen=2或3(不是 ENDBR 的 4),页表走到 hole 零页(mem=0)。盲 skip 4 会到…144继续 #GP。 CR3_LOAD_EXITING能拦住MOV CR3(见0x514c000等高位 PGD),但故障时 tracked CR3=0x2fa2000仍把 libc GVA 走到零页。
Progress (2026-09-10 EPT misconfig)
- persist 能挂上
/dev/vdc;desktop ready后EPT misconfig gpa=0x3e20000把 vCPU 停掉。 - guest
clear_page_erms#GP,RDI=0x0005088000005000(非规范),随后ext4lazyinit在已 tainted 内核里 oops。 - 根因更像 EPT leaf 未 Ignore PAT + misconfig 杀 vCPU,而不是这一次的
EXT4-fs error。
Metadata
- Reproducible: yes (glibc SIGSEGV)
- Related Files: CODE/UTSM/vmm/virtio_blk.c, CODE/UTSM/vmm/virtio_mmio.c, CODE/UTSM/vmm/linux_loader.c, CODE/linux/initramfs/init
[ERR-20260910-001] verify kde_ok=2 after persist check stall
Logged: 2026-09-10T20:22:00+08:00
Command: patch_boot_on_img.sh + tmp_reverify2.sh (landing-pad rebuild)
Error: exit 1; guest_ok=1 session_ok=1 kde_ok=2 sent_kde=1 desktop_ready=1; last session kmsg checking persist mount; no persist check done / entering KDE
Context: WSL NAT warning on stdout; QEMU 480s; serial 2 spawned deshab-kde-session. Host KDE loop still exec sleep/test -f every frame. drm KDE scanout w=1024 is fbdev, not Plasma.
Next: run_slice pump + persist remount kmsg; rebuild UTSM/desktop/DSK; inject session via patch_boot_on_img.sh (do not loop-mount extra-rootfs from drvfs).
Follow-up (2026-09-11)
run_slice 打进镜像后仍 kde_ok=2:checking persist mount 后无 vdc present/persist check done。同步 test -f 仍 EXEC_EXIT -4。async 时 daemon sched_yield 空转占满 vCPU;init mount --move 失败后未 umount,二次 mount 因 vdc busy 失败。
[ERR-20260911-001] verify6 froze at Limine, no SUMMARY
Logged: 2026-09-11T21:35:00+08:00
Command: tmp_run_verify6.sh (initrd+patch+qemu_verify_loop)
Error: serial log 20KB Limine cursor text only; no UTSM/DSK markers. Wrapper exec >file hid later output. QEMU gone on resume.
Next: re-run verify only with stdbuf -oL + timeout --kill-after=15 540.
[ERR-20260911-002] Cursor-attached wsl.exe kills the VM in ~45s
Logged: 2026-09-11T22:02:00+08:00
Command: long-running wsl -d Ubuntu from Cursor Shell (even sleep 620)
Error: wsl.exe exits 1 at ~45s; dmesg systemd-shutdow + journal "uncleanly shut down"; QEMU dies while Limine is still Loading module linux-extra-rootfs.img. Serial stays ~20KB cursor text. STATUS_STACK_BUFFER_OVERRUN / UTF-16 NAT warning on the Windows pipe.
Next: run tmp_run_verify9.sh from Windows Terminal, not Cursor. Image already patched (initrd+daemon+session+desktop).
Follow-up (2026-09-11 22:07)
User ran it in Windows Terminal: no tty output (script >>file), QEMU gone at ~1 min, serial still 20KB Limine extra-rootfs, no timed_exit. Same kill during 3.9G module load from drvfs, not only Cursor. Next: tmp_run_visible.sh (tee + heartbeat + copy image to /home/deshab).
[ERR-20260911-003] persist remount failed, no startplasma
Logged: 2026-09-11T23:04:00+08:00
Command: tmp_run_visible.sh (native /home/deshab/deshab-dev.img)
Error: kde_ok=2. Session: persist remount failed, ERROR: no startplasma at /mnt/persist. Init: overlays on persist then mount --move fail; umount+remount also fail because overlay upperdirs keep vdc busy.
Next: bind-mount persist into the new root; session bind from existing /dev/vdc mount if remount EBUSY.
[ERR-20260912-001] verify dies at log=21013 in Windows Terminal
Logged: 2026-09-12T12:40:00+08:00 Priority: critical Status: in_progress Area: infra
Summary
tmp_run_visible.sh 在 WT 里 t=26s、log=21013 整段退出,没有 SUMMARY。Limine 仍在 Loading linux-extra-rootfs.img。
Error
[verify] t=26s log=21013 guest=0 session=0 desktop=0 kde=0
PS C:\Windows\system32>
Context
Native /home/deshab/deshab-dev.img 已完整。第一次成功启动曾在 21013 停约 80s。之后多次 26–45s 被掐。不是用户提前 Ctrl+C。
Suggested Fix
停止 Limine 预加载 extra-rootfs;vdc 改为 ESP FAT32+AHCI 映射。
Follow-up (2026-09-12 13:21)
Limine 已过:DSK 20s、guest+desktop。init 报 /dev/vdc missing:linux_launch 在 dsm_load(AHCI)之前,盘上映射没有块设备。已改为先加载 manifest stage 0–1。
Metadata
- Reproducible: yes
- Related Files: SYSTEM/limine/limine.conf, CODE/UTSM/vmm/virtio_blk.c
- See Also: ERR-20260911-002
[ERR-20260912-002] entering KDE then bind /dev failed
Logged: 2026-09-12T14:10:18+08:00 Priority: high Status: in_progress Area: backend
Summary
Guest parked, persist has startplasma, session reached entering KDE root, then mount --rbind /dev failed. Verify printed VERIFY_KDE_PLASMA_OK because entering KDE was treated as Plasma.
Error
[deshab-kde] persist already has startplasma
[deshab-kde] entering KDE root at /mnt/persist
[deshab-kde] ERROR: could not bind /dev into the KDE root
Context
e2fsck of Arch vdb was clean. extra-rootfs /dev /proc /sys /run are 0555 empty placeholders. Session stderr is /dev/null (async daemon). drm SET_SCANOUT at 7.2s is virtio-gpu probe, not Plasma.
Suggested Fix
chmod 0755 placeholders, mount --bind (not rbind), log mount stderr to kmsg, seed /dev/dri on failure. Verify kde_ok=1 only on starting Plasma.
Follow-up (2026-09-12 14:16)
Real bind error: persist /usr/bin/mount + vdb ld.so → libmount.so.1: Error 74 (EBADMSG). vdb ext4_lookup checksum invalid on inodes 1673/1810/1826 (/usr/bin/mount is 1826). Use persist ld.so --library-path to run persist mount/chroot.
Follow-up (2026-09-12 14:45)
Static utsm_bindmount binds /dev /proc /sys /run /tmp. persist mount/ld.so are unusable (SHSTK or XSAVE). e2fsck of vdb is clean; checksums are runtime virtio reads (grep=1673 mkdir=1810 mount=1826). chroot persist bash exits 127 (new glibc wants XSAVE/YMM; CPUID hides them). Overlay vdb ld.so+libc → chroot 139 (SIGSEGV). Plasma still not painted.
[ERR-20260912-003] idle=poll still on guest cmdline after header edit
Logged: 2026-09-12T19:50:00+08:00 Priority: critical Status: in_progress Area: backend
Summary
PARK/HLT 分流已进树,但 guest 仍带着 nohlt idle=poll,Xorg 等待期间 cpu_idle_poll 空指针,idle task panic。
Error
Command line: ... no_timer_check nohlt idle=poll noapic nolapic ...
RIP: cpu_idle_poll.isra.0+0x2b
RDX: 0000000000000000
Kernel panic - not syncing: Attempted to kill the idle task!
Context
linux_loader.o 未随头文件重编(缺 .d)。SYSTEM/boot/utsm.elf 19:34 链接仍含旧字符串。验证镜像是 /home/deshab/deshab-dev.img。
Suggested Fix
删除 vmm/linux_loader.o 后 make;确认二进制无 nohlt/idle=poll;同时 patch ISO 与 native GPT。
Metadata
- Reproducible: yes
- Related Files: CODE/UTSM/vmm/linux_loader.c, CODE/UTSM/include/utsm/linux_loader.h
- See Also: LRN-20260912-003