[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#47584: marked as done (libc6.1: localtime() hangs on alpha)



Your message dated Tue, 4 Apr 2000 09:42:48 -0400 (EDT)
with message-id <Pine.LNX.4.21.0004040941320.12710-100000@spawn.besmarter.com>
and subject line localtime() calls work properly again on Alpha
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Darren Benham
(administrator, Debian Bugs database)

--------------------------------------
Received: (at submit) by bugs.debian.org; 16 Oct 1999 20:53:39 +0000
Received: (qmail 2548 invoked from network); 16 Oct 1999 20:53:37 -0000
Received: from faure.debian.org (209.41.108.194)
  by master.debian.org with SMTP; 16 Oct 1999 20:53:37 -0000
Received: from mstone by faure.debian.org with local (Exim 3.03 #1 (Debian))
	id 11capU-0002jP-00; Sat, 16 Oct 1999 15:53:28 -0500
Date: Sat, 16 Oct 1999 15:53:28 -0500
From: Michael Stone <mstone@faure.debian.org>
To: submit@bugs.debian.org
Subject: libc6.1: localtime() hangs on alpha
Message-ID: <19991016155328.A9430@faure.debian.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
User-Agent: Mutt/1.0pre1i

Package: libc6
Version: 2.1.2-1
Severity: Important

The attached code is part of an autoconf test. It hangs in the
mktime_test function on faure, but works fine on other platforms.


#line 3148 "configure"
/* Test program from Paul Eggert (eggert@twinsun.com)
   and Tony Leneis (tony@plaza.ds.adp.com).  */
#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
#  include <sys/time.h>
# else
#  include <time.h>
# endif
#endif

#if HAVE_UNISTD_H
# include <unistd.h>
#endif

#if !HAVE_ALARM
# define alarm(X) /* empty */
#endif

/* Work around redefinition to rpl_putenv by other config tests.  */
#undef putenv

static time_t time_t_max;

/* Values we'll use to set the TZ environment variable.  */
static const char *const tz_strings[] = {
  (const char *) 0, "TZ=GMT0", "TZ=JST-9",
  "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
};
#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))

/* Fail if mktime fails to convert a date in the spring-forward gap.
   Based on a problem report from Andreas Jaeger.  */
static void
spring_forward_gap ()
{
  /* glibc (up to about 1998-10-07) failed this test) */
  struct tm tm;

  /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
     instead of "TZ=America/Vancouver" in order to detect the bug even
     on systems that don't support the Olson extension, or don't have the
     full zoneinfo tables installed.  */
  putenv ("TZ=PST8PDT,M4.1.0,M10.5.0"); 
  tm.tm_year = 98;
  tm.tm_mon = 3;
  tm.tm_mday = 5;
  tm.tm_hour = 2;
  tm.tm_min = 0;
  tm.tm_sec = 0;
  tm.tm_isdst = -1;
  if (mktime (&tm) == (time_t)-1)
    exit (1);
}

static void
mktime_test (now)
     time_t now;
{
  struct tm *lt;
  if ((lt = localtime (&now)) && mktime (lt) != now)
    exit (1);
  now = time_t_max - now;
  if ((lt = localtime (&now)) && mktime (lt) != now)
    exit (1);
}

static void
irix_6_4_bug ()
{
  /* Based on code from Ariel Faigon.  */
  struct tm tm;
  tm.tm_year = 96;
  tm.tm_mon = 3;
  tm.tm_mday = 0;
  tm.tm_hour = 0;
  tm.tm_min = 0;
  tm.tm_sec = 0;
  tm.tm_isdst = -1;
  mktime (&tm);
  if (tm.tm_mon != 2 || tm.tm_mday != 31)
    exit (1);
}

static void
bigtime_test (j)
     int j;
{
  struct tm tm;
  time_t now;
  tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j;
  /* This test makes some buggy mktime implementations loop.
     Give up after 10 seconds.  */
  alarm (10);
  now = mktime (&tm);
  alarm (0);
  if (now != (time_t) -1)
    {
      struct tm *lt = localtime (&now);
      if (! (lt
	     && lt->tm_year == tm.tm_year
	     && lt->tm_mon == tm.tm_mon
	     && lt->tm_mday == tm.tm_mday
	     && lt->tm_hour == tm.tm_hour
	     && lt->tm_min == tm.tm_min
	     && lt->tm_sec == tm.tm_sec
	     && lt->tm_yday == tm.tm_yday
	     && lt->tm_wday == tm.tm_wday
	     && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
		  == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
	exit (1);
    }
}

int
main ()
{
  time_t t, delta;
  int i, j;

  spring_forward_gap ();
  for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2)
    continue;
  time_t_max--;
  delta = time_t_max / 997; /* a suitable prime number */
  for (i = 0; i < N_STRINGS; i++)
    {
      if (tz_strings[i])
	putenv (tz_strings[i]);

      for (t = 0; t <= time_t_max - delta; t += delta)
	mktime_test (t);
      mktime_test ((time_t) 60 * 60);
      mktime_test ((time_t) 60 * 60 * 24);

      for (j = 1; 0 < j; j *= 2)
        bigtime_test (j);
      bigtime_test (j - 1);
    }
  irix_6_4_bug ();
  exit (0);
}
	      
---------------------------------------
Received: (at 47584-done) by bugs.debian.org; 4 Apr 2000 13:42:54 +0000
Received: (qmail 17903 invoked from network); 4 Apr 2000 13:42:53 -0000
Received: from spawn.besmarter.com (mail@208.178.115.58)
  by master.debian.org with SMTP; 4 Apr 2000 13:42:53 -0000
Received: from localhost ([127.0.0.1] ident=chris)
	by spawn.besmarter.com with esmtp (Exim 3.12 #1 (Debian))
	id 12cTbU-0003Pp-00
	for <47584-done@bugs.debian.org>; Tue, 04 Apr 2000 09:42:48 -0400
Date: Tue, 4 Apr 2000 09:42:48 -0400 (EDT)
From: "Christopher C. Chimelis" <chris@debian.org>
X-Sender: chris@spawn.besmarter.com
To: 47584-done@bugs.debian.org
Subject: localtime() calls work properly again on Alpha
Message-ID: <Pine.LNX.4.21.0004040941320.12710-100000@spawn.besmarter.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII


I've tested glibc 2.1.3-7 and the localtime() calls in the configure
scripts work properly again (I know fileutils had a problem with this
before).  It appears that 2.1.3 finally fixed this long-standing bug.

C


Reply to: