Bug 1298483 - tcsh recognize value 2147483648 in variable as negative because of internal 32bit limitation
tcsh recognize value 2147483648 in variable as negative because of internal 3...
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: tcsh (Show other bugs)
6.7
All Linux
medium Severity low
: rc
: ---
Assigned To: David Kaspar [Dee'Kej]
Iveta Wiedermann
: EasyFix, Patch, Reproducer
Depends On:
Blocks: 1289025
  Show dependency treegraph
 
Reported: 2016-01-14 04:04 EST by masanari iida
Modified: 2016-05-10 20:56 EDT (History)
3 users (show)

See Also:
Fixed In Version: tcsh-6.17-34.el6
Doc Type: Bug Fix
Doc Text:
NO_DOCS
Story Points: ---
Clone Of:
Environment:
Last Closed: 2016-05-10 20:56:04 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description masanari iida 2016-01-14 04:04:44 EST
Description of problem:
tcsh recognize value 2147483648 in variable as negative.

Version-Release number of selected component (if applicable):
tcsh-6.17-25.el6_6

How reproducible:
Always

Steps to Reproduce:

Execute following test01.csh

====== script ====

set InPutFSize=2147483648
echo $InPutFSize

if(${InPutFSize}>0) then;
        echo $InPutFSize "is positive value";
endif

if(${InPutFSize}<0) then;
        echo $InPutFSize "is negative value";
endif

====== script end ===

Actual results:
Result with tcsh from RHEL6. (tcsh-6.17-25.el6_6)
2147483648
2147483648 is negative value

Expected results:
Result with tcsh from RHEL7 (tcsh-6.18.01-8.el7)
2147483648
2147483648 is positive value

Additional info:
This symptom doesn't exist on tcsh from RHEL7.

After spending some times for bisect,
I found following commit between 6.17.00 and 6.17.01 
fix the symptom.

commit f81e094fc9baaa5e96487d684e71cd4fcde8a3a3
Author: Christos Zoulas <christos@zoulas.com>
Date:   Tue Jan 26 16:10:08 2010 +0000

    make internal calculations use 64 bits.


Please consider backport this patch to tcsh on RHEL6.
Comment 2 David Kaspar [Dee'Kej] 2016-01-14 08:17:12 EST
Hello,

and thank you for your bug report and the additional information you have provided to us. We really appreciate your contribution.

---------

NOTE: Additional (follow-up) commit is necessary as well:

> commit 90a08c664d09f275eb1ecb538944164bd92d6168
> Author: Christos Zoulas <christos@zoulas.com>
> Date:   6 years ago
>
>    deal with systems that don't have long long
Comment 6 masanari iida 2016-03-03 05:17:41 EST
Test tcsh RPM from RHEL6.8 alpha-1, it worked as expected!
Thanks.

[root@localhost ~]# cat test01.tcsh 
#!/bin/tcsh

set InPutFSize=2147483648
echo $InPutFSize

if(${InPutFSize}>0) then;
   echo $InPutFSize " is positive value";
endif

if(${InPutFSize}<0) then;
   echo $InPutFSize " is negative value";
endif


[root@localhost ~]# ./test01.tcsh
2147483648
2147483648  is positive value   <== 
[root@localhost ~]# rpm -q tcsh
tcsh-6.17-34.el6.x86_64
Comment 9 errata-xmlrpc 2016-05-10 20:56:04 EDT
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.

https://rhn.redhat.com/errata/RHBA-2016-0938.html

Note You need to log in before you can comment on or make changes to this bug.