on races... normal forks will all share the /env environment but not the in memory variables of rc. so when we would normally fork whoever does an exec (flush) first will override what the values of the /env variables are, *independent* of the variables that where actually modified *in* the process.
when we flush *before* fork, then at least both processes start out with marked clean in memory variables and the processes will flush only the things they actually change. -- cinap