Sebastien Roy wrote: > Peter Memishian wrote: >> > I believe, however, that what Dan's describing is a scenario >> whereby the > daemon is being started and some process attempts to >> use the door in the > window between door_create() and >> daemonization. Maybe this isn't during > boot and someone typed >> "ifconfig plumb bge0" while the daemon was being > restarted, and the >> daemon is in the process of servicing an upcall while > daemonizing. >> Will this cause a problem? Do we care? >> >> I'm unclear why the daemon was being restarted. Did it crash? If so, >> I'd >> say that's an edge condition of an edge condition, and that it >> wouldn't be >> a big deal if the ifconfig command failed because its door_call() thread >> got cancelled. (This whole scenario seems a bit contrived.) > > Maybe it crashed, or maybe someone typed svcadm restart linkmgmnt. It > is a bit contrived, indeed. > >> > > As I recall, the door file is actually packaged (rather than >> being created >> > > on demand) so that we avoid having to create it early at boot >> when the >> > > filesystem is read-only. >> > > Yes, but the event Dan's concerned about isn't the door file >> creation, > but the creation of the server procedure within the >> daemon (door_create()). >> >> I thought one of Dan's earlier suggestions for dealing with this was to >> have the daemon explicitly create the door file. > > I think so, but I'm a bit unclear on how this would solve the problem, > if we indeed have a problem to solve. > Can we keep the door_create(), smf_init() in the child process, but synchronize the parent process and daemonized process, and let the parent process only exit when the child is ready to serve?
- Cathy
