Alfred Perlstein wrote:
* David Xu <[EMAIL PROTECTED]> [071024 18:34] wrote:
Julian Elischer wrote:
julian 2007-10-23 17:54:16 UTC
FreeBSD src repository
Modified files:
sys/kern kern_fork.c
Log:
Take out the single-threading code in fork.
After discussions with jeff, alc, (various Ironport people), david Xu,
and mostly Alfred (who found the problem) it has been demonstrated that
this
is not needed for our implementations of threads and represents a real
(as in we've seen it happen a lot) deadlock danger.
...
I think if process is forking a thread, that says flag RFPROC is not
set and flags RFCFDG or RFCFDG is set, you still need to call
thread_single(SINGLE_BOUNDARY), otherwise, for a threaded process,
the memory pointed by p_fd is freed while other threads are using it,
it will cause kernel to panic.
This is unlikely to be fixed by SINGLE_BOUNDARY and will likely require
refcounting to fix. SINGLE_BOUNDARY will not fix the locations where
this happens:
p = td->td_proc;
fdp = p->p_fd;
do something that blocks...
re-use fdp.
the SINGLE_BOUNDARY wouldn't let this happen, as all threads would have to be
at the
user boundary to be conformant and they can not have such references there.
I'm not convinced however that it is fully functional at this time however.
A quick read-through to see what it was doing gave me a headache.
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"