comparison usr/src/cmd/svc/startd/startd.c @ 14129:790945ad7848

3986 svc.startd dies in getutxent_frec() 3987 svc.startd dies in utmpx_postfork() Reviewed by: Keith Wesolowski <keith.wesolowski@joyent.com> Reviewed by: Robert Mustacchi <rm@joyent.com> Reviewed by: Saso Kiselkov <skiselkov@gmail.com> Approved by: Richard Lowe <richlowe@richlowe.net>
author Bryan Cantrill <bryan@joyent.com>
date Sun, 04 Aug 2013 09:58:38 -0700
parents da056fdd2d14
children
comparison
equal deleted inserted replaced
14128:615580eeb3d8 14129:790945ad7848
769 769
770 if (configd_ctid != -1) 770 if (configd_ctid != -1)
771 log_framework(LOG_DEBUG, "Existing configd contract %ld; not " 771 log_framework(LOG_DEBUG, "Existing configd contract %ld; not "
772 "starting svc.configd\n", configd_ctid); 772 "starting svc.configd\n", configd_ctid);
773 773
774 /*
775 * Call utmpx_init() before creating the fork_configd() thread.
776 */
777 utmpx_init();
778
774 (void) startd_thread_create(fork_configd_thread, (void *)configd_ctid); 779 (void) startd_thread_create(fork_configd_thread, (void *)configd_ctid);
775 780
776 /* 781 /*
777 * Await, if necessary, configd's initial arrival. 782 * Await, if necessary, configd's initial arrival.
778 */ 783 */
784 &st->st_configd_live_lock); 789 &st->st_configd_live_lock);
785 assert(err == 0); 790 assert(err == 0);
786 } 791 }
787 MUTEX_UNLOCK(&st->st_configd_live_lock); 792 MUTEX_UNLOCK(&st->st_configd_live_lock);
788 793
789 utmpx_init();
790 wait_init(); 794 wait_init();
791 795
792 if (read_startd_config()) 796 if (read_startd_config())
793 log_framework(LOG_INFO, "svc.configd unable to provide startd " 797 log_framework(LOG_INFO, "svc.configd unable to provide startd "
794 "optional settings\n"); 798 "optional settings\n");