32 / 64 bit compatibility and the unsigned long long

View: New views
9 Messages — Rating Filter:   Alert me  

32 / 64 bit compatibility and the unsigned long long

by Peter Cogan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Dear CINT coders,

one of the cint limitations listed here:
is that it does not distinguish between unsigned long long and signed long long. We have found that this causes problems reading a ROOT file written on a 32 bit machine into a 64 bit machine and vice versa. Specifically, we get errors such as:
Error in <TStreamerInfo::WriteBuffer>: The element VATime::fDayNS type 217 (unsigned long long) is not supported yet
where VATime::fDayNS is a uint64_t

Unfortunately, we have started using 64 bit machines long after our analysis development started, and it would be a major problem to remove all usage of uint64_t from our analysis package, and would mean that we would loose compatibility with old files. 

Interestingly, I note that here:
you say that many of the limitations will be removed in a new version in 2007. The version currently available is  5.16.16, November 24, 2006

So, it would be nice to know if the unsigned long long will be handled fully in the new version, and when you might expect it to become available. 

kind regards
Peter Cogan


--

Peter Cogan
skype name: petercogan
skypein number: +1 520 413 1472

Steward Observatory
933 N. Cherry Avenue
Tucson
Arizona 85719
Phone: +1 520 670-5749
Fax: +1 520 670-5714




Re: 32 / 64 bit compatibility and the unsigned long long

by bin liu-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

Hi,

I'm not a CINT coder, only a user. What I notice is: the web about limitations (same as latest cint/doc/limitati.txt) may have not been maintained for long time. So things described there maybe obsolete.

BTW, the latest version in CVS is 5.16.25, Sept 10, 2007.

@Philippe & Axel, you probably forgot to modify line 3 of RELNOTE.txt:
    cint 5.16.24/6.1.24  release note
should be 5.16.25/6.1.25 as per tail of the file.


Regards,
Liu Bin



2007/9/28, Peter Cogan <peter.cogan@...>:

 
Dear CINT coders,

 
one of the cint limitations listed here:
is that it does not distinguish between unsigned long long and signed long long. We have found that this causes problems reading a ROOT file written on a 32 bit machine into a 64 bit machine and vice versa. Specifically, we get errors such as:
Error in <TStreamerInfo::WriteBuffer>: The element VATime::fDayNS type 217 (unsigned long long) is not supported yet
where VATime::fDayNS is a uint64_t

 
Unfortunately, we have started using 64 bit machines long after our analysis development started, and it would be a major problem to remove all usage of uint64_t from our analysis package, and would mean that we would loose compatibility with old files. 

 
Interestingly, I note that here:
you say that many of the limitations will be removed in a new version in 2007. The version currently available is  5.16.16, November 24, 2006

 
So, it would be nice to know if the unsigned long long will be handled fully in the new version, and when you might expect it to become available. 

 
kind regards
Peter Cogan

 

--

 
Peter Cogan
skype name: petercogan
skypein number: +1 520 413 1472

 
Steward Observatory
933 N. Cherry Avenue
Tucson
Arizona 85719
Phone: +1 520 670-5749
Fax: +1 520 670-5714

 


 


Re: 32 / 64 bit compatibility and the unsigned long long

by Axel Naumann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

sorry for the slow response. I'm on parental leave right now; I will
process these reports in about 3 weeks.

Axel.

bin liu wrote:

> Hi,
>
> I'm not a CINT coder, only a user. What I notice is: the web about
> limitations (same as latest cint/doc/limitati.txt) may have not been
> maintained for long time. So things described there maybe obsolete.
>
> BTW, the latest version in CVS is 5.16.25, Sept 10, 2007.
>
> @Philippe & Axel, you probably forgot to modify line 3 of RELNOTE.txt:
>     cint 5.16.24/6.1.24  release note
> should be 5.16.25/6.1.25 as per tail of the file.
>
>
> Regards,
> Liu Bin
>
>
>
> 2007/9/28, Peter Cogan <peter.cogan@...
> <mailto:peter.cogan@...>>:
>
>
>      
>
>     Dear CINT coders,
>
>
>      
>
>     one of the cint limitations listed here:
>
>     http://root.cern.ch/root/Cint.phtml?limitations
>
>     is that it does not distinguish between unsigned long long and
>     signed long long. We have found that this causes problems reading a
>     ROOT file written on a 32 bit machine into a 64 bit machine and vice
>     versa. Specifically, we get errors such as:
>
>     Error in <TStreamerInfo::WriteBuffer>: The element VATime::fDayNS
>     type 217 (unsigned long long) is not supported yet
>
>     where VATime::fDayNS is a uint64_t
>
>
>      
>
>     Unfortunately, we have started using 64 bit machines long after our
>     analysis development started, and it would be a major problem to
>     remove all usage of uint64_t from our analysis package, and would
>     mean that we would loose compatibility with old files.
>
>
>      
>
>     Interestingly, I note that here:
>
>     http://root.cern.ch/twiki/bin/view/ROOT/CINT
>
>     you say that many of the limitations will be removed in a new
>     version in 2007. The version currently available is  5.16.16,
>     November 24, 2006
>
>
>      
>
>     So, it would be nice to know if the unsigned long long will be
>     handled fully in the new version, and when you might expect it to
>     become available.
>
>
>      
>
>     kind regards
>
>     Peter Cogan
>
>
>      
>
>
>     --
>
>
>      
>
>     Peter Cogan
>
>     skype name: petercogan
>
>     skypein number: +1 520 413 1472
>
>
>      
>
>     Steward Observatory
>
>     933 N. Cherry Avenue
>
>     Tucson
>
>     Arizona 85719
>
>     Phone: +1 520 670-5749
>
>     Fax: +1 520 670-5714
>
>
>      
>
>
>
>      
>
>





Parent Message unknown RE: 32 / 64 bit compatibility and the unsigned long long

by Philippe Canal :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Masa,

I uploaded your modification to the CINT repository.

We are currently transistioning from CVS to a new source control
system called SubVersion.  
We have a primer on how to use subversion at:

   http://root.cern.ch/twiki/bin/view/ROOT/SubversionHowto

In particular you can download the lastest version of the source
by using (for read-only)

   svn co http://root.cern.ch/svn/cint/trunk cint

I am forwarding the instruction for read/write in a separate mail.

Cheers,
Philippe.

-----Original Message-----
From: Masaharu Goto [mailto:gotom@...]
Sent: Tuesday, October 02, 2007 7:08 PM
To: Axel Naumann
Cc: cint@...; Philippe Canal
Subject: Re: [CINT] 32 / 64 bit compatibility and the unsigned long long

Hello Philippe and Axel,

I updated  $CINTSYSDIR/include/ReadF.C,.cxx and .h for my purpose.  
Those files may not be used by ROOT users, but this is quite useful.
Would you merge those changes in CVS repository?

Thank you
Masa Goto



RE: 32 / 64 bit compatibility and the unsigned long long

by Philippe Canal :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Peter,
 
I can not reproduce this problem.  I just tried to write a small class containt uint64_t and
write it on a 32 bit machine and then try to read it on a 64 bit machine and then in the
same session to try to write again without any problem. [This is with the trunk of the
svn repository]
 
Which version of ROOT are you using?
Could you provide a complete running example reproducing the problem?
 
Thanks,
Philippe.


From: owner-cint@... [mailto:owner-cint@...] On Behalf Of Peter Cogan
Sent: Thursday, September 27, 2007 3:33 PM
To: cint@...
Cc: veritas-oawg@...
Subject: [CINT] 32 / 64 bit compatibility and the unsigned long long


Dear CINT coders,

one of the cint limitations listed here:
is that it does not distinguish between unsigned long long and signed long long. We have found that this causes problems reading a ROOT file written on a 32 bit machine into a 64 bit machine and vice versa. Specifically, we get errors such as:
Error in <TStreamerInfo::WriteBuffer>: The element VATime::fDayNS type 217 (unsigned long long) is not supported yet
where VATime::fDayNS is a uint64_t

Unfortunately, we have started using 64 bit machines long after our analysis development started, and it would be a major problem to remove all usage of uint64_t from our analysis package, and would mean that we would loose compatibility with old files.

Interestingly, I note that here:
you say that many of the limitations will be removed in a new version in 2007. The version currently available is 5.16.16, November 24, 2006

So, it would be nice to know if the unsigned long long will be handled fully in the new version, and when you might expect it to become available.

kind regards
Peter Cogan


--

Peter Cogan
skype name: petercogan
skypein number: +1 520 413 1472

Steward Observatory
933 N. Cherry Avenue
Tucson
Arizona 85719
Phone: +1 520 670-5749
Fax: +1 520 670-5714




RE: 32 / 64 bit compatibility and the unsigned long long

by Philippe Canal :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Peter,
 
On further investigation I do see some issues and will investigate them.
 
Please note that you could also use the type Long64_t and ULong64_t which are _already_ working perfectly.
 
Cheers,
Philippe


From: Philippe Canal [mailto:pcanal@...]
Sent: Monday, October 08, 2007 5:00 PM
To: 'Peter Cogan'; 'cint@...'
Cc: 'veritas-oawg@...'
Subject: RE: [CINT] 32 / 64 bit compatibility and the unsigned long long

Hi Peter,
 
I can not reproduce this problem.  I just tried to write a small class containt uint64_t and
write it on a 32 bit machine and then try to read it on a 64 bit machine and then in the
same session to try to write again without any problem. [This is with the trunk of the
svn repository]
 
Which version of ROOT are you using?
Could you provide a complete running example reproducing the problem?
 
Thanks,
Philippe.


From: owner-cint@... [mailto:owner-cint@...] On Behalf Of Peter Cogan
Sent: Thursday, September 27, 2007 3:33 PM
To: cint@...
Cc: veritas-oawg@...
Subject: [CINT] 32 / 64 bit compatibility and the unsigned long long


Dear CINT coders,

one of the cint limitations listed here:
is that it does not distinguish between unsigned long long and signed long long. We have found that this causes problems reading a ROOT file written on a 32 bit machine into a 64 bit machine and vice versa. Specifically, we get errors such as:
Error in <TStreamerInfo::WriteBuffer>: The element VATime::fDayNS type 217 (unsigned long long) is not supported yet
where VATime::fDayNS is a uint64_t

Unfortunately, we have started using 64 bit machines long after our analysis development started, and it would be a major problem to remove all usage of uint64_t from our analysis package, and would mean that we would loose compatibility with old files.

Interestingly, I note that here:
you say that many of the limitations will be removed in a new version in 2007. The version currently available is 5.16.16, November 24, 2006

So, it would be nice to know if the unsigned long long will be handled fully in the new version, and when you might expect it to become available.

kind regards
Peter Cogan


--

Peter Cogan
skype name: petercogan
skypein number: +1 520 413 1472

Steward Observatory
933 N. Cherry Avenue
Tucson
Arizona 85719
Phone: +1 520 670-5749
Fax: +1 520 670-5714




Re: 32 / 64 bit compatibility and the unsigned long long

by Peter Cogan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi Philippe,

thanks for your replies - and apologies for not replying to your request yesterday. I haven't had a chance to investigate this further myself and generate examples - good luck with the work.

cheers
Peter

On 9 Oct 2007, at TuesdayOctober914:33, Philippe Canal wrote:

Hi Peter,
 
On further investigation I do see some issues and will investigate them.
 
Please note that you could also use the type Long64_t and ULong64_t which are _already_ working perfectly.
 
Cheers,
Philippe


From: Philippe Canal [pcanal@...]
Sent: Monday, October 08, 2007 5:00 PM
To: 'Peter Cogan'; 'cint@...'
Cc: 'veritas-oawg@...'
Subject: RE: [CINT] 32 / 64 bit compatibility and the unsigned long long

Hi Peter,
 
I can not reproduce this problem.  I just tried to write a small class containt uint64_t and
write it on a 32 bit machine and then try to read it on a 64 bit machine and then in the
same session to try to write again without any problem. [This is with the trunk of the
svn repository]
 
Which version of ROOT are you using?
Could you provide a complete running example reproducing the problem?
 
Thanks,
Philippe.


From: owner-cint@... [owner-cint@...] On Behalf Of Peter Cogan
Sent: Thursday, September 27, 2007 3:33 PM
To: cint@...
Cc: veritas-oawg@...
Subject: [CINT] 32 / 64 bit compatibility and the unsigned long long


Dear CINT coders,

one of the cint limitations listed here:
is that it does not distinguish between unsigned long long and signed long long. We have found that this causes problems reading a ROOT file written on a 32 bit machine into a 64 bit machine and vice versa. Specifically, we get errors such as:
Error in <TStreamerInfo::WriteBuffer>: The element VATime::fDayNS type 217 (unsigned long long) is not supported yet
where VATime::fDayNS is a uint64_t

Unfortunately, we have started using 64 bit machines long after our analysis development started, and it would be a major problem to remove all usage of uint64_t from our analysis package, and would mean that we would loose compatibility with old files.

Interestingly, I note that here:
you say that many of the limitations will be removed in a new version in 2007. The version currently available is 5.16.16, November 24, 2006

So, it would be nice to know if the unsigned long long will be handled fully in the new version, and when you might expect it to become available.

kind regards
Peter Cogan


--

Peter Cogan
skype name: petercogan
skypein number: +1 520 413 1472

Steward Observatory
933 N. Cherry Avenue
Tucson
Arizona 85719
Phone: +1 520 670-5749
Fax: +1 520 670-5714




--

Peter Cogan
skype name: petercogan
skypein number: +1 520 413 1472

Steward Observatory
933 N. Cherry Avenue
Tucson
Arizona 85719
Phone: +1 520 670-5749
Fax: +1 520 670-5714




RE: 32 / 64 bit compatibility and the unsigned long long

by Philippe Canal :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Peter,
 
I corrected in the ROOT svn trunk an existing problem with handling data
member
of literal type (no typedef) unsigned long long.
 
Now the problem that you are seeing is linked to the fact that stdint.h
contains:
 
#if __WORDSIZE == 64
typedef unsigned long int       uint64_t;
#else
__extension__
typedef unsigned long long int  uint64_t;
#endif
 
so that for ROOT uint64_t is a 'long' on 64 bit machines and a 'long long'
on 32 bit machine.  Since we do not give uint64_t any special treament
(we use U/Long64_t for this purpose), the representation of you class
are different on both machine.

However this is usually not a problem (long are stored as 8 bytes
quantities on all platforms).

There 2 possibilities.  Either you are seeing the message:

Warning in <TStreamerInfo::BuildCheck>:
   The StreamerInfo of class myclass read from file ull.root
   has the same version (=1) as the active class but a different checksum.
   You should update the version to ClassDef(myclass,2).
   Do not try to write objects with the current class definition,
   the files will not be readable.

In which case I would recommend:
   a) change all uint64_t into ULong64_t
   b) increase the class version in your header files.
and your code will work without problem and be able to read older files.

If you are not receiving this message then I am guessing that you
are __updating__ on a 32 bits machine a TTree object  
that was created on 64 bits machines.

If this is the case, you must instead create a new TTree and use the
old and new tree (for reading) using a TChain.

Cheers,
Philippe

 


________________________________

From: Philippe Canal [mailto:pcanal@...]
Sent: Monday, October 08, 2007 5:00 PM
To: 'Peter Cogan'; 'cint@...'
Cc: 'veritas-oawg@...'
Subject: RE: [CINT] 32 / 64 bit compatibility and the unsigned long long


Hi Peter,
 
I can not reproduce this problem.  I just tried to write a small class
containt uint64_t and
write it on a 32 bit machine and then try to read it on a 64 bit machine and
then in the
same session to try to write again without any problem. [This is with the
trunk of the
svn repository]
 
Which version of ROOT are you using?
Could you provide a complete running example reproducing the problem?
 
Thanks,
Philippe.

________________________________

From: owner-cint@... [mailto:owner-cint@...] On Behalf Of
Peter Cogan
Sent: Thursday, September 27, 2007 3:33 PM
To: cint@...
Cc: veritas-oawg@...
Subject: [CINT] 32 / 64 bit compatibility and the unsigned long long



Dear CINT coders,

one of the cint limitations listed here:
http://root.cern.ch/root/Cint.phtml?limitations
is that it does not distinguish between unsigned long long and signed long
long. We have found that this causes problems reading a ROOT file written on
a 32 bit machine into a 64 bit machine and vice versa. Specifically, we get
errors such as:
Error in <TStreamerInfo::WriteBuffer>: The element VATime::fDayNS type 217
(unsigned long long) is not supported yet
where VATime::fDayNS is a uint64_t

Unfortunately, we have started using 64 bit machines long after our analysis
development started, and it would be a major problem to remove all usage of
uint64_t from our analysis package, and would mean that we would loose
compatibility with old files.

Interestingly, I note that here:
http://root.cern.ch/twiki/bin/view/ROOT/CINT
you say that many of the limitations will be removed in a new version in
2007. The version currently available is 5.16.16, November 24, 2006

So, it would be nice to know if the unsigned long long will be handled fully
in the new version, and when you might expect it to become available.

kind regards
Peter Cogan


--

Peter Cogan
skype name: petercogan
skypein number: +1 520 413 1472

Steward Observatory
933 N. Cherry Avenue
Tucson
Arizona 85719
Phone: +1 520 670-5749
Fax: +1 520 670-5714





Re: 32 / 64 bit compatibility and the unsigned long long

by Axel Naumann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

bin liu wrote:
> @Philippe & Axel, you probably forgot to modify line 3 of RELNOTE.txt:
>     cint 5.16.24/6.1.24  release note
> should be 5.16.25/6.1.25 as per tail of the file.

Thanks, fixed for 5.16.26.
Cheers, Axel.

LightInTheBox - Buy quality products at wholesale price