PPL Bugs Archive
This is an archive of the bugs discovered for various versions of the PPL.
Known Bugs in PPL 0.11
February 10, 2011 : Fixed a bug in the input method for checked integers whereby, under specific conditions, the input stream state bits were not updated. The bug was only affecting builds using checked integer coefficients. Relevant commit is d0f6bd037c90676130e9547e5ed909cf6ba8eee9 .
February 5, 2011
: Fixed a bug in the OCaml interface, which was affecting functions
ppl_Pointset_Powerset_<INSTANCE>_get_disjunct
. Relevant commit
is
c23ded5ce0023a753fdd5da2dbbd99d1a084566c .
February 5, 2011
: Corrected a couple of resource (re-)allocation problems that, under
specific conditions, could affect the correctness of Grid
constructor Grid::Grid(const Box<Interval>& box)
and
NNC_Polyhedron method Polyhedron::generalized_affine_image()
.
Relevant commits are
a01fecf4cde756aaefe88b8f309f9bdf3e07b670
and
bf1edca5e0ddb03674a35218dccce6bc421469e2 .
February 4, 2011
: Corrected a problem in the simplification of PIP_Problem
solution
trees whereby, under specific conditions, the node merging process
produced decision nodes that did not satisfy their class invariant.
Relevant commit is
caaa126b56ccb07884217b33b6cc8c1f79e7f6ca .
October 19, 2010
: Fixed a precision bug in method
Octagonal_Shape<T>::affine_image()
whereby in the case of an
invertible affine transformation implementing a variable sign
symmetry (and optional translation), the computed result was correct
but unnecessarily imprecise. Relevant commit is
5c95fc0eab6a38442751ed16c6cfa9d538917f3f .
October 16, 2010
: Fixed a bug whereby the argument of all the methods
unconstrain(Variable var)
was not checked correctly for space
dimension compatibility. Relevant commit is
ff5b0796773b34ef9d1e26d2a40b4fdb8376dc8f .
September 16, 2010
: Corrected an efficiency bug in the C language interface function
ppl_Linear_Expression_add_to_coefficient()
. Relevant commit is
ba9f6c92b49afbbfc37d864f59fff70df90f6536 .
September 7, 2010
: Fixed a bug affecting constructor
Interval::Interval(const char* s)
whereby a wrong interval would
be constructed if the string argument denotes a number that can only
be represented as an infinity. Relevant commit is
3e2fe287b4efd3b58127951793cc00ffe0ca21c0 .
August 29, 2010
: Fixed a bug affecting the input routine of ppl_lpsol
, whereby the
inhomogeneous term of the objective function was disregarded. The
bug could only affect the optimized value of the objective function,
while having no effect onthe problem’s optimization state. Relevant
commit is
c82a27391846139072cadf0754f59f4805f4f99b .
August 13, 2010
: Fixed a bug affecting methods
Box::CC76_widening_assign(const T&, Iterator, Iterator)
and
Interval::CC76_widening_assign(const From&, Iterator, Iterator)
whereby a lower bound would not be computed correctly when the two
iterators specify an empty list of stop points. Relevant commit is
535657baab7b4f5e6d884a7fcdc2138b1ea0797c .
Known Bugs in PPL 0.10.2
January 9, 2010
: Modified ppl_lpsol
test files ex1.mps
and unboundedmin.mps
so
as to explicitly flag problem variables to be integer ones. This
change allows to obtain a stable output for the two tests across
different versions of glpk
. The problem was caused by a change of
behavior, first occurring in glpk-4.38
, in the MPS file parsing
routines. For more details, see the mailing list threads
[Bug-glpk] Variables erroneously read as
binary?
and [PPL-devel] [Fink-devel] ppl-0.10.2 check thorough test
fail .
The two relevant commits are
97ce932e012943328164d387cfe9a8d2196ca171
and
56ee86b9ccf001c8dc2ab1558332e9691b2eff3f .
August 15, 2009
: Fixed a bug whereby maximize
and minimize
optimization methods
of the class template Pointset_Powerset
were returning the Boolean
value true
(indicating a successful optimization) even when the
pointset powerset was empty, thereby contradicting their
specification. Relevant commit is
b52a2d273f4f96eec4a2ac5bb453756906e52a88 .
August 7, 2009
: Fixed a bug whereby method
NNC_Polyhedron::poly_hull_assign_if_exact(const NNC_Polyhedron&)
was sometimes working incorrectly, flagging some inexact hull
computations as exact. The bug was only affecting the domain of NNC
polyhedra and domains based on it (e.g., finite powersets of NNC
polyhedra). Relevant commit is
325ba80abd8c06c5dd740d35064302bbe65e251b .
Known Bugs in PPL 0.10.1
April 16, 2009
: Fixed a bug whereby make -n
(possibly followed by one or more make
targets) was not working as expected. Relevant commits are
d5c7c849dc491e2057c5da89b777ab61377df240
and
196f2de7fe79d67450109628d144b9b8f4ec2e3e .
April 15, 2009
: Fixed a bug in the Libtool version information for the C language
interface library, which caused the libppl_c
library to be
installed with a wrong soname
(18ff016b92d1564dc761a0a1dcc528d8c2c4915b ).
April 15, 2009
: Modified the configuration script so as to correctly detect version
4.3.0 of GMP
(5596eca02f2dea09e57ea22a240c2f3eab8be9e5 ).
Note: strictly speaking, this is not a PPL bug, since GMP 4.3.0
(released a few hours after the release of PPL 0.10.1) includes a
backward-incompatible change to variable gmp_version
.
Known Bugs in PPL 0.10
March 26, 2009 : Fixed several bugs in the OCaml interface code that were reported by Kenneth MacKenzie (thanks!). Corrections include: - garbage collection issues (778dfb88238cb7f66cb638d9af2411cd88aa0038 ); - proper handling of unit values (8bd3d1d46d8b44f57d29b39912c3802968856596 ); - proper handling of tokens in widening functions (aadc083b812f6bc477ad2c4bd08155f04992d310 ).
March 24, 2009
: Found a bug affecting the method
Octagonal_Shape<T>::affine_image(var, expr)
whereby a wrong
result can be computed, under specific conditions, if expr
has the
form var + n
. The bug has been corrected in the git master branch
(d81e9642493f53fa6456d19e4ba3107bcfdf42a8 ).
March 22, 2009 : Found a bug affecting the Java, OCaml and Prolog language interfaces whereby the method/function/predicate for dropping a disjunct from a Pointset_Powerset object were returning an invalid iterator. The bug has been corrected in the git master branch (6a6734db48e2ca605dfc27ce5f1a923eb867ed25 ).
February 3, 2009
: Found a bug affecting PPL 0.10 and the CVS head version on all big-endian architectures. The bug has already been corrected (though not yet in an optimal way) in the CVS head version. A patch for PPL 0.10 is also available. If for some reason you cannot patch the sources, another workaround is to configure the library, on big-endian architectures only, specifying
CPPFLAGS="-UWORDS_BIGENDIAN -DPPL_WORDS_BIGENDIAN=1"
at the end of the configure command, and then use these flags to
compile C++ application code that includes `ppl.hh` (no further
precaution is needed for applications using any other interface).
February 2, 2009
: Found a bug affecting method
Polyhedron::simplify_using_context_assign
and methods for adding
generators to a polyhedron whereby, under rather specific condition,
an assertion fails when working with empty polyhedra in a
zero-dimension vector space. The bug has already been corrected in
the CVS head version.
November 24, 2008
: Found a bug in a private method that affects the public methods
Grid::bounds_from_above(), Grid::bounds_from_below(), Grid::bounds_from_maximize(), Grid::bounds_from_minimize()
causing all of them to wrongly return true in certain cases where
the grid generators were up-to-date but not minimized. The bug has
already been corrected in the CVS head version.
November 20, 2008
: Found a bug in method
Partially_Reduced_Product<D1, D2, R>::time_elapse_assign(y)
whereby, if the product y was not already reduced, the operation
could lose precision. The bug has already been corrected in the CVS
head version. A simple workaround is also available: it is
sufficient to perform any check such as emptiness just before
calling the method.
Found a bug in the OCaml interface code for functions
` ppl_Grid_generalized_affine_image_with_congruence ` and
` ppl_Grid_generalized_affine_preimage_with_congruence `. The bug
has already been corrected in the CVS head version.
November 18, 2008
: Found a bug in method Polyhedron::contains_integer_point()
whereby, under very specific conditions, an empty polyhedron is
incorrectly said to contain an integer point. The bug has already
been corrected in the CVS head version. A simple workaround is also
available: it is sufficient to perform an emptiness check just
before calling the method above.
Known Bugs in PPL 0.9
December 3, 2007 : Found a bug in an internal method handling the insertion of a constraint or generator in the corresponding system. The bug only occurs under very specific conditions: in particular, when a not necessarily closed constraint/generator is inserted in an empty system having a higher space dimension. The bug has already been corrected in the CVS head version.
October 10, 2007
: Found a bug in methods Grid::constraints()
and
Grid::minimized_constraints()
that caused an internal assertion
to fail when the grid had space dimension 0. The bug, which can only
be observed if the library is configured with assertions checking
enabled, has already been corrected in the CVS head version.
September 30, 2007
: Found bugs that prevent building the library on systems not
supported by the Parma Watchdog Library or when the library is
configured by using the --disable-watchdog
option. The bugs have
already been corrected in the CVS head version.
Known Bugs in PPL 0.8
February 27, 2006 : Found a bug in an internal method that, under some circumstances, could cause a computation on polyhedra to yield a wrong result. The bug has already been corrected in the CVS head version.
January 27, 2006 : Found a bug in the SICStus Prolog interface whereby the library could not be built on x86_64 architectures. The bug has already been corrected in the CVS head version.
Known Bugs in PPL 0.7
October 04, 2005
: Found a bug in method
void Polyhedra_Powerset<PH>::concatenate_assign(const Polyhedra_Powerset& y)
that could result in the generation of invalid powersets. The bug
has already been corrected in the CVS head version.
July 04, 2005
: Found a bug in methods void Polyhedron::generalized_affine_image
that could manifest as an assertion violation when the polyhedron
was represented by an inconsistent constraint system. The bug has
already been corrected in the CVS head version.
February 11, 2005 : Found a bug that could manifest itself when the constraint system of some polyhedron is copied and then new constraints are inserted into the copy. The bug has already been corrected in the CVS head version.
January 13, 2005 : Found a bug whereby the occurrence of an `out of memory’ error during the allocation of a row of integer coefficients could have resulted in a memory leak. The bug has already been corrected in the CVS head version.
January 10, 2005
: Found a bug in the specialized constructors
Polyhedra_Powerset<NNC_Polyhedron>(const Polyhedra_Powerset<C_Polyhedron>&)
and
Polyhedra_Powerset<C_Polyhedron>(const Polyhedra_Powerset<C_Polyhedron>&)
whereby the newly built Polyhedra_Powerset object could have been
flagged as non-redundant even though it was containing redundant
disjuncts. Found a similar bug in generic constructor
Polyhedra_Powerset(const Constraint_System& cs)
that manifests
when cs
is denoting an empty polyhedron. The bugs have already
been corrected in the CVS head version.
Known Bugs in PPL 0.6.1
September 8, 2004
: Found (thanks to Sriram Sankaranarayanan) a bug in a private method
of class GenSys
that was affecting the widening method
void Polyhedron::H79_widening_assign(const Polyhedron& y, unsigned* tp = 0)
as well as all the limited and bounded extrapolation methods for
polyhedra. The bug has already been corrected in the CVS head
version. A patch for PPL 0.6.1 is
also available.
September 15, 2004
: Corrected a bug that was affecting the methods
bool Polyhedra_PowerSet::geometrically_covers(const Polyhedra_PowerSet&) const
and
bool Polyhedra_PowerSet::geometrically_equals(const Polyhedra_PowerSet&) const
.
The bug has already been corrected in the CVS head version. A patch
for PPL 0.6.1 is also available.
November 6, 2004
: Fixed a bug in
template <typename Partial_Function> void Polyhedron::map_space_dimensions(const Partial_Function& pfunc)
.
that could manifest itself when used with a partial function
encoding permutation. The bug has already been corrected in the CVS
head version.
November 8, 2004
: Corrected a bug that was affecting method
bool Polyhedron::is_universe() const
. The bug has already been
corrected in the CVS head version.
Known Bugs in PPL 0.5
August 20, 2003
: Found (thanks to Axel Simon) a bug in the C interface function
int ppl_Polyhedron_map_dimensions(ppl_Polyhedron_t ph, ppl_dimension_type maps[], size_t n)
whereby ph
was assigned a wrong result. The bug has already been
corrected in the CVS head version. A patch for PPL
0.5 is also available.
Known Bugs in PPL 0.4.2
October 24, 2002
: Found a bug in function
LinExpression& operator-=(LinExpression&, const LinExpression&)
whereby a wrong result was produced under some circumstances. The
bug has already been corrected in the CVS head version. A patch for
PPL 0.4.2 is also available.
December 5, 2002
: Found a bug in method Polyhedron::minimized_constraints()
that,
under some circumstances, could cause a wrong result or a program
crash. The bug has already been corrected in the CVS head version.
Known Bugs in PPL 0.4.1
October 2, 2002
: Found a bug in methods
const ConSys& Polyhedron::minimized_constraints() const
and
const GenSys& Polyhedron::minimized_generators() const
whereby a
library invariant was violated when *this
was the zero-dimension
space universe NNC polyhedron. The bug has already been corrected in
the CVS head version.
September 27, 2002
: Found a bug in method
Polyhedron::affine_image(const Variable& v, const LinExpression& expr, const Integer& d)
whereby a wrong result was obtained when `d’ was a negative
Integer. The same bug was also affecting method
Polyhedron::affine_preimage()
. The bug has already been
corrected in the CVS head version.
September 23, 2002
: Found a bug in a private method used to implement the public method
Poly_Gen_Relation Polyhedron::relation_with(const Generator& g) const
whereby a wrong result was obtained when `g’ was a line. The bug
has already been corrected in the CVS head version.
September 10, 2002
: Found a bug in method
bool Polyhedron::operator<=(const Polyhedron&) const
whereby the
lines of the polyhedron were handled improperly. The bug has already
been corrected in the CVS head version.
August 12, 2002
: Found a bug in method
Polyhedron::add_generator(const Generator&)
whereby we were not
adding the corresponding closure point when adding a point to an
empty NNC polyhedron. The bug has already been corrected in the CVS
head version.
August 12, 2002
: Found a bug in method GenSys::insert(const Generator&)
whereby
the insertion of a generator into an empty generator system might be
mishandled. The bug has already been corrected in the CVS head
version.
Known Bugs in PPL 0.4
July 10, 2002
: Found a bug in method
Polyhedron::poly_difference_assign(const Polyhedron& y)
whereby
a wrong result may be obtained when the constraint system defining
polyhedron y
contains some equality constraints. The bug has been
fixed in PPL 0.4.1.
July 10, 2002
: Found a bug in method
Polyhedron& Polyhedron::operator=(const Polyhedron& y)
whereby
one of the implementation invariants is not enforced after the
assignment of an empty polyhedron to a Polyhedron object. This bug
should not affect common computations: it is only visible when the
library has been built with the configuration option
--enable-assertions
, which causes the automatic invocation of the
method bool Polyhedron::OK(bool check_not_empty = false) const
(or, by explicitly invoking this invariant checking method in the
appropriate context). The bug has been fixed in PPL 0.4.1.