|
View:
New views
9 Messages
—
Rating Filter:
Alert me
|
|
|
32 / 64 bit compatibility and the unsigned long longDear 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 longHi, 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:
2007/9/28, Peter Cogan <peter.cogan@...>:
|
|
|
Re: 32 / 64 bit compatibility and the unsigned long longHi,
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 > > > > > > > > > |
|
|
|
|
|
RE: 32 / 64 bit compatibility and the unsigned long longHi 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 longHi 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 longHi 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:
-- 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 longHi 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 longHi,
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. |
| Free Forum Powered by Nabble | Forum Help |