* Mark Martin <storycrafter at gmail.com> [2007-10-15 22:41]:
> Since SMF seems to be my adoptive home, I'd like to try to close out a few
> more bugs.
> 
> 6383235: smf_maintain_instance() shouldn't fail with SCF_ERROR_DELETED
> 6317908: svcs left out the time

  These two are bugs.

> 6196126: svcs -xq

  This change will require a little ARC fast track to declare the new
  interface.  Mostly that boils down to a patch to the manual page as
  well as a patch to the code. 

> 6182530: svcadm alias "enable -t" as start and "disable -t" as stop

  I don't know whether this one is still controversial, or not.  It will
  require an ARC fast track.

> I was tempted to tackle:
> 6409970: Sometimes svc.startd laughs in SIGTERM's face
> 
> But I may be reaching too far.

  David left further information in a part of the bug not displayed by
  b.o.o.:

Comments:
bustos 2006-04-06

I suspect it's because svc.startd implements die-on-SIGTERM functionality
like [startd.c]:

    822 /*ARGSUSED*/
    823 static void
    824 die_handler(int sig, siginfo_t *info, void *data)
    825 {
    826         finished = 1;
    827 }
    828 
    829 int
    830 main(int argc, char *argv[])
    831 {
    ...
    907         act.sa_sigaction = &die_handler;
    908         (void) sigfillset(&act.sa_mask);
    909         act.sa_flags = SA_SIGINFO;
    910         (void) sigaction(SIGINT, &act, NULL);
    911         (void) sigaction(SIGTERM, &act, NULL);
    912 
    913         startup(log_args);
    914 
    915         (void) sigemptyset(&nullset);
    916         while (!finished) {
    917                 log_framework(LOG_DEBUG, "Main thread paused\n");
    918                 (void) sigsuspend(&nullset);
    919         }
    920 
    921         (void) log_framework(LOG_DEBUG, "Restarter exiting.\n");
    922         return (0);
    923 }

which assumes that the sigsuspend()ed thread will receive the signal.  If
svc.startd doesn't mask SIGTERM on all of its other threads (which I believe
to be the case), then sometimes the signal will go to another thread, which
will set finished but will not wake up the main thread, so svc.startd won't
exit.
Entry 1 david.bustos [2006-04-06 22:09]

  - Stephen


Reply via email to