Issue681

Title compilation issue with LP code: "isnan"
Priority bug Status resolved
Superseder Nosy List florian, jendrik, malte
Assigned To Keywords
Optional summary
still to do:

- ~~Allow enabling the workaround with an environment variable.~~
- ~~Update documentation to mention the workaround.~~
- ~~Test if compilation issue goes away with more recent OSI versions.~~
- ~~Update LPBuildInstructions wiki page.~~

Created on 2016-10-14.12:02:07 by malte, last changed by florian.

Summary
still to do:

- Allow enabling the workaround with an environment variable.
- Update documentation to mention the workaround.
- Test if compilation issue goes away with more recent OSI versions.
- Update LPBuildInstructions wiki page.
Files
File name Uploaded Type Edit Remove
cmake.patch florian, 2016-10-14.12:08:48 text/x-patch
Messages
msg6367 (view) Author: florian Date: 2017-05-08.18:33:37
I removed the workaround and the buildbot is happy with it.
msg6363 (view) Author: malte Date: 2017-05-08.16:38:21
Whatever you prefer.
msg6361 (view) Author: florian Date: 2017-05-08.15:57:38
Yes, I can remove it. Should I open a new issue for this, reopen the branch, or
do the change in the default branch?
msg6340 (view) Author: malte Date: 2017-05-06.14:16:21
OK, I think roughly 5 months could be enough. Should we complete this now (i.e.,
get rid of the workaround)?
msg5833 (view) Author: malte Date: 2016-11-29.13:59:35
Either that or open a new one. As you prefer.
msg5832 (view) Author: florian Date: 2016-11-29.13:58:35
Fine with me. Should we leave this issue open until then?
msg5830 (view) Author: malte Date: 2016-11-29.13:55:57
As it doesn't do a lot of harm, I suggest keeping it in for a while an perhaps
getting rid of it when more people have had an opportunity to upgrade. Perhaps
get rid of it in a few months? I can set a reminder if you want.
msg5829 (view) Author: florian Date: 2016-11-29.13:54:43
The build instructions now recommend the new OSI version. Should we keep the
workaround?
msg5735 (view) Author: malte Date: 2016-10-14.14:16:18
I've updated the documentation (accidentally using the wrong account after
updating Salome's email address in the wiki config, in case you're wondering
about the notification message you received).

So the remaining step is to see if the workaround is still necessary with newer
OSI versions. If not, we should recommend a newer version and update our
troubleshooting info to reflect that this is only an issue with old versions.

This is of course related to issue680.
msg5734 (view) Author: malte Date: 2016-10-14.14:04:51
The code change is merged. It works as expected on my computers, and the
buildbot likes it too. The environment variables is named
DOWNWARD_USE_ISNAN_WORKAROUND, and I need to set

export DOWNWARD_USE_ISNAN_WORKAROUND=1

on my two machines that are running Ubuntu 16.04, but not on the ones that are
running older versions of Ubuntu.
msg5733 (view) Author: malte Date: 2016-10-14.13:23:09
I updated the summary to mention that we also need to update the documentation.
I'm currently testing the patch on various computers.
msg5732 (view) Author: florian Date: 2016-10-14.12:08:48
The attached patch should introduce the CMake variable (needs some renaming).
msg5731 (view) Author: malte Date: 2016-10-14.12:02:07
The OSI version we currently recommend in our build instructions (0.103.0) does
not work correctly with certain versions of GCC, such as the version of gcc 5.4
currently included in Ubuntu 16.04. Compilation fails with an error message that
is related to the visibility of the standard library function "isnan". It looks
like OSI seems to expect the function to be available as "isnan", but gcc 5.4
requires "std::isnan". This problem only occurs with a build using LP solvers.

We came up with a workaround, but this workaround breaks other version of gcc,
and it even breaks them in non-LP builds. The workaround is integrated in the
code (see lp/lp_internals.h), but because it breaks many setups, it must be
enabled manually by setting a preprocessor variable. Here is one way to do this:

(a) Add the following line to "build_configs.py" to define a new build
"release32_test":

release32_test = ["-DCMAKE_BUILD_TYPE=Release", "-DCMAKE_CXX_FLAGS='-m32
-DDOWNWARD_USE_GCC_5_4_OSI_WORKAROUND'"]

(b) Compile this new build with:

./build.py release32_test

(c) Use this new build with:

./fast-downward.py --build=release32_test OTHER_OPTIONS

We hope that the problem will go away with a newer OSI version, but this still
needs further testing.

In the, we want to make using the workaround less painful by adding a way to
enable it with an environment variable.
History
Date User Action Args
2017-05-08 18:33:37floriansetstatus: chatting -> resolved
messages: + msg6367
summary: still to do: - ~~Allow enabling the workaround with an environment variable.~~ - ~~Update documentation to mention the workaround.~~ - Test if compilation issue goes away with more recent OSI versions. - ~~Update LPBuildInstructions wiki page.~~ -> still to do: - ~~Allow enabling the workaround with an environment variable.~~ - ~~Update documentation to mention the workaround.~~ - ~~Test if compilation issue goes away with more recent OSI versions.~~ - ~~Update LPBuildInstructions wiki page.~~
2017-05-08 16:38:21maltesetmessages: + msg6363
2017-05-08 15:57:38floriansetmessages: + msg6361
2017-05-06 14:16:21maltesetmessages: + msg6340
2016-11-29 13:59:35maltesetmessages: + msg5833
2016-11-29 13:58:35floriansetmessages: + msg5832
2016-11-29 13:55:57maltesetmessages: + msg5830
2016-11-29 13:54:43floriansetmessages: + msg5829
summary: still to do: - ~~Allow enabling the workaround with an environment variable.~~ - ~~Update documentation to mention the workaround.~~ - Test if compilation issue goes away with more recent OSI versions, then update LPBuildInstructions wiki page. -> still to do: - ~~Allow enabling the workaround with an environment variable.~~ - ~~Update documentation to mention the workaround.~~ - Test if compilation issue goes away with more recent OSI versions. - ~~Update LPBuildInstructions wiki page.~~
2016-11-29 13:47:54jendriksetnosy: + jendrik
summary: still to do: - ~~Allow enabling the workaround with an environment variable.~~ - ~~Update documentation to mention the workaround.~~ - Test if compilation issue goes away with more recent OSI versions, then update LPBuildInstructions wiki page. -> still to do: - ~~Allow enabling the workaround with an environment variable.~~ - ~~Update documentation to mention the workaround.~~ - Test if compilation issue goes away with more recent OSI versions, then update LPBuildInstructions wiki page.
2016-10-14 14:16:18maltesetmessages: + msg5735
summary: still to do: - ~~Allow enabling the workaround with an environment variable.~~ - Update documentation to mention the workaround. - Test if compilation issue goes away with more recent OSI versions. -> still to do: - ~~Allow enabling the workaround with an environment variable.~~ - ~~Update documentation to mention the workaround.~~ - Test if compilation issue goes away with more recent OSI versions, then update LPBuildInstructions wiki page.
2016-10-14 14:04:51maltesetmessages: + msg5734
summary: still to do: - Allow enabling the workaround with an environment variable. - Update documentation to mention the workaround. - Test if compilation issue goes away with more recent OSI versions. -> still to do: - ~~Allow enabling the workaround with an environment variable.~~ - Update documentation to mention the workaround. - Test if compilation issue goes away with more recent OSI versions.
2016-10-14 13:23:09maltesetmessages: + msg5733
summary: still to do: - Allow enabling the workaround with an environment variable. - Test if compilation issue goes away with more recent OSI versions. -> still to do: - Allow enabling the workaround with an environment variable. - Update documentation to mention the workaround. - Test if compilation issue goes away with more recent OSI versions.
2016-10-14 12:08:48floriansetfiles: + cmake.patch
nosy: + florian
status: unread -> chatting
messages: + msg5732
2016-10-14 12:02:07maltecreate