Date: Mon, 06 Mar 95 12:05:21 -0800 From: Bakul Shah <bakul@netcom.com> To: davidg@Root.COM Cc: current@FreeBSD.org Subject: Re: "Text file busy" with program not running anymore? Message-ID: <199503062005.MAA13636@netcom15.netcom.com> In-Reply-To: Your message of "Sun, 05 Mar 95 13:33:08 PST." <199503052133.NAA00248@corbin.Root.COM>
next in thread | previous in thread | raw e-mail | index | archive | help
> No. Executed mapped files are a special case. I actually think that the
> "text file busy" thing is generally a hack that should just be removed. I can
> see no valid justification for preventing writes to executing files. If you
> really don't want your executing process(es) to die, then unlinking the file
> first is this the thing to do.
Uhh... forgive me for butting in but ETXTBSY prevents a dumb
mistake from resulting in a disaster. Imagine doing a ``tar
xvf ...'' that wipes out init or nfsd or something.... Yes,
one should not do this but `expert friendly' should not
imply `dumb user unfriendly'. ETXTBSY warns you that a
disaster may ensue; removing ETXTBSY will make ia disaster
happen silently.
I can see why one would want to write to a running binary
(debugging, generating code on the fly etc.) but for that
sort of thing surely a TENEX[1] style solution is
preferable? Namely, the process whose text needs to be
writable gets a distinct image (shared with the original by
copy-on-write) and only the scribbled-on pages are private
to this process. This also allows two processes to happily
hack in their own different way the `same' shared text (or
shared lib).
Bakul Shah
PS: I believe a shared lib's readonly portion should also
be treated exactly as text and its refcount be incremented.
In any case, a VTEXT flag is not enough and a count does not
complicate things much. Youse gotta to do what youse gotta do!
[1] Or was it TWINEX or whatever was that niftier offshoot
of TENEX called? It has been years! Anyway that is
where I first came across it; undoubtedly there are
other OSes that do the same thing.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199503062005.MAA13636>
