Bug 1298483

Summary: tcsh recognize value 2147483648 in variable as negative because of internal 32bit limitation
Product: Red Hat Enterprise Linux 6 Reporter: masanari iida <masanari.iida>
Component: tcshAssignee: David Kaspar // Dee'Kej <deekej>
Status: CLOSED ERRATA QA Contact: Iveta Wiedermann <isenfeld>
Severity: low Docs Contact:
Priority: medium    
Version: 6.7CC: bnater, isenfeld, ovasik
Target Milestone: rcKeywords: EasyFix, Patch, Reproducer
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
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-11 00:56:04 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: 1289025    

Description masanari iida 2016-01-14 09:04:44 UTC
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>
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 13:17:12 UTC
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>
> Date:   6 years ago
>
>    deal with systems that don't have long long

Comment 6 masanari iida 2016-03-03 10:17:41 UTC
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-11 00:56:04 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.

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