Release 0.5 - Known Problems

The following is collected email of reported problems with release 0.5 of the Mercury distribution. Included, where possible, are patches.


Profiling doesn't work on SunOS 4.1.3, because the SunOS 4.1.3 linker doesn't allow shared library names containing periods, and the profiling version of the garbage collection library was named `gc.prof'. A source patch which fixes this problem by renaming the library `gc_prof' is available here. (Thanks to Dominique de Waleffe for reporting this problem.)


Profiling doesn't work on Linux, due to a portability bug in the Mercury profiler, which assumed that the `%p' printf format meant hexadecimal with no `0x' prefix. A work-around is to add the following line to the `mprof' script:

perl -pi -e 's/0x//g' Prof.CallPair Prof.Counts Prof.Decl


Profiling doesn't work on Solaris. Fix available on request.


The `--debug' option to `msl' doesn't work. This is because it is looking for `portray.ql', which was not installed. The work-around if you have the source distribution is to manually copy the file `portray.ql' from the library directory to /usr/local/mercury-0.5//lib/sicstus/; if you don't have the source distribution, you can use `msp' instead of `msl'.


The `mnc' and `msc' scripts don't work with /bin/sh on ULTRIX, since ULTRIX's /bin/sh doesn't support `unset'. Fix available on request.


The garbage collector doesn't work on Solaris 2.5.


Release 0.5.1 of the Mercury distribution

Release 0.5.1 is a bug-fix release; it does not add any new features. All the above bugs are fixed in release 0.5.1. There are a few bugs in 0.5 which have not been fixed in 0.5.1, mostly problems with the profiler. These bugs will all be fixed in the next release.

Determinism inference of non-exported predicates doesn't work. One work-around is to use explicit determinism declarations. A patch to fix this bug is available on request.

The profiler sometimes gets floating point exceptions on Linux (and probably some other platforms). A patch which fixes this problem is available on request.

On Solaris (and probably some other platforms) programs compiled with profiling enabled will occasionally die with an uncaught SIGPROF -- you may get the message "Profiling timer expired". A patch which fixes that is available on request.

On Alpha/OSF versions 3.0 to 3.2B, there is a loader bug that sometimes causes a segmentation violation while loading in the shared libraries, due to the loader not handling long library path names correctly. So far, we have only observed this for Mercury programs when compiling with profiling enabled. There are several known work-arounds. One is to get a patched version of /sbin/loader from DEC. (For a V3.2 system, you will want "Patch ID: OSF320-227" or newer.) Another work-around is to link statically.

On some systems, some programs get a segmentation fault at program exit. This problem occurs only in rare circumstances. It has been observed on Linux for programs which use the C interface. A patch is available on request, and there is also a simple work-around which we can explain on request.