Jordan Brown (Sun) wrote: > Roland Mainz wrote: >> Erm... who or what defines "fatal" ? Even SIGSEGV can be caught within >> applications (either using alternative stacks or a seperate thread >> (assuming I don't mix-up things again...)) and is not fatal... > > I don't know for sure, but I think you just answered your own question. > If caught, it's not fatal. If not caught, it's fatal.
That pretty much sums it up. Remember also that only a signal originating from a process in another contract will trigger the fatal signal logic. > I assume that the decision is at its lowest level "are the low-order 8 > bits of the exit code that would be returned by wait(2) non-zero?". > That is, did the process die as the result of an uncaught signal? The signal delivery code generates the event after determining that: a) the signal came from outside the contract, and b) the process needs to die as a result of receiving the signal. See the bottom of psig() in common/os/sig.c. Dave