Bug 1064945

Summary: ftime() possibly broken on ppc
Product: Red Hat Enterprise Linux 7 Reporter: Miroslav Lichvar <mlichvar>
Component: glibcAssignee: Siddhesh Poyarekar <spoyarek>
Status: CLOSED CURRENTRELEASE QA Contact: Arjun Shankar <ashankar>
Severity: unspecified Docs Contact:
Priority: low    
Version: 7.0CC: ashankar, codonell, fweimer, mnewsome, pfrankli, spoyarek
Target Milestone: rc   
Target Release: ---   
Hardware: ppc   
OS: Unspecified   
Whiteboard:
Fixed In Version: glibc-2.17-49.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1099025 (view as bug list) Environment:
Last Closed: 2014-06-13 12:56:40 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:    
Bug Blocks: 1099025    

Description Miroslav Lichvar 2014-02-13 15:32:56 UTC
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 4 Siddhesh Poyarekar 2014-02-21 10:49:05 UTC
This is upstream 16430:

https://sourceware.org/bugzilla/show_bug.cgi?id=16430

Checking for backport feasibility.

Comment 6 Siddhesh Poyarekar 2014-02-24 04:23:58 UTC
A straight backport of https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=736c304a1ab4cee36a2f3343f1698bc0abae4608 fixes the problem.  No regressions seen in the testsuite.  Carlos, could you mark devel_ack+ so that I can push it?

Comment 11 Ludek Smid 2014-06-13 12:56:40 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.