Patch-ID# 100651-01 Keywords: cron, die, daylight, savings, time, core, dump, ruser, rt Synopsis: SunOS 4.1;4.1.1;4.1.2: Cron dumps core & Cron dies when daylight savings time STARTS/STOPS Date: SunOS release: 4.1, 4.1.1, 4.1.2 Topic: Combine patches 100402-01 & 100520-02 BugId's fixed with this patch: 1031907, 1069046 Architectures for which this patch is available: sun3 (all) & sun4 (all) Patches which may conflict with this patch: n/a Note: This patch combines patches 100402-01 & 100520-02 Obsoleted by: Problem Description: BUG 1031907: If there are cron events scheduled for the time that will disappear when daylight savings time starts, they will be scheduled for a time practically in future infinity. This is because timelocal() returns -1 if given a gmt that falls into the 'non-existent' time period. This value of -1 was being used as the 'next time' of the event. As far as time values go, it's either a very long time ago or some time far into the future. Note that 'at' will not allow you to schedule jobs during this time period. With this patch, jobs that would fall into this 'offset' period are scheduled `later', e.g. the daylight-savings-time offset is added to their event time. If the offset is one hour, for example, then one hour is added. If there are cron jobs scheduled for the hour following the 'offset' period, those jobs will also be run during the same hour. BUG 1069046: Due to a racing condition, the "usr" structure of a "at"/"cron" job while running could be removed. Hence, when cron tries to print out the information of "usr" at the end of the job, it will core dump. One can confirm this problem by looking at the core. If "cron" dies at the point it's running "logit()" (called from cleanup), then very probably it's due to this problem. INSTALL: 1) Login as root 2) Kill cron: a) ps -aux | egrep cron b) note the process ID (pid) of cron c) kill -TERM 3) cp /usr/etc/cron /usr/etc/cron.FCS 4) cp `arch`/{4.1,4.1.1,4.1.2}/cron /usr/etc/cron 5) Set file ownership and permissions: a) chown root.staff /usr/etc/cron b) chmod 755 /usr/etc/cron 6) restart cron