From: Gordon L. K. <gl...@uc...> - 2011-11-28 17:23:57
|
Sean, Thank you for pointing out this problem, and for the relevant links to further information. I got a heads-up about this issue from someone who watches the ITK lists more closely that I do (hi Steve!), and I've started working on a fix. Regardless of the eventual fix, one complication will be that the NrrdIO in ITK is merely the output of a script that regenerates it from the canonical Teem sources. I'll probably be the one to commit to the fix to the Teem sources, but I'll need help getting those propagated back to ITK. In 2009/2010, that process was documented here: http://www.vtk.org/Wiki/Proposals:Updating_Nrrd_library_2009 but since then the move to git/gerrit has probably changed this (I assume). From your email it sounds like you (understandably) wouldn't volunteer to help with this aspect of the process. Do you know someone else you can? Thanks, Gordon On Nov 28, 2011, at 11:01 AM, Sean McBride wrote: > Hi all, > > I'm new on this list, please be gentle. :) > > I don't actually use teem/nrrd, but I maintain an ITK dashboard and it has tests failures related to nrrd. > > There's this code: > > ****** nrrdSanity > ** > ** makes sure that all the basic assumptions of nrrd hold for > ** the architecture/etc which we're currently running on. > ** > ** returns 1 if all is okay, 0 if there is a problem > > which does this: > > tmpLLI = NRRD_LLONG_MAX; > if (tmpLLI != NRRD_LLONG_MAX) { > return 0; > } > > tmpLLI += 1; // problem here > > if (NRRD_LLONG_MIN != tmpLLI) { > return 0; > } > tmpULLI = NRRD_ULLONG_MAX; > > "tmpLLI" is a signed long long. This is adding 1 to the largest possible signed long long, and signed overflow is undefined in C/C++. > > clang has two complier flags to catch this kind of reliance on undefined behaviour: -fcatch-undefined-behavior and -ftrapv. > > They are explained in detail here: > > <http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html> > <http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html> > <http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_21.html> > > I invite you to try building your code and tests with clang with -fcatch-undefined-behavior and -ftrapv > > Unfortunately, since nrrd is but a dependency of a dependency of my app, I don't have time to work on a patch, but I did want to bring these bugs to your attention. > > Cheers, > > -- > ____________________________________________________________ > Sean McBride, B. Eng se...@ro... > Rogue Research www.rogue-research.com > Mac Software Developer Montréal, Québec, Canada > > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure > contains a definitive record of customers, application performance, > security threats, fraudulent activity, and more. Splunk takes this > data and makes sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-novd2d > _______________________________________________ > teem-users mailing list > tee...@li... > https://lists.sourceforge.net/lists/listinfo/teem-users > |