Quote:
Originally Posted by blowtorch
Well, it may be broken, but there is a ETXTBSY error documented in the Solaris open(2) manpage, and this is what it says...
Yeah, but it's not enough to put it on the man page. The kernel needs to operate that way. Your program should not have worked on Solaris.
Quote:
Originally Posted by blowtorch
I don't really understand what a 'pure procedure' means,
In the bad old days, a process was a hodge podge of intermingled code and data. There was no distinction between code and data. A program could rewrite itself on the fly and this was thought to be cool. Then the concept of separating code and data arose. The idea was that "code" (instructions) should not be modified while data needed to be modified. A further refinement occurred when folks realized that some data was constant in nature and also should not be modified. Now the non-modifiable part of a process was renamed to "text". The cpu can guarantee that text is not modified. What's more, if two different users run the same program, both processes can use the same text segment. This is "shared text". Then came virtual memory where a very large program can be run in a small amount of physical memory by paging stuff in-to and out-of core as needed. In virtual memory systems, the text segment is read as it is needed.
This is why the Solaris behavior is so very wrong. If you and I run the same program, our processes share the text segment. If you modify your text segment, you modify mine as well. The separation between processes has been lost. Our entire text segment may not be in core. If you modify the program on disk, we may then page in the modifed data. Our shared text segment can now change, undermining the guarantee that the text segment is stable.
matrixmadhan, I meant that Sun themselves might actually notice that their OS now has unstable processes. If not, then someone with a support contract may raise the issue. A non-customer has no standing to demand repairs on an OS. It's hard enough to get stuff fixed when you are a customer (been there, done that). No way am I going to try to get something fixed as a non-customer.