diag(kernel): log userspace scheme id + registrant pid

This commit is contained in:
2026-07-15 12:38:27 +09:00
parent b2dae113e6
commit 5a07dce55b
+11
View File
@@ -233,6 +233,11 @@ impl SchemeList {
/// Create a new scheme.
fn insert(&self, context: Weak<ContextLock>, token: &mut CleanLockToken) -> Result<SchemeId> {
// Red Bear diagnostic (2026-07-15): capture the registrant pid before
// taking the handles lock, to correlate userspace scheme ids (e.g. the
// scheme=18 that randd's thr_fd resolves to in the boot crash) with the
// daemon that registered them.
let registrant_pid = context.upgrade().map(|c| c.read(token.token()).pid);
let mut handles = handles().write(token.token());
let id = loop {
let mut id = SCHEME_LIST_NEXT_ID.fetch_add(1, Ordering::Relaxed);
@@ -249,6 +254,12 @@ impl SchemeList {
}
};
error!(
"scheme.insert: scheme_id={} registrant_pid={:?}",
id.get(),
registrant_pid
);
let root_id = SchemeId(SCHEME_LIST_ID.load(Ordering::Relaxed));
let inner = Arc::new(UserInner::new(root_id, id, context));
let new_scheme = Handle::Scheme(KernelSchemes::User(UserScheme::new(inner)));