[Top][All Lists]

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

Re: [Bug-glpk] Segfault in jday function

From: Heinrich Schuchardt
Subject: Re: [Bug-glpk] Segfault in jday function
Date: Mon, 01 Jul 2013 21:18:54 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130116 Icedove/10.0.12

Hello Andrew,

if gettimeofday fails it returns -1,
if gmtime fails it returns NULL.

To avoid segmentation faults, please, provide error handling as follows:

/* POSIX version ******************************************************/

#if defined(HAVE_SYS_TIME_H) && defined(HAVE_GETTIMEOFDAY)

#include <sys/time.h>
#include <time.h>
#include <errno.h>
#include <string.h>

double glp_time(void)
{     struct timeval tv;
      struct tm *tm;
      int j;
      double t;
      if (-1 == gettimeofday(&tv, NULL)) {
         xerror("%s\n", strerror(errno));
      tm = gmtime(&tv.tv_sec);
      xassert(tm != NULL);
      j = jday(tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year);
      xassert(j >= 0);
      t = ((((double)(j - EPOCH) * 24.0 + (double)tm->tm_hour) * 60.0 +
         (double)tm->tm_min) * 60.0 + (double)tm->tm_sec) * 1000.0 +
         (double)(tv.tv_usec / 1000);
      return t;

In 2010 there was an error in gettimeofday as reported here:

Best regards

Heinrich Schuchardt

Thank you for your bug report.

The exception happens in a Posix version of glp_time function. It is
difficult to say what is wrong, most likely it is some MINGW64
inconsistency, because under GNU/Linux this code works.

To fix the bug you may simply to disable using the configuration header
(created by the configure script) by replacing the fragment in file
glpk-4.51/src/env/time.c, lines 24-26:


with the following one:

#if 0

In this case an ANSI portable version will be used, which should work on
any platform.

Hope this helps.

BTW, who displays the message "warning: Invalid parameter passed to C
runtime function." ? It is not a glpk message.

Bug-glpk mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]