Skip to content

user troubleshooting

Stefan Vigerske edited this page Feb 24, 2019 · 1 revision

The very first thing to do is have a look at the current issues page and see if your problem is known and if workarounds are posted there.

The next is a plea to be considerate: The project managers for the packages provided on COIN-OR try to make the usage of their code easy and will try to help in case you run into problems. However, before contacting the project manager (via the project's mailing list or by submitting a trouble ticket), please make sure you carefully read and followed the instructions given on the project's home page and on these wiki pages for BuildTools.

Problems During Downloading

Using the correct version of subversion

If you want to use subversion from the command line (with the svn program), you need to make sure that you have a version of svn that is able to use the SSL layer, i.e., that it is able to connect to https://... URLs. You can find out if your version of svn supports this by typing svn --version. If it says "handles 'https' scheme," you are fine. Otherwise, you need to obtain a different version, or compile the svn executable yourself. In that case, make sure you specify --with-ssl when you run configure for subversion. For information on how to obtain subversion, click here. Note: We are successfully using subversion version 1.3.1 and higher to download the code; older versions might not work properly.

For most of the COIN-OR projects, we use the externals feature of subversion, which allows us to get the correct version for all dependencies for each project. You might noticed that this slows the downloading down a bit; you just need to be patient ;)

Problems During Configuration

How to read the config.log file

If you run configure and it doesn't complete with "configuration of XXX successfull", something went wrong. There is no point in trying to do a make anyway, since the Makefiles will not have been created yet. Make sure you read the Preparing the compilation information provided in these wiki pages.

If you still run into trouble, the screen output or the output files config.log generated by configure might help. It is important to know that for a COIN-OR configuration usually several configure scripts are run recursively. Therefore, you should try to find out which configuration script was the one that failed. In the screen output, you find a line like "configure: configuring in Clp" just before a new configure script is started. To see some more detailed output than what you see on the screen, you should then look at the config.log file in the subdirectory that corresponds to the configure script that failed (which is Clp for the example output).

To locate the detailed error message in the config.log file, open it with an editor, go to the end of the file, and search backwards for

## ---------------- ##
## Cache variables. ##
## ---------------- ##

Immediately before this you see details about the failure. For example, you might see the following output:

configure:20593: checking whether symbol CPXgetstat is available with CPX
configure:20613: gcc -o conftest -O3 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit -Wparentheses -Wsequence-point -Wreturn-type -Wcast-qual -Wall     conftest.c -L/usr/local/cplex/cplex100/lib/x86_rhel4.0_3.4/static_pic/ -lcplex -lm >&5
/usr/local/cplex/cplex100/lib/x86_rhel4.0_3.4/static_pic//libcplex.a(par.o)(.text+0x1c6): In function `CPXPparfork':
: undefined reference to `pthread_create'
/usr/local/cplex/cplex100/lib/x86_rhel4.0_3.4/static_pic//libcplex.a(par.o)(.text+0x232): In function `CPXPparfork':
: undefined reference to `pthread_join'
/usr/local/cplex/cplex100/lib/x86_rhel4.0_3.4/static_pic//libcplex.a(par.o)(.text+0x4a3): In function `CPXPblocksigint':
: undefined reference to `pthread_sigmask'
collect2: ld returned 1 exit status
configure:20619: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "Osi"
| #define PACKAGE_TARNAME "osi"
| #define PACKAGE_VERSION "0.1"
| #define PACKAGE_STRING "Osi 0.1"
|
| [ MORE STUFF ] 
|
| /* end confdefs.h.  */
| void CPXgetstat();
| int
| main ()
| {
| CPXgetstat()
|   ;
|   return 0;
| }
configure:20640: result: no
configure:20642: error: Cannot find symbol CPXgetstat with CPX

## ---------------- ##
## Cache variables. ##
## ---------------- ##

This shows you that the error occurred during test of the library libcplex.a. The problem here is that the symbols "pthread_create" etc. cannot be resolved. In this example it means that you also have to provide the pthread library (-lpthread) and -lm in your flags for linking with the Cplex library (--with-cplex-lib). As you see, the output also contains the source code for the test program, as well as the detailed compiler command, so that you can try to tracy down the problem separate from the configuration script.

In case you are not able to resolve the problem on your own and want to ask for help, you should submit a ticket at the Trac home page for the COIN-OR project that doesn't configure properly. To submit a ticket, you click on the "New Ticket" tab at the top of the project's page and fill out the information (after you registered and logged into the Trac system). It might be a good idea to attach the config.log file that represents your failed configuration run. (Please don't copy any output or file content into the description box, since that will be unreadable. Please use the "Add Attachment" button to attach a file). You should provide your email address in the first box of the page that comes up, so that you will be notified of changes to the ticket, and so that someone might be able to contact you in case more information is required.

Be aware of environment variables

Note that the configure script also looks at certain environment variables to determine values. For example, all the variables listed as variable arguments for configure, such as compiler names and options, are picked up by the configure script. Also, some COIN-OR specific options, such as ---with-library-lib can be replaced by environment variables; for example, CPXINCDIR might be defined in your environment from an earlier version of COIN-OR, and it is understood now as the argument of --with-cplex-lib.

Disabling the use of pkg-config

On CYGWIN, if you have a non-CYGWIN version of pkg-config in your path, especially if it is installed in a location with spaces in the path, this can cause some output that may look problematic, though configuration still goes through and the build should work. In this case, it is recommended that you disable the use of pkg-config by specifying the option

--disable-pkg-config

to configure. Note that pkg-config configuration files (pkg.pc) are still created and are also used by configure. The --disable-pkg-config option just switches from the use of pkg-config to a shell-scripting based parsing of COIN-OR's pkg.pc files.

By disabling pkg-config, features like building a project against installed versions of other projects are not available anymore, however.

Problems During Compilation

Output of make

If you run make to compile the code, you will see a lot of output. Since many COIN-OR projects use the GNU autotools, the output might be somewhat complicated, but in principle you see every command that is executed. If the compilation fails, it might be a good idea to have a careful look at the error message and at the source file that could not be compiled. You might be able to resolve the problem by adapting the source code; in that case it would be nice if you could let the project manager know about your bug fix by submitting a ticket that includes the changes you made. If you are not able to resolve the problem on your own and want to ask for help, you can submit a ticket, and include the output of make and also the config.log file of the COIN-OR sub-project where the failure occurs. The config.log file includes information about your environment that might be helpful to track the problem.