Re: *** ECLiPSe fatal error: Fatal signal caught in emulator

From: Joachim Schimpf <j.schimpf_at_icparc.ic.ac.uk>
Date: Tue 11 Jun 2002 06:27:20 PM GMT
Message-ID: <3D064108.DA4311AE@icparc.ic.ac.uk>
Ulrich Scholz wrote:
> 
> [eclipse 2]: f('u_7_5', X), prove_formula(X).
> 
> *** ECLiPSe fatal error: Fatal signal caught in emulator


Dear Ulrich,

the problem is caused by a missing occurs check, which leads
to a cyclic structure, which eventually causes a stack overflow
within a recursion.

The reason the occurs check is missing is that the program uses
member/2 from the lists library. This library is already compiled
at the time the occur_check-flag gets switched on, and therefore
member/2 and others are already compiled without occurs checks.

You can fix it by compiling your own member/2 after switching
the flag on. I.e. add this at the beginning of start.pl:

:- set_flag(occur_check,on).
:- local member/2.	 % a member/2 with occurs check
member(X,[X]).
member(X,[_|Xs]) :- member(X,Xs).


Best regards,
-- 
 Joachim Schimpf              /             phone: +44 20 7594 8187
 IC-Parc, Imperial College   /            mailto:J.Schimpf@ic.ac.uk
 London SW7 2AZ, UK         /    http://www.icparc.ic.ac.uk/eclipse
Received on Tue Jun 11 19:27:21 2002

This archive was generated by hypermail 2.1.8 : Wed 16 Nov 2005 06:08:16 PM GMT GMT