[Debian-med-packaging] Bug#891335: clonalframe: FTBFS with glibc 2.27: error: 'UNDERFLOW' was not declared in this scope

Andreas Tille tille at debian.org
Wed Feb 28 10:26:22 UTC 2018


Control: tags -1 upstream
Control: forwarded -1 Xavier Didelot <xavier.didelot at gmail.com>

Hi Xavier,

I know that ClonalFrame is not really supported any more but due to
Debian usage statistics it has some permanent users we woul love to
support with working code.  It seems that a change in glibc has
uncovered some code that is not properly using OVERFLOW and UNDERFLOW
definitions (see below).

On Wed, Feb 28, 2018 at 10:26:15AM +0100, Aurelien Jarno wrote:
> On 2018-02-28 10:03, Andreas Tille wrote:
> > Control: tags -1 help
> > 
> > Hi Aurelien,
> > 
> > On Sat, Feb 24, 2018 at 05:52:42PM +0100, Aurelien Jarno wrote:
> > > | src/util.cpp: In static member function 'static double wb::Util::lBinoProb(int, int, double)':
> > > | src/util.cpp:109:36: error: 'UNDERFLOW' was not declared in this scope
> > > |                  if (runningtotal < UNDERFLOW)
> > > |                                     ^~~~~~~~~
> > > | src/util.cpp:109:36: note: suggested alternative: 'EOVERFLOW'
> > > |                  if (runningtotal < UNDERFLOW)
> > > |                                     ^~~~~~~~~
> > > |                                     EOVERFLOW
> > > | src/util.cpp:118:36: error: 'OVERFLOW' was not declared in this scope
> > > |                  if (runningtotal > OVERFLOW)
> > > |                                     ^~~~~~~~
> > > | src/util.cpp:118:36: note: suggested alternative: 'EOVERFLOW'
> > > |                  if (runningtotal > OVERFLOW)
> > > |                                     ^~~~~~~~
> > > |                                     EOVERFLOW
> > > | src/util.cpp:130:36: error: 'UNDERFLOW' was not declared in this scope
> > > |                  if (runningtotal < UNDERFLOW)
> > > |                                     ^~~~~~~~~
> > > | src/util.cpp:130:36: note: suggested alternative: 'EOVERFLOW'
> > > |                  if (runningtotal < UNDERFLOW)
> > > |                                     ^~~~~~~~~
> > > |                                     EOVERFLOW
> > > | src/util.cpp:139:36: error: 'OVERFLOW' was not declared in this scope
> > > |                  if (runningtotal > OVERFLOW)
> > > |                                     ^~~~~~~~
> > > | src/util.cpp:139:36: note: suggested alternative: 'EOVERFLOW'
> > > |                  if (runningtotal > OVERFLOW)
> > > |                                     ^~~~~~~~
> > > |                                     EOVERFLOW
> > > ...
> > > Starting with glibc 2.27, support for SVID error handling has been
> > > removed, including the corresponding constants. This causes this
> > > package to FTBFS.
> > 
> > While there is some suggested alternative I need to admit that I need
> > more precise advise which I also did not found in a web search (probably
> > its me to seek for the wrong keywords).  Can you give an example for a
> > correct replacement of 
> > 
> >    if (runningtotal < UNDERFLOW)
> > 
> > and 
> > 
> >    if (runningtotal > OVERFLOW)
> 
> It's difficult to say as the existing code makes *no sense*. Those are
> integer constants which are supposed to be used in struct exception,
> which is then passed to the matherr() function. In the glibc case they
> happen to have a value of 3 for OVERFLOW and 4 for UNDERFLOW, but that
> might differ on other systems. In any case they are not supposed to be
> used in a comparison with floating point values.

Are you able to specify what exactly was intended to be defined as
UNDERFLOW and OVERFLOW - probably some small double value as UNDERFLOW
and some high double value as OVERFLOW.  But which one?

Thanks for any hint

      Andreas.

-- 
http://fam-tille.de



More information about the Debian-med-packaging mailing list