Release 0.10 - Known Problems

The following is collected email of reported problems with release 0.10 of the Mercury distribution. Included, where possible, are patches or work-arounds. There is also a Mercury bugs page on SourceForge.

In addition to the bugs mentioned here, some bugs related to the implementation of particular languages features (nested modules, tabling) are also mentioned in the language reference manual, and some problems related to using Mercury on specific operating systems are described in the README.* files in the distribution. See also the LIMITATIONS file.

Note: please do not be alarmed by the fact that this software has some bugs. ALL useful software has bugs. During the development of the Mercury implementation we have found bugs in gcc, as, ld, the dynamic loader, and even the OS kernel. We hope that by listing the known outstanding bugs here we are doing our users a service. It would be disappointing if anyone were to infer the wrong thing from it.

Subject: GCC internal error
Date: Tue, 26 June 2001

random.c: In function `random_module6':
random.c:412: fixed or forbidden register 3 (bx) was spilled for class
This may be due to a compiler bug or to impossible asm
statements or clauses.

This problem occurs with several different combinations of GCC version and C source file.

This seems to be a bug in GCC's handling of global register variables. The GCC maintainers have shown no interest in fixing it. They appear to consider global register variables to be a deprecated feature, even though it isn't documented as such in the GCC manual.

If this problem occurs when compiling the source distribution, install from the binary distribution instead.

If a similar problem occurs when compiling your program, there are a few possible work-arounds: