KERNEL PANIC: panicked at src/memory/mod.rs:954:9: allocator-owned frames need a PageInfo, but none for [frame at 0x7ffffffffffff000] FP ffff800016caf730: PC ffffffff80050e55 FFFFFFFF80050CD0+0185 kernel::panic::panic_handler_inner FP ffff800016caf820: PC ffffffff8004ef39 FP ffff800016caf830: PC ffffffff800a732f FP ffff800016caf860: PC ffffffff80075d90 FFFFFFFF80075AF0+02A0 kernel::memory::deallocate_p2frame FP ffff800016caf8f0: PC ffffffff8001d2ae FFFFFFFF8001CAC0+07EE <kernel::context::memory::AddrSpace as core::ops::drop::Drop>::drop FP ffff800016cafac0: PC ffffffff80033b1c FFFFFFFF80033B00+001C alloc::sync::Arc<T,A>::drop_slow FP ffff800016cafb30: PC ffffffff80049d8f FFFFFFFF80049720+066F <kernel::scheme::proc::ProcScheme as kernel::scheme::KernelScheme>::close FP ffff800016cafc40: PC ffffffff800968ea FFFFFFFF800964B0+043A kernel::context::file::FileDescription::try_close FP ffff800016cafcd0: PC ffffffff80096464 FFFFFFFF800963A0+00C4 kernel::context::file::FileDescriptor::close FP ffff800016cafd40: PC ffffffff80066baa FFFFFFFF80066A30+017A kernel::syscall::fs::close FP ffff800016cafd70: PC ffffffff8006b2c3 FFFFFFFF8006AEF0+03D3 kernel::syscall::syscall FP ffff800016cafea0: PC ffffffff8005f6ee FFFFFFFF8005F640+00AE __inner_syscall_instruction FP ffff800016caff50: PC ffffffff80058693 FFFFFFFF80058650+0043 kernel::arch::x86_64::interrupt::syscall::syscall_instruction 0000000000000000: GUARD PAGE CPU #2, CID 0xffffff7f801b7f20 NAME: /usr/bin/tr, DEBUG ID: 825 SYSCALL: close(8) HALT
pipe line / redirect で繋いだ file descriptor の close() で問題が起きる?と言うことは、file descriptor で参照するかその操作で更新する情報の reference counter が不正操作されるか、そもそも up / down が必要な処理が抜けているか余計なのか。あれ、rust って Rc<> とか Arc<> とか有るんじゃなかったの(kernel 用に再実装するとして設計思想的に強要されるやり方では)?