Troubleshooting

To report bugs or request help with problems in building or running BornAgain, please send us an e-mail or fill in a bug report at our forum. Provide all relevant information that may help us to analyse the issue. In particular, submit the full output of the last, unsuccessful command (screen copy, or redirection [command] >& [logfile]).

Some frequently occuring problems are described in the following sections:


Configuration (cmake) fails

To accelerate the build process, CMake maintains a cache. The downside is that this cache can cause false positives (erroneous error reports) and false negatives (CMake overlooking missing dependencies). Unless CMake has been run for the first the time in a fresh build directory, troubleshooting should start with removing the cache

$ rm CMakeCache.txt

and running CMake anew. If that does not help, then empty the build directory completely, and run CMake yet again.

Next, carefully read the error message, which will have the following form:

CMake Error at [cmake module]:[line number] (message):
  [specific error message]
Call Stack (most recent call first):
  [cmake module]:[line] ([command])
  ...
-- Configuring incomplete, errors occurred!
See also "[build_dir]/CMakeFiles/CMakeOutput.log".
See also "[build_dir]/CMakeFiles/CMakeError.log".

The most frequent error is a missing dependence because a third party library not installed on the system, or not found by CMake.

If you need our help, then please rerun CMake in an empty build directory and provide a full copy of its output, most easily generated by output redirection

$ cmake [<options>] <source_dir> >& my_cmake.log

Besides the so obtained my_cmake.log also send us three other log files produced by CMake in the build directory:

CMakeCache.txt
CMakeFiles/CMakeOutput.log
CMakeFiles/CMakeError.log

Qt5 configuration problems

On some Linux systems CMake configuration might fail while trying to locate Qt5 libraries with an error message similar to

-- Configuring BornAgain GUI
CMake Error at GUI/CMakeLists.txt:18 (find_package):
  By not providing "FindQt5Designer.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "Qt5Designer", but CMake did not find one.

The error message can also complain about "Qt5Widgets" instead of "Qt5Designer".

First, make sure that all Qt5 libraries are installed as required in installation section.

If this is the case, a first possible cause for this to happen, is that cmake cannot find the cmake config files for the required Qt5 modules, because it doesn't know the location. This can be fixed by adding the path to the Qt5 binaries to the PATH environment variable:

# Adding Qt5 binary path to PATH environment variable
$ export PATH=/<Qt5InstallDir>/Qt/<QtVersion>/gcc_64/bin:$PATH

Another cause is a miss-configuration in Qt5 as provided by your Linux's package manager. For example, Ubuntu 14.04.1 LTS is known to have this problem. The solution will be to install Qt5 via the online installer, as explained in our Qt5 alternative installation instruction.

If this still doesn't work, please send us an email with your cmake configuration log and your distro name.


Compilation (make) fails

In the case of a complex system setup, with libraries of different versions scattered across multiple places CMake might make an error in identifying the correct paths to the libraries or include directories. This might lead at some point to the compilation failure. This might happen, for example, during the compilation of BornAgain graphical user interface if the system has both Qt4 and Qt5 libraries installed. Please send us the build log generated by running the following make command

$ make VERBOSE=1 >& my_build.log

Functional test (ctest) fails

If ctest fails, then rerun it without the multi-core option -j[N]. This yields clearer, sorted output, and allows to rule out errors due to thread-safety violations.

Error messages from ctest have the form

The following tests FAILED:
    53 - CoreSuite/HexParaCrystal (Failed)
   123 - PySuite/HexParaCrystal (Failed)
For details, see the log files in Testing/Temporary/
More info at http://www.bornagainproject.org/documentation/troubleshooting#ctest
Errors while running CTest

To analyse these errors one by one, it is convenient to run ctest on a single test:

$ ctest -R PySuite/HexParaCrystal 

Then analyse the output in Testing/Temporary/LastTest.log. Alternatively, set the environment variable CTEST_OUTPUT_ON_FAILURE=1 to get full terminal output from failed tests. Yet another alternative would be to run the test binary directly from <build_dir>/bin.

Anyway, for reporting errors to us please run plain ctest without options -j or -R, and submit Testing/Temporary/LastTest.log.

Conflict with older version of BornAgain

A frequent cause for errors at this stage is a conflict with older versions of BornAgain installed on the system. Make sure LD_LIBRARY_PATH and PYTHONPATH variables do not contain older installation and run "ctest" again.


Simulation script fails

"Fatal Python error: PyThreadState_Get: no current thread"

This error shows up when a Python module tries to use a Python library that is different than the one the interpreter uses. This might happen if the user's system contains several  Python installations.

For example, BornAgain was compiled against /usr/lib64/libpython2.7.so and then used by mistake together with Python interpreter from another installation. This interpreter might depend on his own version of libpython2.7.so  located, for example, at /usr/local. Importing of bornagain module into this interpreter will cause the load of two different libpython2.7.so libraries: one library will be loaded by bornagain module, another library will be loaded by the interpreter itself. This will cause given fatal Python error. Make sure you are running correct Python interpreter and that your PYTHONPATH, DYLD_LIBRARY_PATH doesn't contain old BornAgain installation.

"incompatible library version of libgsl.0.dylib" [conflict with Mantid under MacOS]

In the case of Mantid installed on the system BornAgain might conflict with its libraries if path to the Mantid is specified in DYLD_LIBRARY_PATH and/or PYTHONPATH environment variables. The conflict can happen while running any of BornAgain Python examples or just during the import of BornAgain into Python  with the error message similar to:

$ python -c "import bornagain"

Incompatible library version: libBornAgainCore.so requires
version 18.0.0 or later, but libgsl.0.dylib provides version 16.0.0

Make sure that path to Mantid folders is not defined in your DYLD_LIBRARY_PATH and/or PYTHONPATH variables by running commands "echo $DYLD_LIBRARY_PATH" and "echo $PYTHONPATH". If this is the case, unset given variables to prevent MacOS loader from loading Mantid

$ unset DYLD_LIBRARY_PATH; unset $PYTHONPATH

This should resolve the issue.

Tip:
To see which libraries gets loaded by MacOS loader during the import of BornAgain use
$ export DYLD_PRINT_LIBRARIES=1
$ python -c "import bornagain"

Missing api-ms-win-crt-runtime-l1-1-0.dll

On some Windows machines, you might get the message "The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing from your computer. ...". You then have to install the Visual C++ Redistributable for Visual Studio 2015. See for example the discussion at: http://stackoverflow.com/questions/33265663/api-ms-win-crt-runtime-l1-1-0-dll-is-missing-when-open-office-file

Before installing the Visual C++ Redistributable, install all Windows updates. Then download and install the Visual C++ Redistributable from Microsoft:

https://www.microsoft.com/en-us/download/details.aspx?id=48145