[OpenAFS-devel] AFS on Solaris makes deprecative usage of newproc()

Nickolai Zeldovich kolya@MIT.EDU
Wed, 24 Apr 2002 13:19:13 -0400


> currently AFS makes deprecative usage of the
> kernel internal function newproc() to create a process.

The reason it used newproc() was because it needed a separate
process to which it could send signals with kill().  Thus,
using thread_create() wouldn't be possible, and lwp_create()
seemed to have a rather complex interface which I couldn't
figure out (but one can send signals to LWP's, I think).

> You can not call exit() or something similar in a thread
> created by newproc(). That would leave it still laying around
> as it would not cleaned up, a process with freed threads.

Hm, that could explain the occasional crashes I've seen after
unloading AFS (which now calls exit() in the newproc'ed thread).
Before I added the exit() call, it would crash every time you
looked at /proc after unloading AFS.

> Thus this needs to be changed to either fork() or thread_create().

Ah, fork() would probably do the trick here.  I'll see if I can
change it to using that instead of newproc().

-- kolya