Ya veo lo que comentas SplinterGU, pero no es esa la pregunta y creo que es importante. A ver como lo explico.
Lo mas facil es verlo en el código que puse:
PROCESS b(int *salir)
BEGIN
while((*salir) == 0)
FRAME;
END
END
El proceso B seguira funcionando mientras su puntero salir valga 0. Salir pertenece al proceso A. Si B consulta el valor de salir de A cuando A no exista, el programa petará.
PROCESS a()
PRIVATE
int salir;
END
BEGIN
salir = 0;
b(&salir);
LOOP
FRAME;
END
OnExit:
salir = 1;
END
El proceso A, al recibir un signal S_KILL cambia el valor de salir a 1 para que el proceso B termine, pero realmente A llega antes a su END antes de que el proceso B pueda consultar la variable "salir".
...
signal_skill(id_a, s_kill);
...
Espero haberlo explicado con claridad el ejemplo.
El caso es que con todas las pruebas que he hecho, y son muchisimas, no he detectado que este sistema provoque inestabilidad o pete del programa, por lo que sin ver que sucede exactamente (a nivel interno de bennu me refiero), me atrevo a afirmar que el proceso "muerto", en realidad es mas bien un "zombie" donde sus variables de tipo PUNTERO siguen siendo perfectamente accesibles hasta que el resto de procesos alcancen el siguiente FRAME. Algo así como que para morir el proceso deba recorrer ciertas listas internas de bennu y ello conlleve esta accesibilidad temporal vinculada de alguna manera al FRAME. Pero claro, no puedo estar 100% seguro de que esto sea así.
Ojo, hablo de PUNTEROS es decir apuntadores de memoria, no de acceder a la estructura del proceso del tipo "father.salir" (para el caso de que salir fuera pública en vez de privada). Esto segundo seguro que no funciona, por que "father" ya está marcado para morir y bennu no dejaría recorrer su arbol de datos.
¿Me explico? ¿Es correcto?
En el caso que pone Splinter, lo que estamos observando es el cierre del proceso y como es lógico salen los SAY en el orden de ejecución, pero obviamente después de que un proceso alcanza ese END de final de proceso, la cosa no acaba ahi, sino que pasan cosas en las tablas de control de bennu y sus oscuros misterios misteriosos.
El quid es contestar si el código anterior es totalmente valido o si su uso genera inestabilidad (la cual repito no he visto).
Gracias por la paciencia, estoy muy interesado en desvelar este misterio.