--- initscripts-6.91/src/minilogd.c.orig 2001-01-30 01:31:07.000000000 +0300 +++ initscripts-6.91/src/minilogd.c 2003-04-21 23:03:29.000000000 +0400 @@ -125,9 +125,17 @@ if ( (x>0) && ( pfds.revents & (POLLHUP | POLLNVAL)) ) done = 1; /* Check to see if syslogd's yanked our socket out from under us */ + + /* + * bor: it used to check atime as well. It provoked reace condition + * that resulted in deadlock during boot. atime is updated on socket + * connect. So every call to openlog/syslog/closelog changed atime + * so /dev/log has been recreated. In the worst case initlog was left + * connected to old /dev/log with nobody to read from and hung + */ if ( (stat(_PATH_LOG,&s2)!=0) || (s1.st_ino != s2.st_ino ) || (s1.st_ctime != s2.st_ctime) || - (s1.st_mtime != s2.st_mtime) || (s1.st_atime != s2.st_atime) ) { + (s1.st_mtime != s2.st_mtime) ) { done = 1; we_own_log = 0; }