Bug 1099025

Summary: ftime() possibly broken on ppc
Product: Red Hat Enterprise Linux 6 Reporter: Siddhesh Poyarekar <spoyarek>
Component: glibcAssignee: Carlos O'Donell <codonell>
Status: CLOSED ERRATA QA Contact: Arjun Shankar <ashankar>
Severity: unspecified Docs Contact:
Priority: low    
Version: 6.5CC: ashankar, codonell, fweimer, hannsj_uhl, mlichvar, mnewsome, pfrankli, spoyarek
Target Milestone: rc   
Target Release: ---   
Hardware: ppc   
OS: Unspecified   
Whiteboard:
Fixed In Version: glibc-2.12-1.148.el6 Doc Type: Bug Fix
Doc Text:
This update fixes a bug in the gettimeofday VDSO implementation that resulted in gettimeofday returning an incorrect non-changing value, resulting in the ftime function returning the same non-changing value.
Story Points: ---
Clone Of: 1064945 Environment:
Last Closed: 2014-10-14 04:43:44 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1064945    
Bug Blocks: 1028285    

Description Siddhesh Poyarekar 2014-05-19 10:42:57 UTC
+++ This bug was initially created as a clone of Bug #1064945 +++

Description of problem:
The configure script in the lrzsz package checks if the ftime() function works correctly and it seems this test hangs (infinite loop) on ppc in the current RHEL7 buildroot. It looks like the time field in the timeb structure doesn't change or the call now fails.

I've patched the lrzsz package to not try ftime(), but I thought this might be worth further investigation.

The last build that passed was with glibc-2.17-4.el7. 

Version-Release number of selected component (if applicable):
glibc-2.17-48.el7

How reproducible:
easily

Steps to Reproduce:
1. compile and run the c code below

Actual results:
hangs

Expected results:
runs for 10 seconds and returns 0.

Additional info:

The test code:

#include <sys/types.h>
#include <sys/timeb.h>
#include <stdio.h>
main ()
{
  struct timeb s, slast;
  int c = 0;
  ftime (&slast);
  while (c < 10)
    {
      ftime (&s);
      if (s.time < slast.time
      || (s.time == slast.time && s.millitm < slast.millitm)) {
      fprintf(stderr,"s: %ld, %ld, slast: %ld, %ld\n",
        s.time,s.millitm, slast.time,slast.millitm);
    exit (1);
        }
      if (s.time != slast.time)
    ++c;
      slast.time = s.time;
      slast.millitm = s.millitm;
    }
  exit (0);
}

Comment 1 Siddhesh Poyarekar 2014-05-19 10:47:49 UTC
This blocks bz #1028285 because the latter adds VDSO support for gettimeofday, which in turn introduces this bug.

Comment 18 errata-xmlrpc 2014-10-14 04:43:44 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2014-1391.html