Closed edcote closed 3 years ago
Likely cause is my lingeling version is out of date.
static const char lglfloorldtab[256] =
{
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
LT(4), LT(5), LT(5), LT(6), LT(6), LT(6), LT(6),
LT(7), LT(7), LT(7), LT(7), LT(7), LT(7), LT(7), LT(7)
};
I picked up the version in contrib/setup_lingeling.sh. That may need to be updated. Will look tomorrow.
The issue is
ldoldhcount = lglfloorld (oldhcount); // input 0 returns -1 cast to unsigned char is 255
assert (ldoldhcount < 31); // fails this if assertions as enabled
ldnewhcount = ldoldhcount + 1;
if (ldnewhcount > 30) lgldie (lgl, "watcher stack overflow"); // this assertion also fails.
Just as reference for future such issues. If it had been an issue with Lingeling then having a Lingeling API call trace would have helped. This can be generated by setting the environment variable 'LGLAPITRACE' to point to a file where the traces is saved. One might need to avoid generating multiple Lingeling instances though (by for instance disable certain preprocessing options).
EDIT: Different assertion hit when NDEBUG removed. Still suspect its something at the interface of Pyboolector and Boolector.
Could anyone help shed some light on the following assertion failure in lingeling?
Quite likely this is a build environment problem on my end. Unfortunately, I am not all that familiar with Python extensions, booletor, or lingeling.
My assumption is some structure is not being passed properly between Python and boolector.
Anyone have any clue on where/how I should start looking?