Там ng_ksocket_accept из разных мест вызывается. И в случае upcall лок не нужен, а из другого контекста нужен
Ага, теперь вижу.
Я вообще не понимаю, ng_ksocket с дебаг ядром вообще работал? Локи я победил, теперь malloc c M_WAITOK вылетает в панику))
Когда-то точно работал :) Там вообще много странностей. Например solisten_upcall_set должен быть в NGM_KSOCKET_LISTEN. Зачем делать so_upcall_clear перед soclose? P.S. Вижу ты на шаг впереди меня.
Догнал тебя :) Ща разберёмся.
Там если shutdown победить, что вроде просто. Потом нужно сделать accept(), но из solisten_upcall его сделать нельзя. Что-то вообще всё мутно, я уже три часа мучаюсь)) Если что, то после Женининых команд, нужно попробовать telnet 127.0.0.1 9
Слушай, никогда не работал! Этот assert появился совсем недавно. Я давно хотел его вставить(и пытался) и наконец mjg/kib вставил(и). Раньше assert был только когда неспящий контекст реально уходит в сон за памятью, а теперь он ассертит когда гипотетически может заснуть. Буду думать как исправить.
В 12 этого ассерта точно нет, в 14 точно есть. Боюсь ремонт проблемы выйдет за пределы ksocket, значит смержить получится только в 14.
Я сейчас на 14-й пробовал. Но мне даже интересно стало, работало ли оно вообще до твоих коммитов с сокетами на дебаг ядре.
Работало до 5757b59f3eea5. Ха-ха, это же я, а не mjg/kib.
Обсуждают сегодня