* 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