# BEGIN LICENSE BLOCK
# Version: CMPL 1.1
#
# The contents of this file are subject to the Cisco-style Mozilla Public
# License Version 1.1 (the "License"); you may not use this file except
# in compliance with the License.  You may obtain a copy of the License
# at www.eclipse-clp.org/license.
# 
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See
# the License for the specific language governing rights and limitations
# under the License. 
# 
# The Original Code is  The ECLiPSe Constraint Logic Programming System. 
# The Initial Developer of the Original Code is  Cisco Systems, Inc. 
# Portions created by the Initial Developer are
# Copyright (C) 2006 Cisco Systems, Inc.  All Rights Reserved.
# 
# Contributor(s): 
# 
# END LICENSE BLOCK

*** ECLiPSe bugs file. Please read the instructions at the end of this file.
*** Leave the first template intact! Copy the next 13 lines and fill in:
---
Number:	
Name:	
Date:	
Topic:	
What:	

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number: 817	
Name:	Kish
Date:	3.7.98
Topic:	compiler
What:	generate incorrect code -- no indexing code generated


[eclipse 3]: 
        [user].
 foo("e") ?- !, true.
 foo("f") :- writeln(hi).
 user       compiled traceable 176 bytes in 0.00 seconds

yes.
[eclipse 4]: foo("f").
  (1) 0  CALL   foo("f") (dbg)?- creep
  (1) 0  FAIL   foo("f") (dbg)?- creep

no (more) solution.
[eclipse 5]: als foo.

foo/1 :
        Switch_on_typeAM                A1 
                        list            Fail 
                        structure       Fail 
                        string          2404(In_get_stringAM)
                        bignum          Fail 
                        double          Fail 
                        rational        Fail 
                        goal            Fail 
                        gconst          Fail 
                        []              Fail 
                        integer         Fail 
                        float           Fail 
                        atom            Fail 
                        db_reference    Fail 
                        meta            2436(Get_stringAM)
        Branch                          2436(Get_stringAM)
        In_get_stringAM                 A1 e
        Debug_call                      eclipse:true/0 L|CALL    
        JmpdP                           eclipse:true/0 

        Get_stringAM                    A1 f
        Put_atomAM                      A1 hi 
        Put_constantAM                  A2 atom const <2100bf60> 
        Debug_call                      eclipse:writeln/1 F|L|CALL    
        JmpdP                           eclipse:writeln/1 




Fix: set clds->nomatch to the argument type for matching clauses in 
     _analyse_clauses(), which then ensures that the try...trust
     sequence is generated.
Fixed after Release: 
Files modified: section.c
Name:	Kish
Date:	16 July 98

---
Number: 816	
Name:	Kish
Date:	3.7.98
Topic:	compiler
What:	reset after compiling:

[eclipse 1]: [user].
 foo(X) :- X.
 foo(X) :- Y.

  
*** syntax error: illegal goal: foo(X) :- Y
        before line 3 in the file user

Segmentation violation - possible reasons are:
- a faulty external C function
- certain operations on circular terms
- machine stack overflow
- an internal error in ECLiPSe
Aborting execution....

*** ECLiPSe fatal error: reset/0 called

--Problem occurs only if both clauses are compiled.

Fix: do not try to generate code when an illegal goal error occurs. 	
Fixed after Release: 
Files modified: section.c
Name:	Kish Shen
Date:	16 July 98

---
Number:	815
Name:	Pascal Brisset
Date:	14.11.97
Topic:	compiler
What:	Indexing causes failure when called with TMETA:
	[eclipse 2]: lib(fd),[user].
	 sum_equal_zero(0) :-  !.
	 sum_equal_zero(X+Y) :- sum_equal_zero(X), sum_equal_zero(Y).
	 user       compiled optimized 196 bytes in 0.00 seconds

	yes.
	[eclipse 4]: [X,Y] :: 0..10, sum_equal_zero(X+Y).

	no (more) solution.

Fix:	
Fixed after Release: 
Files modified: 
Name:	Fixed
Date:	

---
Number:	814
Name:	joachim
Date:	29.4.98
Topic:	command line
What:	Handling of arguments after -- is broken since 3.6.1:
	breeze: eclipse -e "writeln(hello)" -- x
	ECLiPSe Constraint Logic Programming System [sepia parallel mps]
	Version 3.7.1, Copyright ECRC GmbH and ICL/IC-Parc, Fri Mar 20 15:51 1998
	[eclipse 1]: argv(all,L).

	L = ["/usr/local/eclipse/3.7.1/bin/sparc_sunos5/eclipse.exec", "x", "writeln(hello)", "--", "x"]
	yes.

	[ -e not recognised because overwritten, and prolog shouldnt see
	  stuff before -- ]

Fix:	
Fixed after Release: 
Files modified: 
Name:	Fixed
Date:	

---
Number:	813
Name:	joachim
Date:	21.4.98
Topic:	macros
What:	when a clause macro transformation aborts (exit_block), this is
	caught in C, and possibly turned into success. However, the
	machine state is not adjusted, eg old return address are still
	around and returned to after the end of compilation.

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number:	812
Name:	bernhard@lucy.cs.waikato.ac.nz (Bernhard Pfahringer)
Date:	20.11.96
Topic:	lexer
What:	[eclipse 51]: open( "\"iris\" ", string,S),read_token(S,T1,C1).
	 T1 = end_of_file
	 C1 = end_of_file

Fix:	revised lexer
Fixed after Release: 3.5.2
Files modified: lex.c
Name:	joachim
Date:	2/97

---
Number:	811
Name:	pbrisset@eis.enac.dgac.fr
Date:	16.10.96
Topic:	fd
What:	there can be only 200 failed min_maxes in one session, then it stops
	to work. The lock array is not reset when min_max fails.

Fix:	replaced arrays with new heap term data type and handles
Fixed after Release: 3.5.2
Files modified: fd.pl
Name:	joachim
Date:	10.4.97

---
Number:	810
Name:	micha
Date:	30.9.96
Topic:	global references
What:	They are not stored properly in the saved state. The handling
	of erased references is not satisfactory (they are not released
	except when erasing the most recent reference).

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number:	809
Name:	schlenkh@informatik.uni-muenchen.de
Date:	6.8.96
Topic:	grace
What:	grace_label/1 does not work
	[missing value selection call]

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number:	808
Name:	markhof@ls12si.informatik.uni-dortmund.de
Date:	6.8.96
Topic:	fd
What:	[X,Y] :: 0..9, Z #>= X-Y, Z #>= Y-X.
	gets a 'floundered' message when traced

Fix:	
Fixed after Release: 
Files modified: 
Name:	Fixed
Date:	

---
Number:	807
Name:	bashford@ls12s.informatik.uni-dortmund.de
Date:	30.6.96
Topic:	fd
What:	::/3 should delay when it gets a free variable

Fix:	
Fixed after Release: 
Files modified: 
Name:	Fixed
Date:	

---
Number:	806
Name:	mgw@doc.ic.ac.uk
Date:	12.7.96
Topic:	fd
What:	 '#>'(X,0,1).	delays, doing nothing

Fix:	
Fixed after Release: 3.5.2
Files modified: fd_arith.pl
Name:	micha
Date:	18.7.96

---
Number:	805
Name:	beckmann@ls12sg.informatik.uni-dortmund.de
Date:	21.11.95
Topic:	compiler
What:	  g(A,B):- not(A==3),B=3.
	  g(A,B):- A==3,B=1.   
	uses Switch_on_typeAM and has Failure for meta and var types
	similarly for not(A==a)

Fix:	mask for ==/2
Fixed after Release: 3.5.2
Files modified: section.c
Name:	micha
Date:	10.7.96

---
Number:	804
Name:	stolzen@mailhost.uni-koblenz.de
Date:	12.12.95
Topic:	lib(scattered)
What:	compiling a file with :- lib(scattered) fails

Fix:	
Fixed after Release: 3.5.2
Files modified: scattered.pl
Name:	micha
Date:	8.7.96

---
Number:	803
Name:	joachim
Date:	14.2.96
Topic:	fd
What:	X #> y*Z.     % typo... it hangs

Fix:	
Fixed after Release: 3.5.2
Files modified: fd_arith.pl
Name:	micha
Date:	10.7.96

---
Number:	802
Name:	mg2@doc.ic.ac.uk
Date:	3.6.96
Topic:	compiler
What:	= [eclipse 23]: subcall((delay(X,X=Y),delay(Y,writeln(hello)),X=1),D).
	= 
	= Y = Y
	= X = 1
	= D = [1 = Y, writeln(hello)]
	(true/0 call optimized away in subcall/3)

Fix:	expanding untraced_call/2
Fixed after Release: 3.5.2
Files modified: procedure.c pass3.c
Name:	micha
Date:	8.7.96

---
Number:	801
Name:	micha
Date:	4.7.96
Topic:	modules
What:	lib/1 does compile the file even if the module already exists
	(i.e. it is different from use_module(library()), which is surprizing
	anyway). If the library happened to be already compiled with
	another pathname, it will be recompiled and all dynamic data
	will be lost. This causes a problem e.g. with the structures.pl
	library, i.e. meta, i.e. fd.

Fix:	
Fixed after Release: 3.5.2
Files modified: kernel.pl
Name:	micha
Date:	10.7.96

---
Number:	800
Name:	angelica@uran.informatik.uni-bonn.de
Date:	28.6.96 and earlier
Topic:	compiler
What:	The Gc_TestA instruction appears at the begginning of the clause code
	and can thus be ignored when an indexing instruction jumps
	directly into e.g. the read sequence.

Fix:	Gc_TestA is also generated at the beginning of the read sequence
	of the indexed argument
Fixed after Release: 3.5.2
Files modified: gencode.h head.c pass3.c
Name:	micha
Date:	8.7.96

---
Number:	799
Name:	wells@csd.abdn.ac.uk
Date:	27.5.96
Topic:	prune_instances
What:	Does not work with domains
	[it does not use the predicates defined in meta.pl!]

Fix:	
Fixed after Release: 3.5.2
Files modified: sorts.pl
Name:	micha
Date:	5.7.96

---
Number:	798
Name:	Jonathan Lever
Date:	7.2.96
Topic:	fd
What:	X::[1,3,5],Y::[1,3],dvar_domain(X, Xd), dvar_domain(Y, Yd),
	dom_difference(Xd, Yd, D, S).
	gives a wrong value for D

Fix:	missing dereference (?)
Fixed after Release: 3.5.2
Files modified: bip_domain.c
Name:	joachim
Date:	12.2.96

---
Number:	797
Name:	Robert Rodosek
Date:	2.2.96
Topic:	fd
What:	[V1,V2]::1..3, V1 + (2-0)*V2 #< 4. gives an extra solution

Fix:	missing cut
Fixed after Release: 3.5.2
Files modified: fd_arith.pl
Name:	joachim
Date:	12.2.96

---
Number:	796
Name:	cjh-a@minster.york.ac.uk
Date:	18.1.96
Topic:	profiler
What:	Does not work on SGI

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number:	795
Name:	Jean-Marc.Andreoli@xerox.fr
Date:	12.1.96
Topic:	delays
What:	[eclipse 1]: [user].
	?- meta_attribute(eclipse,[]).
	delay p(X) if var(X).
	p(a).
	bug :- p(X), X=a.
	% and calling bug fails.

Fix:	
Fixed after Release: 3.5.2
Files modified: meta.pl
Name:	micha
Date:	4.3.96

---
**********************************************************
 VERSION 3.5.2 INSTALLED 3.1.96
**********************************************************
---
Number:	794
Name:	stefan@uran.informatik.uni-bonn.de
Date:	12.12.95
Topic:	compiler
What:	arguments > 11 might get spurious modes
	see bug/794

Fix:	
Fixed after Release: 3.5.2
Files modified: dict.h
Name:	joachim
Date:	15.4.96

---
Number:	793
Name:	gupta@ie.utoronto.ca
Date:	4.11.95
Topic:	opium
What:	The goal sort([2,4,1], X) hangs in the autoload mutex

Fix:	
Fixed after Release: 
Files modified: 
Name:	Fixed
Date:	

---
Number:	792
Name:	stefan@uran.informatik.uni-bonn.de
Date:	9.11.95
Topic:	bignums/findall
What:	see test/Various_Progs/findall.pl

Fix:	arithmetic ops must export GB because they bind a variable
Fixed after Release: 3.5.1
Files modified: emu.c
Name:	micha
Date:	14.11.95

---
Number:	791
Name:	joachim
Date:	9.11.95
Topic:	fd
What:	dom_difference(dom([a,b,c],3),dom([b],1),D,S).
	does not work

Fix:	
Fixed after Release: 3.5.1
Files modified: bip_domain.c
Name:	micha
Date:	14.11.95

---
Number:	790
Name:	cjh-a@ugrad.cs.york.ac.uk, knapp@informatik.uni-muenchen.de
Date:	Tue, 7 Nov 1995 23:31:39 +0000
Topic:	Trouble with dfid library
What:	relevant flags are missing.
	see bug/790/*
	In addition, 
%wsepia
ECRC Common Logic Programming System [sepia development opium parallel]
Version 3.5 development, Copyright ECRC GmbH, Wed Aug  1 17:01 1990
[eclipse 1]: lib(dfid).

yes.
[eclipse 2]: trace.
Spurious interrupt in protected code!!!
Trying to abort...

Fix:	changed access to dfid variables and their initialisation, added tests
Fixed after Release: 3.5.1
Files modified: dfid.pl bip_array.c database.h emu_util.c st2.c
Name:	micha
Date:	8.11.95

---
Number:	789
Name:	micha
Date:	8.11.95
Topic:	arith on SGI
What:	2147483648 is -2147483648 // -1 causes a loop in
	Interrupt queue overflow - signal lost

Fix:	It seems that when the SGI compiles division, there is
	is a break instruction compiled in and the execution returns to it
	after the exit from the interrupt handler. I have aded SPURIOUS
	to the signal flags when the queue overflows, which enforces
	an abort. Also ignoring the tests that cause this signal.
Fixed after Release: 3.5.1
Files modified: emu_c_env.c
Name:	micha
Date:	8.11.95

---
Number:	788
Name:	Darko.Zupanic@ijs.si
Date:	Thu, 26 Oct 1995 10:08:15
Topic:	fd
What:	see bug/788

Fix:	two fixes in fd_arith macro expansions
Fixed after Release: 3.5.1
Files modified: fd_arith.pl
Name:	micha
Date:	30.10.95

---
Number:	787
Name:	Andrea.Schaerf@cwi.nl
Date:	Mon, 23 Oct 1995 11:59:45 GMT
Topic:	rational solver: rmin(0) fails.
What:	
	> [eclipse 1]: lib(r), rmin(0).
	> 
	> no (more) solution.
Fix:	
Fixed after Release: 
Files modified: 
Name:	this package is no longer supported
Date:	

---
Number: 786
Name:   lll
Date:   23.10.95
Topic:  current prerelease fails the s&m application
What:
	while the 3.5.1 gives the following results.
	peclipse
	ECRC Common Logic Programming System [sepia opium megalog parallel]
	Version 3.5.1, Copyright ECRC GmbH, Mon Mar  6 17:43 1995
	[eclipse 1]: ['~sepia/workdir/sepia/test/Parallel/sandm/hydro20_1'].
	[eclipse 2]: ['~sepia/workdir/sepia/test/Parallel/sandm/viol20_bourob'].
	[eclipse 3]: relocation_parIS.
	Mon Oct 23 08:59:48 1995
	Relocation_1_subst
	N. workers 1
	Start time   34.721Found a solution with cost 245
	Sostanza   [1]
	Violations non riducibili tramite la rilocazione[]
	Violations  riducibili tramite la rilocazione[(7, 65, 14003), (25, 23, 3042), (3
	6, 14, 23196), (48, 7, 18085)]
	       Stop time   52.3591
	Elapsed time 17.6382

	The following manual also exposes a similar phenomenon, but takes much
	longer time.

	:- ['~sepia/workdir/sepia/test/Parallel/sandm/hydro40_1'].
	:- ['~sepia/workdir/sepia/test/Parallel/sandm/viol40_bourob'].
	:- sit_relocation.

Fix:	fixed qeq
Fixed after Release: 3.5.1
Files modified: fd_arith.pl
Name:   micha
Date:	30.10.95

---
Number:	785
Name:	dahn@mathematik.hu-berlin.de (Bernd Ingo Dahn)
Date:	Wed, 20 Sep 1995 13:01:06 GMT	
Topic:	Listing Metaterms
What:	see bug/785

Fix:	
Fixed after Release: 
Files modified: 
Name:	This is the same as #672
Date:	

---
Number:	784
Name:	dahn@mathematik.hu-berlin.de (Bernd Ingo Dahn)
Date:	Fri, 15 Sep 1995 07:40:02 GMT
Topic:	Database access and large programs
What:	see bug/784

Fix:	
Fixed after Release: 
Files modified: 
Name:	This bug cannot be reproduced any longer, because of missing files.
Date:	

---
Number:	783
Name:	Renate Beckmann <beckman@ls12s.informatik.uni-dortmund.de>
Date:	Wed, 13 Sep 1995 12:21:12 GMT
Topic:	min_max/2
What:	
[eclipse 7]: [A,B]::1..10,min_max(indomain(A),3-A).
	    ...
	    Found a solution with cost -1
	    B = B{[1..10]}
	    A = 4

Fix:	bad stop condition for b&b
Fixed after Release: 3.5.1
Files modified: fd.pl
Name:	micha
Date:	20.10.95

---
Number:	782
Name:	Joachim Posegga
Date:	Fri, 11 Aug 1995 13:25:26 +0200 (MET DST)
Topic:	compiler
What:	see bug/782

Fix:	stack cannot be popped if next clause comes from a macro
Fixed after Release: 3.5.1
Files modified: procedure.c
Name:	micha
Date:	23.10.95

---
Number:	781
Name:	markhof@informatik.uni-dortmund.de
Date:	Thu, 28 Sep 1995 16:19:20 GMT
Topic:	Bug in use_module/1 and compile/1
What:	see bug/781
     first, there is a deadlock on the output stream in p_printf5 when
     case 'w' pwrite is switched to. This deadlock has been fixed for sequential
    eclipse by changing Lock_Stream/Unlock_Stream into a conditional one 
    (i.e. if (parallel_worker)).
     Then markhof code causes another looping in printing
     'calling an undefined predicate print_int/2', where print_int/2
     is an attribute operation function for print, and is indeed not defined.
     [see also 661]

Fix:	disabling 'm' and 'M' in error 68
Fixed after Release: 3.5.1
Files modified: events.pl
Name:	micha
Date:	31.10.95

---
Number:	 780
Name:	Darko.Zupanic@ijs.si
Date:	Wed, 27 Sep 1995 08:51:40 GMT
Topic:	ECLiPSe: cannot map new stack page: Not enough space, on HP
What:	see bug/780

Fix:	HP has apparently a limit on the number of mmapped areas, and thus
	it makes sens to allocate in bigger chunks
Fixed after Release: 3.5.1
Files modified: mem.c
Name:	kees
Date:	19.10.95

---
Number:	779
Name:	Darko.Zupanic@ijs.si
Date:	Wed, 27 Sep 1995 08:51:40 GMT
Topic:	round/2 on HP 
What:	
> Machine type:
> HP 714/80
> 
> Operating system name and version number:
> HP-UX 9.05
> ECRC Common Logic Programming System [sepia opium megalog]
> Version 3.5.1, Copyright ECRC GmbH, Mon Mar  6 17:43 1995
> [eclipse 1]: round(3.5,X).
> 
> X = -4.50359963e+15
> yes.
> 
Fix:	buggy rint on HP
Fixed after Release: 3.5.1
Files modified:  configure.in, bip_arith.c
Name:	lll
Date:	25.10.95

---
Number:	778
Name	pbrisset@eis.enac.dgac.fr		
Date:	Fri, 29 Sep 1995 08:28:38 GMT
Topic:	var_fd/2
What:	

> it seems that the predicate var_fd/2 is able to produce a finite domain
> variable with _one_ element. It is logically correct but it may delay
> some wakings.
> 
> ECRC Common Logic Programming System [sepia opium megalog]
> Version 3.5.1, Copyright ECRC GmbH, Mon Mar  6 17:43 1995
> [eclipse 1]:  lib(fd).
> yes.
> [eclipse 2]: integer_list_to_dom([10], D), var_fd(X, D).
> 
> X = X{[10]}
> D = [10]
>
Fix:	var_fd/2
Fixed after Release: 3.5.1
Files modified: fd_domain.pl
Name:	lll
Date:	18.10.95

---
Number: 777	
Name:	js10@doc.ic.ac.uk (Joachim Schimpf)
Date:	Thu, 12 Oct 1995 18:20:31 GMT
Topic:	Two problems with bignums.
What:	
> Someone here told me two problems with bignums.
> I'll send you a fix sometime later.
> 
> ECRC Common Logic Programming System [sepia kegi_xview opium megalog parallel]
> Version 3.5.1, Copyright ECRC GmbH, Mon Mar  6 17:43 1995
> [eclipse 1]: sort([1,235126735172635],L).
> /usr/local/eclipse-3.5.1/lib/sorts.pl compiled traceable 4340 bytes in 0.02 seconds
> 
> L = [1, BAD_TERM_0xb_0x18, [], []|',']INTERNAL ERROR: misaligned pointer in free_pages()
> 
> yes.
Fix:	coercion may have created temporaries for arith_compare
Fixed after Release: 3.5.1
Files modified: bip_arith.c
Name:	js10@doc.ic.ac.uk (Joachim Schimpf)
Date:	Thu, 26 Oct 95 13:06 GMT

---
Number:	776	
Name:	dahn@mathematik.hu-berlin.de (Bernd Ingo Dahn)
Date:	Fri, 1 Sep 1995 15:26:50 GMT
Topic:	readvar
What:	
> From dahn@mathematik.hu-berlin.de (Bernd Ingo Dahn)
> Subject: readvar
> Date: Fri, 1 Sep 1995 15:26:50 GMT
> 
> ECRC Common Logic Programming System [sepia kegi_xview opium megalog parallel]
> Version 3.5.1, Copyright ECRC GmbH, Mon Mar  6 17:43 1995
> [eclipse 1]: readvar(input,U,V),writeln([U,V]).
>	       A.
> Spurious interrupt in protected code!!!
> Trying to abort...
> 
> SUN OS 4.1 on Sparc 10
> 
> The bug does not occur if a non-variable is read in.
> 
> 
> Ingo Dahn

Fix:	p_readvar
Fixed after Release: 3.5.1
Files modified: read.c
Name:	lll
Date:	19.09.95

---
Number:	775
Name:	micha
Date:	7.9.95
Topic:	initialization
What:	When eclipse is started with -b PATH/file, cwd is not set to PATH
	and thus recursive compiles do not work.

Fix:	All -b options are passed to the toplevel loop together
	with the -e option
Fixed after Release: 3.5.1
Files modified: main.c kernel.pl
Name:	micha
Date:	6.11.95

---
Number:	774
Name:	laszlo@ipb.uni-bonn.de
Date:	31.8.95
Topic:	mutex
What:	X :: 1..10, Y :: 3..5, make_suspension(writeln(hello), 1, Susp),
	insert_suspension(X, Susp, 4, fd), dvar_domain(Y, DY), dvar_update(X, DY).
	loops when traced through

Fix:	
Fixed after Release: 3.5.1
Files modified: 
Name:	micha
Date:	

---
Number:	773
Name:	Norbert.Eisinger@informatik.uni-muenchen.de
Date:	24.8.95
Topic:	dynamic,nil
What:	[eclipse 2]: dynamic [] / 0.
	type error in dynamic [] / 0

Fix:	
Fixed after Release: 3.5.1
Files modified: bip_db.c
Name:	micha
Date:	31.10.95

---
Number:	772
Name:	mgw@doc.ic.ac.uk
Date:	13.4.95
Topic:	element/3
What:	[X,Y]::1..10, element(X,[a,b,c],Z), element(Y,[c,d,a],Q), X=Y, X#>1.
	and
	PT1::[a,b,c],element(J,[a,b,c],PT2),PT1=PT2,PT1##a,PT1 ## b.
	do not propagate enough.

Fix:	copying the 'any' list always
Fixed after Release: 3.5.1
Files modified: fd_domain.pl
Name:	micha
Date:	30.10.95

---
Number:	771
Name:	micha
Date:	7.8.95
Topic:	saved states
What:	The flag meta_attribute is not restored from the saved state.

Fix:	put it into shared_data
Fixed after Release: 3.5.1
Files modified: types.h bip_delay.c emu_c_env.c emu_par.c
Name:	micha
Date:	6.11.95

---
Number:	770
Name:	joachim
Date:	3.8.95
Topic:	interrupts
What:	current_interrupt(X,Y) stops generating numbers at the first
	unused signal number (e.g. on Linux) even when there are
	valid signal numbers above.

Fix:	separated the check for signal existence and highest signal no.
Fixed after Release: 3.5.1
Files modified: handlers.c events.pl
Name:	micha
Date:	30.10.95

---
Number:	769
Name:	bonnet
Date:	31.7.95
Topic:	concat_string
What:	[eclipse 1]: concat_string(["a\000b","c"],X).
	X = "ac\000\000"

Fix:	
Fixed after Release: 3.5.1
Files modified: bip_strings.c
Name:	joachim
Date:	1.8.95

---
Number:	768
Name:	Christian Holzbaur
Date:	20.7.95
Topic:	builtins
What:	[eclipse 1]: current_macro(A,B,B,C).
	bind_c(): unknown tag (1) encountered

Fix:	Dereferencing all references in unify()
Fixed after Release: 3.5.1
Files modified: emu_c_env.c
Name:	micha
Date:	6.11.95

---
Number:	767
Name:	Takis Stamatopoulos <takis@di.uoa.gr>
Date:	19.7.95
Topic:	min_max,fd,parallel
What:	Several min_maxes in parallel don't work (only nesting works...)

	go(L) :-
	   findall((X, Y), mm(X, Y), L).

	:- parallel mm/2.
	mm(X, Y) :-
	   [X, Y] :: 0..1000,
	   X+Y #>= 400,
	   Y #>= 3*X,
	   min_max((indomain(X), indomain(Y)), Y).
	mm(X, Y) :-
	   [X, Y] :: 0..1000,
	   2*X+Y #>= 600,
	   Y #>= X,
	   min_max((indomain(X), indomain(Y)), Y).

Fix:	using locks
Fixed after Release: 3.5.1
Files modified: fd.pl
Name:	micha
Date:	4.8.95

---
Number:	766
Name:	stolzen@mailhost.uni-koblenz.de
Date:	20.7.95
Topic:	compiler,waking
What:	
	[eclipse 1]: [user].
	 p(X,Y) :- X=Y, ((Z=Z , true) ; true).
	yes.
	[eclipse 3]: X~=Y, p(X,Y).			% should fail!
	X = X
	Y = X
	Delayed goals:
		X ~= X
	yes.
	[ Wakes only in the first branch instead of before the
	  disjunction (Space -> Ress) ]

Fix:	always wake before a disjunction
Fixed after Release: 3.5.1
Files modified: pass3.c
Name:	micha
Date:	20.7.95

---
Number:	765
Name:	Christian Holzbaur
Date:	17.7.95
Topic:	arithmetic
What:	This should fail:
	[linear 53]: -9641899220874723 / 5644788772006 > -85604827383 /
	791504468.
	yes.

Fix:	A bug in the GMP library: One cannot compare just the 
	number's sizes when they differ only by one limb.
Fixed after Release: 3.5.1
Files modified: mpq_cmp.c in GMP library
Name:	joachim
Date:	17.7.95

---
Number:	764
Name:	joachim
Date:	7.7.95
Topic:	macros
What:	No recursive expansion in goal macros: For example

	:- define_macro(njet/1,t/2,[goal]).
	t(njet(G), G->fail;true).

	should expand	njet(njet(p))
	into		(p->fail;true)->fail;true
	but does just	njet(p)->fail;true.
	[ The transformation should assume that the result of the
	  transformation is again a goal and apply recursively. ]

Fix:	make a fixpoint
Fixed after Release: 3.5.1
Files modified: kernel.pl
Name:	micha
Date:	11.7.95

---
Number:	763
Name:	joachim
Date:	7.7.95
Topic:	delay/2
What:	wakes only on instantiation when lib(suspend) is loaded:
	[eclipse 1]: lib(suspend).
	yes.
	[eclipse 2]: delay(X-Y,writeln(hello)),X=Y.

	Delayed goals:
		writeln(hello)
		yes.

Fix:	redefining delay in suspend.pl
Fixed after Release: 3.5.1
Files modified: suspend.pl
Name:	micha
Date:	6.7.95

---
Number:	762
Name:	joachim
Date:	7.7.95
Topic:	saved states
What:	On e.g. hp700_ux90, sparc_sunos5:

	[eclipse 1]: save_program(sp).
	yes.
	[eclipse 2]: restore(sp).
	Spurious interrupt in protected code!!!
	Trying to abort...

Fix:	resetting op_addr_ptr_ when restoring
Fixed after Release: 3.5.1
Files modified: main.c
Name:	micha
Date:	6.11.95

---
Number:	761
Name:	joachim
Date:	26.6.95
Topic:	parallel cuts
What:	Neckcut in parallel predicates don't work:
	:- parallel p/1.
	p(1):- writeln(a).
	p(2):- !, writeln(b).
	p(3):- !, writeln(c).

	[eclipse 3]:  p(X).
	a
	X = 1     More? (;) b
	X = 2Spurious interrupt in protected code!!!
	[ General Neckcut instruction shouldn't be slowed down by always
	testing for parallel case. Solution: either special ParNeckcut
	or let compiler generate a Savecut-Cut instruction sequence. ]

Fix:	introduced Neckcut_par instruction
Fixed after Release: 3.5.1
Files modified: pass4.c
Name:	joachim
Date:	28.8.95

---
Number: 760
Name:   Ludek Matyska <ludek@muni.cz> (joachim)
Date:   25.4.95
Topic:  megalog 
What:   Databases are in fact not portable between machines, e.g. when
        trying to open a db created on sun4 on pcsolaris: 

        [eclipse 2]: opendb(tdb). 
        Database was created with an old version of MegaLog 
        Run the conversion program to update the database 
        Database was created with an old version of MegaLog 
        Run the conversion program to update the database 
        open_lcv_table: cannot open lcv table 
         
        no (more) solution. 
	[structures are written directly, without any xdr conversion,
	the internal bytes format is ok]
	[ I don't think we really want to make them compatible everywhere,
	including 64-bit architectures etc.]
 
Fix:
Fixed after Release:
Files modified:
Name:   **** Not Yet Fixed ****
Date:

---
Number:	759
Name:	laszlo@ipb.uni-bonn.de
Date:	29.5.95, 9.6.95
Topic:	fd
What:	indomain/1 makes type error and dvar_update/2 fails if variable
	is already instantiated to a non-atomic domain value:

	[eclipse 2]: X::[s(a),t(b)], X ## t(b), indomain(X).
	type error in indomain(s(a))

	[eclipse 5]: X::[s(a),t(b)], X ## t(b), dvar_update(X, dom([s(a)],1)).
	no (more) solution.

Fix:	
Fixed after Release: 3.5.1
Files modified: fd_domain.pl
Name:	micha
Date:	27.6.95

---
Number:	758
Name:	manlio@sia.cise.it(lll)
Date:	09.05.95
Topic:	 type error in '$bang_diff'/7
What:	see bug/758


Fix:	bad external declaration
Fixed after Release: 3.5.1
Files modified: b_bang_builtins.c
Name:	micha
Date:	6.11.95

---
Number:	757
Name:	DK1@ecrc.de (lll)
Date:	09.05.95
Topic:	instantiation fault in recorded/3 of Quintus
What:	recorded/3 in the compatibility package does not
	implement the full Quintus functionality:
	recorded(-,-,?) does not work.

Fix:	
Fixed after Release: 3.5.1
Files modified: quintus.pl
Name:	joachim
Date:	10.5.95

---
Number:	756
Name:	Jean-Marc.Andreoli@xerox.fr (lll)
Date:	09.05.95
Topic:	Head occurrence of attributed variable
What:	
	If you create a new attributed variable
	with a head occurrence, the code might not always work. In particular,
	it will not work if you call meta_attribute/2 after compiling such code.

Fix:	
Fixed after Release: 
Files modified: 
Name:	(micha) **** Not Yet Fixed ****
Date:	

---
Number: 755	
Name:	manlio@sia.cise.it (lll)
Date:	09.05.95
Topic:	deletion of db tuples
What:	what's do you think of th following behaviour of the DB?

	a <=> [integer(id,2,+)].	% creation of a relation named 'a'
	a <++ [[1],[2]]			% insertion of the tuples 1 and 2
	a <-- [[1]]			% deletion of the tuple [1]

	the deletion is not made by eclipse, that answers
		type error in call(0, db)

Fix:	
Fixed after Release: 3.5.1
Files modified: db.pl
Name:	joachim
Date:	28.04.95

---
Number:	754
Name:	lll
Date:	18.4.95
Topic:	parallelism
What:	ERROR: Stack pointer mismatch in eng_donate_state() with c_excar.pl

Fix:	store dereferenced argument in fork-choicepoint in try already
	to make it look similar on all alternatives.
Fixed after Release: 3.5.1
Files modified: emu.c
Name:	joachim
Date:	21.4.95

---
Number:	753
Name:	joachim
Date:	7.4.95
Topic:	bignum
What:	OR-ing bignums sometimes results in rubbish:
	[eclipse 9]: X is \(-1) \/ \6023000000000.
	X = -1455851009		% should be -6023000000001
	[ a gmp library bug ]

Fix:	by new gmp
Fixed after Release: 3.5.2
Files modified: libgmp
Name:	joachim
Date:	8/96

---
Number:	752
Name:	jml@doc.ic.ac.uk Thierry.Despeyroux@sophia.inria.fr (joachim)
Date:	7.4.95
Topic:	compiler,gc
What:	[see workdir/sepia/bug/752, workdir/sepia/bug/td]

	inc_delete_kth([Kth|Rem],0,Kth,Rem,[],Change) :- !,
	     arcs(Kth,Neighbours),
	     lost_later(Neighbours,Rem,0,Change).
	inc_delete_kth([First|Rest],M,Kth,[First|More],[First|Others],Change) :-
	     M1 is M - 1,
	     inc_delete_kth(Rest,M1,Kth,More,Others,Change).

	Generates the following code:

	inc_delete_kth1/6 :
		Branch                    	3608(List_switchAM)
		...
		JmpdAs                    	-4 0xe18 

	The JmpdAs should go to the start address but is threaded through
	to the List_switchAM. This is ok for execution, but when a gc is
	triggered by the JmpdAs instruction, it cannot find the active
	arity (normally this is computed by looking into the procedure
	code header which is at a negative offset from the code start).
	The bug of Thierry.Despeyroux has the same cause.
	[ Suggested fix: disable branch threading optimization for
	  {Jmp|Call|Chain}A instructions ]

Fix:	as suggested
Fixed after Release: 3.5.1
Files modified: pass4.c
Name:	micha
Date:	3.5.95

---
Number:	751
Name:	joachim
Date:	6.4.95
Topic:	compiler
What:	[eclipse 67]: nodbgcomp, [user].
	 bug :- D=s(X), eq(X,Y), D=s(1), writeln(Y).
	 eq(X,X).
	 user       compiled optimized 192 bytes in 0.00 seconds

	yes.
	[eclipse 68]: bug.
	s(1)			% should print 1

Fix:	Really hard to fix properly; preferring higher args for =/2 now
Fixed after Release: 3.5.1
Files modified: body.c
Name:	micha
Date:	7.11.95

---
Number:	750
Name:	joachim
Date:	30.3.95
Topic:	bignum
What:	Several problems with int<->big conversion and overflow:
	2147483648 is -(-2147483648)		fails
	-2147483648 is 2147483648 * -1		fails
	-2147483648 is 2147483648 // -1		fails
	0 is 2147483649 * 1 mod 1		fails
	1 is 2147483647 ^ 0			fails
	-1_1 is floor(-1_1)			fails
	X is abs(-2147483648)			gives -2147483648

Fix:	added overflow checks, etc.
Fixed after Release: 3.5.1
Files modified: emu.c bip_arith.c bigrat.c
Name:	joachim
Date:	30.3.95

---
Number:	749
Name:	joachim
Date:	24.3.95
Topic:	bignum
What:	[eclipse 14]: number_string(999999999999999999,S).
	S = "999999999999999999\000"

Fix:	adjust string length after conversion
Fixed after Release: 3.5.1
Files modified: bip_tconv.c
Name:	joachim
Date:	7.4.95

---
Number:	748
Name:	ulrike@uran.informatik.uni-bonn.de
Date:	21.3.95
Topic:	destroydb/0
What:	It does not close the db directory (created via createdb/1) before
	removing it.
	ulrike@silizium 22: eclipse
	Version 3.5.1, Copyright ECRC GmbH, Mon Mar  6 17:43 1995
	[eclipse 1]: lib(db).
	yes.
	[eclipse 2]: createdb(test).
	yes.
	[eclipse 3]: destroydb.
	destroy_database_directory: Warning -- could not remove directory /home/III/a/ulrike/test
	yes.

Fix:	if unlink() is applied to a file which still has an open descriptor
	in the current process, NFS creates a file .nfsXXX (see man nfs)
	and the directory cannot be removed. Closing the fd first.
Fixed after Release: 3.5.1
Files modified: b_multi_db.c
Name:	micha
Date:	6.11.95

---
Number:	747
Name:	tk@uran.informatik.uni-bonn.de
Date:	17.3.95
Topic:	double floats
What:	With set_flag(float_precision,double) crashes during compilation
	of clauses containing float constants.

Fix:	increment TG in units of pwords when pushing clause descriptor
Fixed after Release: 3.5.1
Files modified: procedure.c
Name:	joachim
Date:	21.3.95

---
Number:	746
Name:	joachim
Date:	8.3.95
Topic:	compiler,indexing
What:	First clause matches when called with list as 1st argument:
	[eclipse 1]: [user].
	generalize2(V,_,V):- var(V),!.
	generalize2(_,V,V):- var(V),!.
	generalize2([],[],[]):-!.
	generalize2([H1|T1],[H2|T2],[H|T]):-!,
	   generalize2(H1,H2,H),
	   generalize2(T1,T2,T),!.
	generalize2(T1,T2,T):-
	   T1=.. [F1|Args1],
	   T2=.. [F2|Args2],
	   F1 == F2,
	   length(Args1,L),
	   length(Args2,L),
	   generalize2(Args1,Args2,Args),
	 T =.. [F1|Args],!.               
	generalize2(_,_,Var).

	[eclipse 2]: generalize2([a],Y,Z).
	Y = Y
	Z = [a]
	yes.

Fix:	not sharing the default path when it matched an incompatible type
Fixed after Release: 3.5.1
Files modified: section.c
Name:	micha
Date:	6.11.95

---
**********************************************************
 VERSION 3.5.1 INSTALLED 8.3.95
**********************************************************
---
Number:	745
Name:	micha
Date:	20.2.95
Topic:	debugger macros
What:	Entering an empty string for a debugger macro causes a SEGV

Fix:	
Fixed after Release: 3.5.0
Files modified: debug_opt.c
Name:	micha
Date:	28.2.95

---
Number:	744
Name:	micha
Date:	15.2.95
Topic:	compiler
What:	p :- (a; var(X), !, (a->b;c)). uses Y2 for the local cut, which is wrong

Fix:	Cut in conjunction prevents propagating of a localcut variable
Fixed after Release: 3.5.0
Files modified: pass2.c
Name:	micha
Date:	1.3.95

---
Number:	743
Name:	michael.lawley@cit.gu.edu.au
Date:	3.2.95
Topic:	lexer
What:	[eclipse 1]: read_token(T, C).
		|

	T = "\001"	% should be "|"
	C = solo

Fix:	
Fixed after Release: 3.5.0
Files modified: lex.c
Name:	micha
Date:	28.2.95

---
Number:	742
Name:	manlio@sia.cise.it
Date:	18.1.95
Topic:	lib(fd)
What:	A::[a,b,c],A#=a makes a type error.

Fix:	This was intended to be a feature, but in fact A{a,b,c} #= B{a,c,d}
	works, so this one should as well.
Fixed after Release: 3.5.0
Files modified: fd.pl
Name:	micha
Date:	28.2.95

---
Number:	741
Name:	takis@zeus.di.uoa.ariadne-t.gr
Date:	5.1.95
Topic:	fd/element
What:	[eclipse 15]: V::1..3, element(V, [1,1,1,5], D).

	V = V{[1..3]}
	D = D{[1, 5]}

Fix:	forcing update of both index&value on first call. Also added a check
	for singleton value after sorting the value list
Fixed after Release: 3.5.0
Files modified: fd.pl bip_domain.c
Name:	micha
Date:	5.1.95

---
Number:	740
Name:	stefan@uran.informatik.uni-bonn.de
Date:	27.12.94
Topic:	arithmetic on Linux
What:	See ~sepia/workdir/sepia/bug/740

Fix:	link with -lieee
Fixed after Release: 3.4.5
Files modified: makefile.local INST_PARAMS
Name:	joachim
Date:	19.12.94

---
Number:	739
Name:	micha
Date:	30.12.94
Topic:	sort
What:	[eclipse 2]: [bug], list(X), sort(X, Sorted).
										X = [16, 17, 14, 15, 16, 17, 18, 15, 16, 17, 18, 19, 20, 17, 18, 19, 14, 16, 18, 14, ...]
										Sorted = [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 14, 15, 16, 17, 22, ...]
	See ~sepia/workdir/sepia/bug/739
	[worked in 3.4.5]

Fix:	fixed bug introduced by recent fix
Fixed after Release: 3.5.0
Files modified: bip_comp.c
Name:	joachim
Date:	10.1.95

---
Number:	738
Name:	hlock@loria.fr
Date:	14.12.94
Topic:	fd
What:	mindomain(A-B, X) succeeds

Fix:	
Fixed after Release: 3.5.0
Files modified: fd.pl
Name:	micha
Date:	28.2.95

---
Number:	737
Name:	gerd@imn.th-leipzig.de
Date:	8.12.94
Topic:	save+interrupts
What:	Do save(junk). and then start junk:
	set_interrupt_handler(alrm, writeln/1), alarm(1).
	Then the system is in a strange state, the interrupt won't come,
	but e.g. typing '.' makes 14
	exiting to an undefined tag in exit_block(3)
	and it loops in a_mutex_lock. Typing ^C gets it into a non-interruptable
	state.

Fix:	Don't Enable_Int() in restart_emulc()
Fixed after Release: 3.5.0
Files modified: emu_c_env.c
Name:	joachim
Date:	12.1.95

---
Number:	736
Name:	thomas@intellektik.informatik.th-darmstadt.de
Date:	13.10.94
Topic:	signal handling
What:	They use goals with timeouts (signal 14). After a while,
	the execution cannot be aborted any more by ^C.
	See ~sepia/workdir/sepia/bug/736

Fix:	set_flag(enable_interrupts,...) must be idempotent.
Fixed after Release: 3.5.0
Files modified: bip_control.c
Name:	joachim
Date:	12.1.95

---
Number:	735
Name:	stefan@uran.informatik.uni-bonn.de
Date:	16.11.94
Topic:	arithmetic
What:	[eclipse 1]: X is (24335220 - 65430 * 65610 / 180) / (24269790 - 65430 * 65430 / 180).  % should be 1
	type error in /(485985_1, 24346914.0, X)
	[eclipse 2]: X is 65430 * 65430.

	X = -13882396
	yes.
	[eclipse 3]: X is 65430 * 65610.

	X = 4292862300		% (OK!)
	yes.

Fix:	(1) Multiplication overflow detection code completely replaced.
	(2) _big_div() did not obey the PREFER_RATIONALS flags, fixed.
Fixed after Release: 3.5.0
Files modified: emu.c bigrat.c
Name:	joachim
Date:	12.12.94

---
Number:	734
Name:	bellone%tsdias05@dassault-avion.fr
Date:	1.12.94
Topic:	number_string/2
What:	[eclipse 1]: number_string("4", N).
	Segmentation Violation - maybe machine stack overflow

Fix:	added check
Fixed after Release: 3.4.5
Files modified: bip_tconv.c
Name:	joachim
Date:	1.12.94

---
Number:	733
Name:	joachim
Date:	12.11.94
Topic:	doubles
What:	Segmentation violation when using double floats.
	Happens on sparcs when C compiler generates std instructions
	and the global stack is not properly aligned.

Fix:	made the global stack pword-aligned by padding buffers
Fixed after Release: 3.5.0
Files modified: many...
Name:	joachim
Date:	12.1.95

---
Number:	732
Name:	jampel@cs.city.ac.uk (Michael Jampel)
Date:	10.11.94
Topic:	arithmetic
What:	type error in /(-27.2, -1_1, _g2837)

Fix:	_float_div() was missing
Fixed after Release: 3.4.5
Files modified: bip_arith.c
Name:	joachim
Date:	12.11.94

---
Number:	731
Name:	micha
Date:	27.9.94
Topic:	record+suspensions
What:	[eclipse 26]: X>0, Y>1, recorda(r, X), recorda(r, Y).
	...yes.
	[eclipse 27]: recorded(r, X).
	X = X_g1118
	Delayed goals:
	X_g1118>1
	X_g1170>0     More? (;) 

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number:	730
Name:	micha
Date:	22.9.94
Topic:	event handling
What:	:- external(p/1).
	p :- p(1).

	[eclipse 3]: p.
	 
	no (more) solution.
	calling an undefined procedure [eclipse 4]:
	[error_handler/3 is called without uninstantiated Module argument,
	 although the module is known from the procedure descriptor]

Fix:	If no module argument available, use the descriptor's module.
Fixed after Release: 3.5.0
Files modified: emu.c
Name:	joachim
Date:	19.12.94

---
Number:	729
Name:	micha
Date:	22.9.94
Topic:	fd
What:	SEGV for 1 #> 1.5*2.

Fix:	check for integers
Fixed after Release: 3.4.5
Files modified: fd.pl
Name:	micha
Date:	22.9.94

---
Number:	728
Name:	joachim
Date:	19.8.94
Topic:	indexing
What:	This should compile into an Integer_switch A4, but doesn't:
	 delete(X, [X|Xs], Xs, 2).
	 delete(X, [Y|Xs], [Y|Ys], 1) :-
		   delete(X, Xs, Ys).

Fix:	First doing all the switches and only then limiting their number
	by the number of clauses. 
Fixed after Release: 3.5.0
Files modified: section.c
Name:	micha
Date:	1.3.95

---
Number:	727
Name:	steph
Date:	10.9.94
Topic:	@<
What:	[rdb 15]: "\377" @< "\000".
	yes.
	[ signed/unsigned problem ]

Fix:	use unsigned comparison
Fixed after Release: 3.5.0
Files modified: bip_comp.c
Name:	joachim
Date:	19.12.94

---
Number:	726
Name:	gerd@intellektik.informatik.th-darmstadt.de
Date:	1.8.94
Topic:	metaterms
What:	p(X) :- q, X=Xc{ccc:ccc}, r, s(X, Xc).
	does not execute correctly when =/2 is expanded
	[get_meta creates a partial metaterm, bind_c rewrites it
	and following push_init_variable rewrites it again because it does not
	know bind_c has modified it]

Fix:	disabled expanding of =/2 when a metaterm is involved
Fixed after Release: 3.4.5
Files modified: pass2.c, body.c
Name:	micha
Date:	12.8.94

---
Number:	725
Name:	owen@sst.icl.co.uk (Owen Evans)
Date:	28.7.94
Topic:	khs and gc
What:	Getting GC internal error: invalid tag (...) messages.
	See ~sepia/workdir/sepia/bug/725

Fix:	mark_from_wl was wrong
Fixed after Release: 3.4.5
Files modified: gc_stacks.c
Name:	micha
Date:	13.9.94

---
Number:	724
Name:	micha (mark, carmen)
Date:	9.8.94
Topic:	fd
What:	#<= misbehaves in nodbgcomp mode

Fix:	gec_start() returned a wrong term
Fixed after Release: 3.4.5
Files modified: bip_domain.c fd.pl
Name:	micha
Date:	9.8.94

---
Number:	723
Name:	micha (carmen, bieker)
Date:	9.8.94
Topic:	suspended lists
What:	the message woken list N is corrupted - caused by wrong test in
	_schedule_list()

Fix:	
Fixed after Release: 3.4.5
Files modified: bip_delay.c
Name:	micha
Date:	9.8.94

---
Number:	722
Name:	micha
Date:	18.7.94
Topic:	op
What:	[eclipse 1]: op(10, fx, a), global_op(10, fx, a).
	[eclipse 2]: module(a).
	warning: creating a new module in module(a)
	[a 3]: current_op(A, B, a).
	no (more) solution.

Fix:	fixed the redefinition checks in insert_op()
Fixed after Release: 3.5.0
Files modified: operator.c
Name:	joachim
Date:	20.12.94

---
Number:	721
Name:	takis@uranus.di.uoa.ariadne-t.gr
Date:	11.7.94
Topic:	fd
What:	[X1,X2,X3,X4] :: 0..1, 60*X1+60*X2+45*X3+45*X4 #<= 100, indomain(X1), indomain(X2), indomain(X3), indomain(X4).
	produces ground delayed goals

Fix:	delay_ge cannot rely on the length of the remaining term
Fixed after Release: 3.4.5
Files modified: fd.pl
Name:	micha
Date:	15.7.94

---
Number:	720
Name:	moser@informatik.tu-muenchen.de
Date:	7.7.94
Topic:	library(cio)
What:	[eclipse 1]: lib(cio), tell('~/junk'), told.
	illegal stream specification in close('/home/scorpio12/joachim/junk')

Fix:	
Fixed after Release: 3.5.0
Files modified: cio.pl
Name:	micha
Date:	1.3.95

---
Number:	719
Name:	schuetz
Date:	6.7.94
Topic:	lib(profile), sun4 only
What:	Inside profile/1 getcwd/1 doesn't work. As a consequence,
	lib and compile inside profile/1 cannot reset the working
	directory properly:
	[eclipse 1]: profile(getcwd(X),[]).
	...

	X = "./"
	yes.
	[the getcwd() library function returns errno=ERANGE. Probably
	it cannot cope with system calls interrupted by the profiler.]

Fix:	Do hard signal blocking during getcwd()
Fixed after Release: 3.5.1
Files modified: emu_c_env.c bip_misc.c
Name:	joachim
Date:	3.8.95

---
Number:	718
Name:	micha
Date:	3.7.94
Topic:	compiler
What:	b(true) :- !.  b(1).
	produces bad code for meta.

Fix:	
Fixed after Release: 
Files modified: 
Name:	Fixed
Date:	

---
Number:	717
Name:	sfkaplan@santafe.edu
Date:	28.6.94
Topic:	random/1
What:	Is always odd or always even

Fix:	
Fixed after Release: 3.4.5
Files modified: bip_misc.c
Name:	micha
Date:	22.7.94

---
Number:	716
Name:	micha
Date:	27.6.94
Topic:	copy_term
What:	It does not do any TRO (in C) and thus it cannot copy very long lists.
	As a consequence, e.g. profiling goals that contain long lists
	is not possible.

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number:	715
Name:	gamper@informatik.rwth-aachen.de
Date:	24.6.94
Topic:	apply_macros.pl
What:	The macros cannot be used at the toplevel, nor can they be compiled
	in dbgcomp mode, nor compiled with uninstantiated arguments.
	There should be a default procedure definition for all macros
	which is taken in case the macros are not expanded or expandable.

Fix:	Defined the predicates and exported them. Check for var Pred.
Fixed after Release: 3.5.0
Files modified: apply_macros.pl
Name:	micha
Date:	1.3.95

---
**********************************************************
 VERSION 3.4.5 INSTALLED 16.6.94
**********************************************************
---
Number:	714
Name:	stolzen@mailhost.uni-koblenz.de
Date:	15.6.94
Topic:	dom_check_in/2
What:	doesn't work with strings:
	[eclipse 17]: dom_check_in(a,dom([a,b],_)).
	yes.
	[eclipse 18]: dom_check_in("a",dom(["a","b"],_)).
	no (more) solution.

Fix:	
Fixed after Release: 3.5.0
Files modified: fd.pl bip_domain.c
Name:	micha
Date:	1.3.95

---
Number:	713
Name:	gerd@imn.th-leipzig.de (Gerd Neugebauer)
Date:	14.6.94
Topic:	term_string,parser
What:	[user 1]: term_string(T,"[").
	Segmentation violation - maybe machine stack overflow

Fix:	Never set StreamPtr to zero
Fixed after Release: 3.5.0
Files modified: lex.c
Name:	joachim
Date:	12.1.95

---
Number:	712
Name:	bieker@ls12o.informatik.uni-dortmund.de
Date:	1.6.94
Topic:	setof + metaterms
What:	This is actually the same as #562:
	    [A,B,C] :: 0..9, setof(X, member(X,[A,B,C]), L).
	gives 3 solutions while
	    setof(X, member(X,[A,B,C]), L).
	gives only one.

Fix:	substitute metaterms back if they are variants
Fixed after Release: 3.4.4
Files modified: setof.pl
Name:	joachim
Date:	3.6.94

---
Number:	711
Name:	gerd@imn.th-leipzig.de (Gerd Neugebauer)
Date:	19.5.94
Topic:	compiler
What:	 :- meta_attribute(eclipse,[]).
	 p :- ( q(X{foo(X)}) ; true ).
	 generates wrong code for the metaterm construction

Fix:	
Fixed after Release: 3.4.4
Files modified: head.c body.c pass2.c
Name:	micha
Date:	29.5.94

---
Number:	710
Name:	jml@doc.ic.ac.uk
Date:	25.5.94
Topic:	woken scheduler
What:	woken list 7 is corrupted

Fix:	tail of a dif list may not be a self-reference, so general trailing
	is necessary
Fixed after Release: 3.4.4
Files modified: bip_delay.c
Name:	micha
Date:	27.5.94

---
Number:	709
Name:	mark
Date:	31.3.94
Topic:	fd
What:	[eclipse 41]: X::1..10, minimize((Y=1;Y=2),X,1,2,10).
	Found a solution with cost 1
	Found a solution with cost 1

Fix:	stacking woken lists in minimize/*
Fixed after Release: 3.4.5
Files modified: fd.pl emu_c_env.c bip_delay.c gc_stacks.c emu_export.h ...
Name:	micha
Date:	23.9.94

---
Number:	708
Name:	Jonathan Lever <jml@doc.ic.ac.uk
Date:	24.5.94
Topic:	fd
What:	test1 :-
	    Cost::0..1,
	    min_max(indomain(Cost),Cost).

	loops with solution 0.

Fix:	X+K*Y+X#>=0 was wrong for negative X and K
Fixed after Release: 3.4.4
Files modified: bip_domain.c
Name:	micha
Date:	24.5.94

---
Number:	707
Name:	steven
Date:	10.5.94
Topic:	dictionary gc
What:	A string that was created by atom_string/2 becomes
	garbled by the system under certain circumstances.

Fix:	The handling of persistent strings was just missing
	from the dict gc marking routine...
Fixed after Release: 3.4.4
Files modified: gc_stacks.c
Name:	joachim
Date:	11.5.94

---
Number:	706
Name:	stolzen@mailhost.uni-koblenz.de
Date:	6.5.94
Topic:	metaterms
What:	A metaterm written with writeq may not be readable from another
	module, because of implicit qualifiactions.

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****	(transferred to bugzilla bug 67)
Date:	

---
Number:	705
Name:	stolzen@mailhost.uni-koblenz.de
Date:	6.5.94
Topic:	metaterms
What:	meta_attribute(bug,[]), set_flag(output_mode,"PQUMV").
	[eclipse 2]: [user].
	  test(f(a,A{bug:a}),[g(A)]).
	  test(f(b,B{bug:b}),[B]). 
	   user       compiled traceable 504 bytes in 0.00 seconds

	   yes.
	   [eclipse 3]: test(f(a,Y),Z).
	    
	    Y = BAD_TERM_0xb_0x20cff18
	    Z = [g(BAD_TERM_0xb_0x20cff18)]     More? (;) 
	    ...
	[eclipse 4]: test(f(X, Y), Z).
	 
	 X = a
	 Y = meta
	 Z = [g(meta)]     More? (;) 
	  
	  X = b
	  Spurious interrupt in protected code!!!

Fix:	Make compilation independent of the order of metaterms
Fixed after Release: 3.4.4
Files modified: head.c body.c pass2.c compiler.h
Name:	micha
Date:	29.5.94

---
Number:	704
Name:	joachim
Date:	28.4.94
Topic:	compiler
What:	[eclipse 1]: define_macro(type(integer),(=)/2,[]).
	yes.
	[eclipse 2]: current_macro(type(integer),X,Y,Z).
	no (more) solution.
	[ Seems to be caused by an indexing bug in current_macro_body/5 ]
Fix:	funny mistype in _test_goal
Fixed after Release: 3.4.4
Files modified: section.c
Name:	micha
Date:	26.5.94

---
Number:	703
Name:	thomas@intellektik.informatik.th-darmstadt.de
Date:	28.4.93
Topic:	macros, saved state
What:	type macros are not in the saved state

Fix:	store the properties in the shared heap
Fixed after Release: 3.4.5
Files modified: emu_util.c read.c emu_export.h dict.c types.h
Name:	joachim
Date:	27.6.94

---
Number:	702
Name:	neumann@ls12sb.informatik.uni-dortmund.de
Date:	19.4.94
Topic:	eclipserc
What:	Malfunctioning coroutining program when there was a compilation
	error during compiling .eclipserc. Could not be completely
	tracked down.

Fix:	When compiling .eclipserc aborts due to an error, this is
	not caught, eclipse restarts like after a fatal signal.
	Fixed by using compile/2 rather than pcompile/3 to compile .eclipserc
Fixed after Release: 3.4.4
Files modified: kernel.pl
Name:	joachim
Date:	26.4.94

---
Number:	701
Name:	micha
Date:	23.4.93
Topic:	exec
What:	exec corrupts its argument:
	[eclipse 1]: X='echo a', exec(X, []).
	a
	X = 'echo\000a'

Fix:	configuration
Fixed after Release: 3.4.4
Files modified: bip_io.c
Name:	micha
Date:	30.5.94

---
Number:	700
Name:	mark
Date:	9.4.94
Topic:	random/1
What:	produces negative integers

Fix:	
Fixed after Release: 3.4.4
Files modified: bip_misc.c
Name:	micha
Date:	14.4.94

---
Number:	699
Name:	mark
Date:	26.3.94
Topic:	fd
What:	[eclipse 5]: X::10..20, mindomain(X,2).
	type error in mindomain(X{[10 .. 20]}, 2)

Fix:	first committing, then unifying
Fixed after Release: 3.4.4
Files modified: fd.pl
Name:	micha
Date:	29.3.94

---
Number:	698
Name:	Jacques.Noye@irisa.fr
Date:	28.3.94
Topic:	externals
What:	Check_Float() macro is broken

Fix:	typo
Fixed after Release: 3.4.4
Files modified: sepia.h
Name:	micha
Date:	29.3.94

---
**********************************************************
 VERSION 3.4.4 INSTALLED 25.3.94
**********************************************************
---
Number:	697
Name:	bieker@ls12o.informatik.uni-dortmund.de
Date:	21.3.94
Topic:	lib(suspend)
What:	delay clauses compiled with lib(suspend_simple) don't work
	when lib(suspend) is loaded (even in another module).
	[eclipse 1]: lib(suspend).
	[eclipse 2]: module(m).
	[m 3]: [user].
	 delay p(X,Y) if X\==Y.
	[m 4]: p(X,Y),X=Y.
	X = X
	Y = X
	Delayed goals:
		p(X, X)

Fix:	if/2 macro global; this is not a complete fix, though. When
	some variables with attribute delay/1 are still living, they
	will not work. This is not a big problem, though.
Fixed after Release: 3.4.4
Files modified: suspend.pl
Name:	micha
Date:	29.3.94

---
Number:	695
Name:	cleary
Date:	14.3.94
Topic:	findall
What:	wake missing:
	[eclipse 2]: X>0, findall(X,X=0,L).
	X = X
	L = [0]
	Delayed goals:
		X > 0

Fix:	insert true after call/2
Fixed after Release: 3.4.3
Files modified: setof.pl
Name:	joachim
Date:	14.3.94

---
Number:	694
Name:	carmen
Date:	10.3.94
Topic:	fd
What:	test(X,Y) :- X::1..10, 
	make_suspension(writeln(Y), 10, Susp),
	insert_suspension(X,Susp,min of fd,fd).

	[eclipse 8]: test(X,oooo), X#<2.
	oooo	<- woken when instantiated to minimum!

Fix:	program runs under priority 6; call_priority did not work at all
Fixed after Release: 3.4.3
Files modified: code.c kernel.pl
Name:	micha
Date:	23.3.94

---
Number:	693
Name:	jml@doc.ic.ac.uk
Date:	10.3.94
Topic:	fd
What:	[eclipse]: X :: 2..3, min_max(X=1, X).

	X = X{[2, 3]}

Fix:	checking if there is any solution at all
Fixed after Release: 3.4.3
Files modified: fd.pl
Name:	micha
Date:	23.3.94

---
Number:	692
Name:	micha
Date:	4.3.94
Topic:	save
What:	If the file already exists, its permissions modes are kept, so if it
	is not executable, it stays so.

Fix:	chmod if not executable
Fixed after Release: 3.4.4
Files modified: sav_res.c
Name:	micha
Date:	29.3.94

---
Number:	691
Name:	micha
Date:	4.3.94
Topic:	saved fd
What:	[eclipse 1]: lib(fd), save(ss).
	lyra% ss

	yes.
	[eclipse 2]: X::1..10, indomain(X).
	 
	 no (more) solution.
	 [ The C variable domain_offset, min_offset etc are not preserved
	   in the saved state. Must be done differently. ]

Fix:	save the values in the Prolog array fd_parameters(5)
Fixed after Release: 3.4.3
Files modified: bip_domain.c bip_array.c
Name:	joachim
Date:	14.3.94

---
Number:	690
Name:	micha
Date:	4.3.94
Topic:	save/restore
What:	[eclipse 1]: save(a), restore(a).
	...
	Segmentation violation - maybe machine stack overflow

Fix:	Not reproducable after 3.4.3, was probably caused by buggy megalog init
Fixed after Release: 3.4.3
Files modified: 
Name:	joachim
Date:	14.3.94

---
Number:	689
Name:	volak@vltava.felk.cvut.cz
Date:	28.2.94
Topic:	fd
What:	[I, J] :: 0..1, min_max((indomain(I), indomain(J)), 9 - I - 2 * J)
	loops

Fix:	this is caused by a bug in #>=/2: 
	[eclipse 14]: [I, J] :: 0..1, 9 - I - 2 * J#<=8, I=0.
	 J = J{[0, 1]}	(must be =1)

Fixed after Release: 3.4.3
Files modified: bip_domain.c
Name:	micha
Date:	10.3.94

---
Number:	688
Name:	joachim
Date:	25.2.94
Topic:	megalog shared memory version
What:	acrab66% eclipse_mu
	ECRC Common Logic Programming System [sepia opium megalog]
	Version 3.4 development, Copyright ECRC GmbH, Thu Feb 24 15:09 1994
	[eclipse 1]: ^CKilled
	acrab66%
	[ only when shared memory and watch.dog don't exist yet ]

Fix:	The shared memory database is no longer supported :-)
Fixed after Release: 3.4.5
Files modified: 
Name:	joachim
Date:	

---
Number:	687
Name:	thom
Date:	22.4.94
Topic:	lib(numbervars)
What:	'$VAR'() terms not printed as variables

Fix:	made proper module interface and put syntax_option there
Fixed after Release: 3.4.3
Files modified: numbervars.pl
Name:	joachim
Date:	22.2.94

---
Number:	686
Name:	thom
Date:	21.2.94
Topic:	fd
What:	[eclipse 5]: T1 #<= T2, T1#=T2, T2#=T1-1.
	Arithmetic exception
	(and exits from eclipse!!)

Fix:	checking for zero coeff, setting fpe handler
Fixed after Release: 3.4.3
Files modified: bip_domain.c, events.pl
Name:	micha
Date:	22.2.94

---
**********************************************************
 VERSION 3.4.3 INSTALLED 21.2.94
**********************************************************
---
Number:	685
Name:	joachim
Date:	16.2.94
Topic:	lib(suspend)
What:	[eclipse 1]: [user].
	 :- lib(suspend).
	 delay p(X,Y) if var(X);var(Y).
	 p(_,_).
	 user       compiled traceable 572 bytes in 0.13 seconds

	yes.
	[eclipse 2]: p(X,Y).

	no (more) solution.

Fix:	expand \== differently and get rid of buggy insert_bound_suspension/2
Fixed after Release: 3.4.2
Files modified: suspend.pl
Name:	joachim
Date:	16.2.94

---
Number:	684
Name:	markhof@ls12i.informatik.uni-dortmund.de
Date:	14.2.94
Topic:	profiler
What:	Sometimes the profiler output does not sum up to 100%.
	The PP addresses which are out of range are also counted as ticks
	but they are missing in the output.

Fix:	
Fixed after Release: 3.4.2
Files modified: profile.pl
Name:	joachim
Date:	15.2.94

---
Number:	683
Name:	micha (by owen)
Date:	11.2.94
Topic:	suspensions
What:	woken_susp_ has priority 0;
	schedule_woken does not check the delay_wake bit
	the combination of these two bugs is fatal when retrieving
	asserted suspensions.

Fix:	check delay_wake bit in schedule_woken()
Fixed after Release: 3.4.2
Files modified: bip_delay.c
Name:	joachim
Date:	15.2.94

---
Number:	682
Name:	micha
Date:	10.2.94
Topic:	modules
What:	import/1 makes an error when the imported module exports a predicate
	which already exists. This worked in 3.2.

Fix:	
Fixed after Release: 
Files modified: 
Name:	Fixed
Date:	

---
Number:	681
Name:	micha
Date:	9.2.94
Topic:	lib(suspend)
What:	The opposite of #675:
	make_suspension(fail, 1, S), X::1..10, Y::5..9,
	insert_suspension(Y, S, constrained of suspend, suspend),
	X=Y.

	fails because suspend handler merges the constrained list before
	the domain handler is executed and so the information
	about the original owner is lost.

Fix:	suspend handler is called as last
Fixed after Release: 3.4.4
Files modified: meta.pl
Name:	micha
Date:	14.4.94

---
Number:	680
Name:	owen@sst.icl.co.uk
Date:	9.2.94
Topic:	lib(fd)
What:	dvar_upate/2 does not work

Fix:	
Fixed after Release: 3.4.2
Files modified: fd.pl
Name:	joachim
Date:	16.2.94

---
Number:	679
Name:	mark
Date:	5.2.94
Topic:	fd
What:	X :: 1..10, instance(Y, X).
	instantiation fault in dom_check_in(Y, dom([1 .. 10], 10))
	i.e. a completely free variable is not handled, although it could be.
	Either compare_instances/4 should not return free variables,
	or the fd handler should accept them.

Fix:	
Fixed after Release: 
Files modified: 
Name:	
Date:	

---
Number:	678
Name:	Mok-Kong.Shen@lrz-muenchen.de
Date:	2.2.94
Topic:	eclipse_mu
What:	sh: /sw/eclipse/bin//watch.dog: not found
	sh: /sw/eclipse/bin//file.server: not found

Fix:	initialisation of p_installation_dir_ and typo in add_binpath_to_file()
Fixed after Release: 3.4.3
Files modified: main.c megalog:interface.c
Name:	joachim
Date:	24.2.94

---
Number:	677
Name:	mark
Date:	4.2.94
Topic:	copy_block()
What:	The PERSISTENT bit is equal to the SUSP_FLAG_WAKE bit. This has
	fatal consequences on the behaviour of recorded, getval,
	setof etc. when retrieving woken suspensions.

Fix:	check for TBUFFER
Fixed after Release: 3.4.2
Files modified: property.c
Name:	micha, joachim
Date:	15.2.94

---
Number:	676
Name:	barth@mpi-sb.mpg.de
Date:	1.2.94
Topic:	saved states
What:	Again problem when running saved state made on machine with
	different pagesize.

Fix:	The top of the new shared heap was only aligned to machine pagesize,
	needs to be aligned to maximum pagesize possible.
Fixed after Release: 3.4.2
Files modified: mem.c
Name:	joachim
Date:	2.2.94

---
Number:	675
Name:	micha
Date:	31.1.94
Topic:	fd
What:	Unifying a fd variable with another fd variable will not wake
	its constrained list:

	[eclipse 14]: X::1..10, make_suspension(fail, 1, S),
	insert_suspension(X, S, constrained of suspend, suspend), Y::4..10, X=Y.
	S = 'GOAL'(fail, eclipse)
	X = X{[4..10]}
	Y = X{[4..10]}

Fix:	missing notification when binding two domain vars. It happens that
	the suspend handler is executed before the domain handlers and so
	the constrained lists of both variables are either already woken
	or present in the 'Y' variable, so it works. If the domain handler
	was executed before suspend handler, we would miss 'X's list.
Fixed after Release: 3.4.1
Files modified: fd.pl
Name:	micha
Date:	1.2.94

---
Number:	674
Name:	stolzen@mailhost.uni-koblenz.de
Date:	25.1.94
Topic:	instance
What:	instance(g(f(X),f(Y)),g(Z,Z)) succeeds (used to work in 3.2)

Fix:	undone a too clever simplification of the agorithm ...
Fixed after Release: 3.4.0
Files modified: bip_comp.c
Name:	joachim
Date:	25.1.94

---
Number:	673
Name:	steven
Date:	18.1.94
Topic:	compiler
What:	Given the program
        p(a).
        p(A) :- A\=(_;_).
        the query ?-p(q(X)) fails.

Fix:	bad handling of \= in the guard
Fixed after Release: 3.4.0
Files modified: section.c
Name:	micha
Date:	18.1.94

---
Number:	672
Name:	stolzen@mailhost.uni-koblenz.de
Date:	19.1.94
Topic:	writeclause
What:	It does not work with multiple occurrence of metaterms.

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
**********************************************************
 VERSION 3.4.0 INSTALLED 14.1.94
**********************************************************
---
Number:	671
Name:	micha
Date:	13.1.94
Topic:	modules
What:	When a module is recompiled that was lazily imported, the import
	information is lost.

Fix:	
Fixed after Release: 
Files modified: 
Name:	Fixed
Date:	

---
Number:	670
Name:	jcleary@lucifer.cs.waikato.ac.nz
Date:	4.1.94
Topic:	compiler
What:	 :-mode(xgt0(++)).
	xgt0(pinf):-!.
	xgt0(I):- integer(I), I>0.
	fails with xgt0(10897286400).
	[ Both Switch_on_type and Integer_range_switch don't
	  take bignums into account ]

Fix:	Integer_range_switch is fixed, Switch_on_type still buggy
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****	(transferred to bugzilla bug 68)
Date:	

---
Number:	669
Name:	bieker@ls12o.informatik.uni-dortmund.de
Date:	29.12.93
Topic:	compiler
What:	
	[eclipse 1]: [user].
	 :- mode getInstructions(+,+).
	 getInstructions([],_).
	 getInstructions([_|_],Circuit):- Circuit = (_,_,_).
	 getInstructions([_|_],_).
	Compiler internal error: file "pass4.c":795
	Aborting execution....

Fix:	forgotten check if inserting after an input swtich
Fixed after Release: 3.4.0
Files modified: section.c
Name:	micha
Date:	26.1.94

---
Number:	668
Name:	micha
Date:	30.12.93
Topic:	debugger + coroutining
What:	untraceable delayed goals are assigned bad invoc number
	(see example in the manual, Display commands).

Fix:	
Fixed after Release: 3.3.8
Files modified: debug.c
Name:	joachim
Date:	5.1.93

---
Number:	667
Name:	micha
Date:	20.12.93
Topic:	compiler
What:	:- mode p(++, -),
	   p(f(A), f(L)) :- A =.. [_|L].

	generates bad code for L.

Fix:	
Fixed after Release: 3.3.8
Files modified: pass2.c
Name:	micha
Date:	21.12.93

---
Number:	666
Name:	joachim
Date:	6.12.93
Topic:	lexer/floats
What:	[eclipse 1]: X = 1e123.

	X = -4.30990295e-16

Fix:	check overflow after (float) cast
Fixed after Release: 3.3.8
Files modified: lex.c
Name:	joachim
Date:	6.12.93

---
Number:	665
Name:	pierre
Date:	3.12.93
Topic:	arithmetic
What:	This should fail:
	[eclipse 1]: denominator(123612736183_13128316132132,1).
	type error in denominator(123612736183_13128316132132, 1)

Fix:	Added another check. This should really never make a type error
	for numeric result arguments, it's just for BSI.
Fixed after Release: 3.3.8
Files modified: bip_arith.c emu.c
Name:	joachim
Date:	3.12.93

---
Number:	664
Name:	joachim
Date:	1.12.93
Topic:	abolish
What:	Mode declaration survives abolishing

Fix:	
Fixed after Release: 3.3.8
Files modified: database.c
Name:	joachim
Date:	1.12.93

---
Number:	663
Name:	joachim (brisset)
Date:	30.11.93
Topic:	asserting marked modules
What:	[eclipse 1]: [user].
	 :- tool(q/0,q/1).
	 p :- q.
	 q(M) :- assert(r(M)).
	user       compiled traceable 140 bytes in 0.00 seconds

	yes.
	[eclipse 2]: p, r(eclipse).
	Segmentation violation - maybe machine stack overflow

Fix:	Get_constant didn't work for atoms
Fixed after Release: 3.3.8
Files modified: emu.c
Name:	joachim
Date:	1.12.93

---
Number:	662
Name:	brisset
Date:	30.11.93
Topic:	delayed arithmetic
What:	
	[eclipse 1]: coroutine.
	yes.
	[eclipse 2]: Y =:= X + 1, Y = 1.
	trying to access a locked module in 1 =:= _g327

Fix:	take module from argument instead of pri
Fixed after Release: 3.3.8
Files modified: emu.c
Name:	joachim
Date:	30.11.93

---
Number:	661
Name:	micha
Date:	22.11.93
Topic:	write macros
What:	If the write macro transformation predicate is undefined, the
	error message loops.

Fix:	disabling all macros in error 68
Fixed after Release: 3.5.1
Files modified: events.pl
Name:	micha
Date:	31.10.95

---
Number:	660
Name:	stolzen@infko.uni-koblenz.de
Date:	27.10.93
Topic:	writeq
What:	writeq(s(X{a},X)) writes s(_m123{a},_g123)
	which can't be read back properly.

Fix:	
Fixed after Release: 3.3.8
Files modified: write.c
Name:	micha
Date:	30.11.93

---
Number:	659
Name:	joachim
Date:	29.9.93
Topic:	error handling
What:	[eclipse 1]: X is 0.1*1000000000.

	X = 1e+08
	yes.
	[eclipse 2]: [a].
	accessing an undefined procedure in compile(a)	<----- ???
	[eclipse 3]: [a]. 
	File does not exist :  in compile(a)

Fix:	always reset global_bip_error_ in visible_d_procedure()
Fixed after Release: 3.3.8
Files modified: proc_desc.c
Name:	joachim
Date:	2.12.93

---
Number:	658
Name:	mark
Date:	13.9.93
Topic:	coroutining
What:	delay p(X) if var(X)
	If p/1 is delayed on A::1..10, it is woken on every domain
	update, although it should wait until A is instantiated

Fix:	
Fixed after Release: 3.3.8
Files modified: 
Name:	micha
Date:	

---
Number:	657
Name:	bonnet
Date:	1.9.93
Topic:	all_dynamic
What:	[eclipse 2]: set_flag(all_dynamic,on), [user].
	 p.
	 user       compiled traceable 0 bytes in 0.00 seconds
	 INTERNAL ERROR: hc_free() bad magic number

Fix:	removed redundant add_to_chain() call
Fixed after Release: 3.3.6
Files modified: procedure.c
Name:	micha
Date:	2.9.93

---
Number:	656
Name:	mudambi
Date:	31.8.93
Topic:	domains
What:	[eclipse 2]: A::[1,3], A + 1*0  #= 2.

	A = 2

Fix:	it did not test if the elements really occurs in the domain
Fixed after Release: 3.3.6
Files modified: bip_domain.c
Name:	micha
Date:	1.9.93

---
Number:	655
Name:	jacques
Date:	4.8.93
Topic:	recording cyclic terms
What:	it is not possible to ^C the recording of cyclic terms (though it
	works when using setval instead of record).

Fix:	reordered interrupt locks
Fixed after Release: 3.3.8
Files modified: property.c bip_record.c
Name:	joachim
Date:	2.12.93

---
Number:	654
Name:	joachim
Date:	27.8.93
Topic:	dynamic predicates
What:	Sun3 crashes with BSI test:
	maxstructure(X), assert(X), maxstructure(Y), clause(Y).
	[ p_whoami_ is overwritten by clause/1]

Fix:	don't write TEND into n+1st argument in Meta_jmpA
Fixed after Release: 3.3.6
Files modified: emu.c
Name:	joachim
Date:	27.8.93

---
Number:	653
Name:	thom
Date:	29.7.93
Topic:	compiler,indexing
What:	The following should give the same code as standard append,
	but actually gets indexed on the 3rd argument:
	appm([],L2,L3) ?- L2=L3.
	appm([X|L1],L2,XL3) ?- XL3=[X|L3],appm(L1,L2,L3).

Fix:	I've made a compromise: matching clauses don't use =/2 for
	indexing. This is fairly secure, because a matching clause
	must have a nonvariable in the head and this is the argument
	to index upon.
Fixed after Release: 3.3.6
Files modified: section.c
Name:	micha
Date:	2.9.93

---
Number:	652
Name:	joachim
Date:	19.8.93
Topic:	I/O
What:	The standard pre-opened streams (input,output,error,...) don't
	have proper flags in case they are pipes or sockets.

Fix:	
Fixed after Release: 3.3.6
Files modified: io.c
Name:	joachim
Date:	20.8.93

---
Number:	651
Name:	joachim
Date:	17.8.93
Topic:	coroutining
What:	delayed_goals(a, DG) makes type error but should return []
	(broken since release 3.3)

Fix:	
Fixed after Release: 3.3.6
Files modified: coroutine.pl
Name:	micha
Date:	2.9.93

---
Number:	650
Name:	joachim
Date:	4.8.93
Topic:	delay
What:	the 'waking' flag (eager/lazy) of the bips works the wrong way round

Fix:	superseded by waking priorities
Fixed after Release: 
Files modified: 
Name:	
Date:	

---
Number:	649
Name:	mark
Date:	21.7.93
Topic:	compiler
What:	mrest([V1|Vars],OldMin,BM,BMT,AM,Remainder,OldVar,Var,Rest) :-
	    var_domain(V1,Dom),
	    dom_size(Dom,Min),
	    Min<OldMin, !,
	    BMT=[OldVar|AM],
	    NewBMT=Remainder,
	    NewAM=NewRemainder,
	    mrest(Vars,Min,BM,NewBMT,NewAM,NewRemainder,V1,Var,Rest).
	[NewRemainder not put correctly in nodbgcomp]

Fix:	Improved handling of temporaries in the body that occur also
	in a regular argument.
Fixed after Release: 3.3.6
Files modified: pass2.c body.c
Name:	micha
Date:	3.8.93

---
Number:	648
Name:	kulas@jupiter.informatik.uni-dortmund.de
Date:	26.7.93
Topic:	compiler,indexing
What:	[eclipse 1]: [user].
	 :- op(100, fy, $).
	 mu(X{$New}, $Old) ?- !.
	 mu(X{New}, $Old) ?- !. 
	 mu(X{New}, Old) ?- !, New \= $_. 
	 mu(New, $Old) ?- !, not meta(New).
	 mu(New, Old) :- not meta(New), constant(New).

	user       compiled traceable 940 bytes in 0.00 seconds

	yes.
	[eclipse 2]: mu(7, $4).

	no (more) solution.

Fix:	second switch ignores clauses known not to match
Fixed after Release: 3.3.6
Files modified: section.c compiler.h
Name:	micha
Date:	4.8.93

---
Number:	647
Name:	Jonathan M. Lever <jml@doc.ic.ac.uk>
Date:	27.7.93
Topic:	compiler,indexing
What:	[eclipse 1]: [user].
	 p(X) :- free(X), !, writeln(free).
	 p(_).
	 user       compiled traceable 156 bytes in 0.02 seconds

	yes.
	[eclipse 2]: p(X{a}).
	free

Fix:	The path cannot be always shared
Fixed after Release: 3.3.6
Files modified: section.c
Name:	micha
Date:	4.8.93

---
Number:	646
Name:	brisset
Date:	27.7.93
Topic:	element/3
What:	[eclipse 4]: L = [X, 1], X = 2, [A, B]::1..10, element(A, L, B), A = 1.

	no (more) solution.
	[eclipse 5]: L = [2,1], [A, B]::1..10, element(A, L, B), A = 1.

	L = [2, 1]
	B = 2
	A = 1
	yes.

Fix:	added dereferencing in p_index_values
Fixed after Release: 3.3.6
Files modified: bip_domain.c
Name:	joachim
Date:	27.7.93

---
Number:	645
Name:	joachim
Date:	26.7.93
Topic:	dump/1
What:	doesn't expand filenames

Fix:	
Fixed after Release: 3.3.6
Files modified: io.pl
Name:	joachim
Date:	26.7.93

---
Number:	644
Name:	brisset
Date:	19.7.93
Topic:	import_from
What:	import ... from ... does not check its second argument
	and makes a mess if it's wrong.

Fix:	added check
Fixed after Release: 3.3.6
Files modified: bip_module.c kernel.pl
Name:	joachim
Date:	26.7.93

---
Number:	643
Name:	micha
Date:	19.7.93
Topic:	debugger
What:	'F' - fast skip does not work (long time now)

Fix:	
Fixed after Release: 
Files modified: 
Name:	cannot be reproduced
Date:	

---
Number:	642
Name:	kostka@darmstadt.gmd.de
Date:	15.7.93
Topic:	subcall
What:	subcall( (X > 0, Y > 0, X = 3) , DG).
	Y = Y
	X = 3
	DG = [3 > 0, Y > 0]

Fix:	insert true in subcall/3
Fixed after Release: 3.3.6
Files modified: coroutine.pl
Name:	joachim
Date:	15.7.93

---
Number:	641
Name:	brisset
Date:	15.7.93
Topic:	syntax errors
What:	[eclipse 1]: chr_lee(2 lee 1, _KF_g6128_g50, _PA_g6134_g48) = chr_lee__0(_g14810 lee Shared_Var_g15070, KF1_g14846, _g14702 lee _g14704, PA_g15024).
	syntax error: postfix/infix operator expected
	| chr_lee(2 lee 1, _KF_g6128_g50, _PA_g6134_g48) = chr_lee__0(_g14810 lee Shared_Var_g15070, KF1_g14846, _g14702 lee _g14704, PA_g15024).
	|             ^ here
	illegal stream mode in seek(toplevel_input, 13)

Fix:	reading string only up the buffer end for tty's
Fixed after Release: 3.3.6
Files modified: events.pl (should be also bip_io.c)
Name:	micha
Date:	4.8.93

---
Number:	640
Name:	kish@cs.bris.ac.uk
Date:	12.7.93
Topic:	compiler
What:	[eclipse 2]: compile(user).
	 o([p(Arg,Tmp)|T],Tmps,S) :- !,
		  i([Arg|S],Tmp,Tmps,p(Arg,Tmp)).
	   
	*** Warning: Singleton variables in clause 1 of o/3: T
	Compiler internal error: file "body.c":303

Fix:	A previous fix was wrong
Fixed after Release: 3.3.6
Files modified: body.c
Name:	micha
Date:	4.8.93

---
Number:	639
Name:	norbert
Date:	6.7.93
Topic:	exec/3
What:	[eclipse 1]: exec(asdf, [], X).

	X = 22234
	yes.
	[always succeeds]

Fix:	It is quite difficult to check that before forking, so the child just
	print an error message.
Fixed after Release: 3.3.6
Files modified: bip_io.c
Name:	micha
Date:	

---
Number:	638
Name:	joachim
Date:	2.7.93
Topic:	emulator
What:	[eclipse 1]: [user]. 
	:- mode p(-). 
	p([1]). 
	 user       compiled traceable 64 bytes in 0.00 seconds

	yes.
	[eclipse 2]: p([1]).
	Segmentation violation - maybe machine stack overflow
	[Get_constant with two compound terms]

Fix:	let it fail like other mode violations
Fixed after Release: 3.3.8
Files modified: emu_util.c
Name:	joachim
Date:	1.12.93

---
**********************************************************
 VERSION 3.3.6 INSTALLED 30.06.93
**********************************************************
---
Number:	637
Name:	nabiel
Date:	29.6.93
Topic:	syntax errors from a socket
What:	the error handler fails and nothing is reported

Fix:	changed bips to accepts sockets
Fixed after Release: 3.5.5
Files modified: bip_io.c
Name:	micha
Date:	29.6.93

---
Number:	636
Name:	micha
Date:	28.6.93
Topic:	lexer
What:	.% is not a fullstop

Fix:	
Fixed after Release: 3.3.5
Files modified: lex.c
Name:	micha
Date:	28.6.93

---
Number:	635
Name:	bieker@ls12z.informatik.uni-dortmund.de
Date:	23.6.93
Topic:	heap copy
What:	bad type in _copy_term_to_heap: 0x1553f0
	in large application with suspensions

Fix:	copy routines did not treat woken suspensions properly
Fixed after Release: 3.3.5
Files modified: property.c
Name:	joachim
Date:	24.6.93

---
Number:	634
Name:	lisitt@vm.ci.uv.es
Date:	21.6.93
Topic:	debugger
What:	[eclipse 1]: lib(domain), element(K,[2,3,3,6],P),K=1. 

	P = 2
	K = 1
	yes.
	[eclipse 2]: debug.

	yes.
	Debugger switched on - leap mode
	[eclipse 3]: element(K,[2,3,3,6],P),K=1. 

	no (more) solution.

Fix:	added missing code
Fixed after Release: 3.3.5
Files modified: bip_domain.c
Name:	micha
Date:	28.6.93

---
Number:	633
Name:	lisitt@vm.ci.uv.es
Date:	21.6.93
Topic:	lib(domain)
What:	[eclipse 2]:  X::1..10, 3*X #= 5.
	X = 1

Fix:	didn't test the constant
Fixed after Release: 3.3.4
Files modified: domain.pl
Name:	micha
Date:	28.6.93

---
**********************************************************
 VERSION 3.3.5 INSTALLED 18.06.93
**********************************************************
---
Number:	632
Name:	stolzen@mailhost.uni-koblenz.de
Date:	9.7.93
Topic:	toplevel
What:	[eclipse 1]: compile(user).
	 delay membertest(X,_) if var(X).
	 membertest(X,[X|_]).
	 membertest(X,[_|L]) :- membertest(X,L).
	 user       compiled traceable 380 bytes in 0.00 seconds

	yes.
	[eclipse 2]: membertest(X,[A,B]), X=x.

	A = x
	B = B
	X = x
	yes.	[ the woken choicepoint is cut ]

Fix:	force waking before get_cut in toplevel
Fixed after Release: 3.3.4
Files modified: kernel.pl
Name:	joachim
Date:	9.6.93

---
Number:	631
Name:	stolzen@mailhost.uni-koblenz.de
Date:	9.7.93
Topic:	compiler
What:	[eclipse 1]: compile(user).
	 :- mode test(-).
	 test(_{attr}).
	 Compiler internal error: file "body.c":306

Fix:	
Fixed after Release: 3.4.4
Files modified: head.c body.c pass2.c
Name:	micha
Date:	29.5.94

---
Number:	630
Name:	thom
Date:	7.6.93
Topic:	modules, call_explicit, error handlers
What:	[eclipse 1]: [user].
	 :- tool(c/1,c/2).
	 c(99,M) :- writeln(c(99,M) is called).

	yes.
	[eclipse 2]: local((>)/2), call_explicit(c>9, sepia_kernel).
	c(99, eclipse) is called
	calling an undefined procedure 99 > 9 in module eclipse
	[ When the handler re-calls the culprit, the call_explicit
	  information is no longer available. The culprit should be:
	  (99>9) @ eclipse in sepia_kernel
	]

Fix:	
Fixed after Release: 
Files modified: 
Name:	**** Not Yet Fixed ****	(transferred to bugzilla bug 1)
Date:	

---
Number:	629
Name:	pierre
Date:	2.6.93
Topic:	setarg
What:	Spurious interrupt in rational constraints solver
	(reference above top of global stack)

Fix:	corrected the trail check in assign()
Fixed after Release: 3.3.4
Files modified: emu_c_env.c
Name:	joachim
Date:	3.6.93

---
Number:	628
Name:	thom
Date:	2.6.93
Topic:	debugger
What:	[eclipse 4]: call(notrace).
	  (1) 0  CALL   call(notrace) (dbg)?- no debug	% typed 'n'

	  yes.
	  Debugger switched on - creep mode

Fix:	debug.pl queries only the local flags, not the global ones
Fixed after Release: 3.3.4
Files modified: debug.pl
Name:	micha
Date:	3.6.93

---
Number:	627
Name:	joachim
Date:	2.6.93
Topic:	booting
What:	.eclipserc is loaded even when ECLIPSEINIT is set to ""

Fix:	moved a cut
Fixed after release: 3.3.4
Files modified: kernel.pl
Name:	joachim
Date:	2.6.93

---
**********************************************************
 VERSION 3.3.4 INSTALLED 28.05.93, 12 not yet fixed
**********************************************************
---
Number:	626
Name:	joachim
Date:	28.5.93
Topic:	memory manager?
What:	
	[eclipse 2]: nodbgcomp,[user].
	 fac(0, F0, F) :- !, F=F0.
	 fac(N, F0, F) :- N1 is N-1, F1 is F0*N, fac(N1, F1, F).
	 user       compiled optimized 200 bytes in 0.00 seconds

	yes.
	[eclipse 3]: fac(10000,1,F).
	Spurious interrupt in protected code!!!

Fix:	An extra page was freed when a multiple of the pagesize was
	deallocated with free_size()
Fixed after Release: 3.3.4
Files modified: mem.c
Name:	joachim
Date:	3.6.93

---
Number:	625
Name:	brisset
Date:	25.5.93
Topic:	compiler
What:	
	[eclipse 1]: [user], set_flag(output_mode,"QMP").
	 p(Set, (X | Constraints)) :- Set = _{set(X,Constraints)}.
	 user       compiled traceable 160 bytes in 0.00 seconds

	yes.
	[eclipse 3]: p(A, X|X<0).

	A = A{set(X < 0, A)}	% arguments of set/2 are wrong
	X = X
	yes.

Fixed:	constructed structure before incrementing sp
Release not fixed  
Files modified: body.c
Name:	micha
Date:	27.5.93

---
Number:	624
Name:	micha
Date:	25.5.93
Topic:	operators
What:	The events 73 and 74 are raised *after* actually redefining the
	operator, so changing the handlers does not affect the outcome.

Fixed:	
Release not fixed  
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number:	623
Name:	micha
Date:	25.5.93
Topic:	operators
What:	[eclipse 18]: local_op(300, fx, a).

	yes.
	[eclipse 19]: global_op(300, fx, a).

	no (more) solution.
Fixed:	_insert_op confused visibility and error codes
Release not fixed  
Files modified: operator.c
Name:	micha
Date:	25.5.93

---
Number:	622
Name:	micha
Date:	24.5.93
Topic:	load+save
What:	when calling load/1 and save/1, whoami is set to the binary and
	thus the system tries to remove it in exit/1 (linked to fix #599)
	Similarly, whoami must not be restored from the saved state.

Fixed:	whoami and vers are preserved through save and restore
Release not fixed  
Files modified: sav_res.c
Name:	micha
Date:	25.5.93

---
Number:	621
Name:	Labouze Pascal <pascal@scorpio>
Date:	14.5.93
Topic:	megalog
What:	External function returned invalid code in bang_retr_page(1715304, _g1326586)

Fixed:	does not occur any longer
Release fixed  
Files modified: 
Name:	
Date:	

---
**********************************************************
 VERSION 3.3.3 INSTALLED 13.05.93
**********************************************************
---
Number:	620
Name:	kostka@darmstadt.gmd.de
Date:	13.5.93
Topic:	mapped stacks
What:	% xeclipse
	INTERNAL ERROR: alloc_stack_pair()
	INTERNAL ERROR: alloc_stack_pair()
	stack page already mapped
	[ can happen when running on a machine whose pagesize is larger
	  than the one where it has been installed from - joachim ]

Fixed:	Align stacks to at least 64K which is hopefully bigger than any pagesize
Release not fixed  
Files modified: mem.c
Name:	joachim
Date:	19.5.93

---
Number:	619
Name:	joachim
Date:	16.5.93
Topic:	debugger
What:	var skip does not stop when variable is bound to a metaterm

Fixed:	
Release not fixed  
Files modified: debug_opt.c
Name:	micha
Date:	28.5.93

---
Number:	618
Name:	joachim
Date:	13.5.93
Topic:	debugger
What:	Debugging interrupt handlers is broken
	(get port not implemented message)

Fixed:	
Release not fixed  
Files modified: debug.c
Name:	joachim
Date:	13.5.93

---
Number:	617
Name:	micha
Date:	10.5.93
Topic:	debugging
What:	debugging/0 does not print spied predicates

Fixed:	
Release not fixed  
Files modified: debug.pl
Name:	micha
Date:	10.5.93

---
Number:	616
Name:	micha
Date:	10.5.93
Topic:	interrupts
What:	<after running approx. 1 hour and typing ^Z:>
	^ZSpurious interrupt in protected code!!!
	Trying to abort...

Fixed:	Synchronous interrupt handlers inside emulator were expected to
	be prolog predicates, crashed with C ones ...
Release not fixed  
Files modified: emu.c code.c opcode.h &c
Name:	joachim
Date:	13.5.93

---
Number:	615
Name:	micha
Date:	6.5.93
Topic:	compile/1
What:	[eclipse 3]: ['fdgjfgh/fdgjfh'].

	no (more) solution.	(no event)

Fixed:	kernel.pl
Release not fixed  
Files modified: 
Name:	micha
Date:	25.5.93

---
Number:	614
Name:	boettche@darmstadt.gmd.de (Martin Boettcher)
Date:	6.5.93
Topic:	metacalled ;
What:	[eclipse 1]: (X = 1 ; X = 2) , (Y = 3 ; Y = 4) .

	X = 1
	Y = 3     More? (;) 

	X = 1
	Y = 4
	yes.

Fixed:	The Meta_jmp instruction has to take the DET flag into account
Release not fixed  
Files modified: emu.c
Name:	joachim
Date:	7.5.93

---
Number:	613
Name:	moser@informatik.tu-muenchen.de
Date:	30.4.93
Topic:	command line options
What:	acrab28% eclipse -goal a
	Not enough space for the global/trail stack
	(i.e. -g does not test the type of its arg and -goal
	is taken as -g)

Fixed:	
Fixed after Release: 3.4.3
Files modified: main.c
Name:	joachim,shyam
Date:	24.2.94

---
**********************************************************
 VERSION 3.3.2 INSTALLED 30.04.93, 9 not yet fixed
**********************************************************
---
Number:	612
Name:	micha
Date:	29.4.93
Topic:	profiler
What:	It prints garbage instead of predicates in locked modules

Fixed:	Private predicates in locked modules are now printed all together
	only under the module name, exported and global ones are printed
	normally. I had to change some of the low-level stuff to be
	able to extract the info even from locked modules.
Release not fixed  
Files modified: pdb.pl profile.pl kernel.pl debug.pl bip_db.c proc_desc.c
Name:	micha
Date:	29.4.93

---
Number:	611
Name:	joachim
Date:	28.4.93
Topic:	main
What:	
	acrab6% eclipse "a b"
	ECRC Common Logic Programming System [sepia opium megalog]
	Version 3.3.1, Copyright ECRC GmbH, Wed Apr  7 12:44 1993
	[eclipse 1]: argc(X).

	X = 3

Fixed:	Quoting needed in the bourne shell saved state script
Release not fixed  
Files modified: sav_res.c
Name:	joachim
Date:	29.4.93

---
Number:	610
Name:	mireille
Date:	15.3.93
Topic:	debugger
What:	When metacalling an undefined predicate, the call-port
	is not traced any more in releases >= 3.3
	[eclipse 2]: p.
	N (1) 0  CALL   error_handler(68, p, eclipse) (dbg)?- creep
	[ This is due to the recent simplifications
	  of the engine-debugger interface (joachim) ]

Fixed:	Let's say it's a feature. We might not even have a pri, so
	it would need ugly hacking to trace it nevertheless.
Release not fixed  
Files modified: 
Name:	joachim
Date:	

---
Number:	609
Name:	mark
Date:	23.4.93
Topic:	setarg and gc
What:	Spurious wrong values in a finite domain program after gc.

Fixed:	removed incorrect trail optimization in assign(): When a pword is
	trailed multiply, the first trail must be able to restore the complete
	thing (rather than only the first modification) because subsequent
	trail entries may be collected by the gc.
Release not fixed  
Files modified: emu_c_env.c
Name:	joachim
Date:	23.4.93

---
Number:	608
Name:	micha
Date:	22.4.93
Topic:	domains
What:	In dom_intersection Return_Unify was missing and thus the result
	may have been wrong if the predicate failed

Fixed:	lint
Release not fixed  
Files modified: bip_domain.c
Name:	micha
Date:	22.4.93

---
Number:	607
Name:	micha
Date:	21.4.93
Topic:	indexing
What:	The symbolic differentiation perf program was badly indexed;
	repeated structures were not recognized

Fixed:	
Release not fixed  
Files modified: section.c
Name:	micha
Date:	21.4.93

---
Number:	606
Name:	steph
Date:	21.4.93
Topic:	bagof/setof
What:	[eclipse 1]: bagof(X, X=_{a}, L).

	no (more) solution.
	[ However, bagof(X, Y^(X=Y{a}), L) works ok.
	  See also #562. It's not clear what should happen ... ]

Fixed:	[ doesn't occur any longer ]
Release not fixed  
Files modified: 
Name:	joachim
Date:	3.6.94

---
Number:	605
Name:	jeanmarc
Date:	19.4.93
Topic:	compiler
What:	Compiling suspensions
	[eclipse 1]: coroutine, X>0, assert(p(X)), p(1).
	Spurious interrupt in protected code!!!
	Trying to abort...

Fixed:	compile all suspensions into pointers to a static woken one
Release not fixed  
Files modified: head.c body.c procedure.c
Name:	joachim
Date:	29.4.93

---
Number:	604
Name:	joachim
Date:	15.3.93
Topic:	compiler
What:	m :- meta(X{a}).
	m fails when called.  That's because the argument on the
	local stack is a TREF to the metaterm, i.e. it is not
	dereferenced as the bip expects...
	[rare case, will probably disappear once we allow all
	 variable tags as references]
	 [cannot be easily fixed because some temporaries are allocated
	 in the puts'ed cells and puts_value would not dereference them]

Fixed:	
Release not fixed  
Files modified: 
Name:	Fixed (no longer allowed)
Date:	

---
Number:	603
Name:	joachim
Date:	15.3.93
Topic:	compare_instances
What:	
	[eclipse 1]: compare_instances(Rel,s(X{a},Y{b}), s(Z,Z), L).

	Rel = >
	X = X
	Y = Y
	Z = Z
	L = [[Y|X], [X|Z]]	% wrong
	yes.

Fixed:	
Release not fixed  
Files modified: 
Name:	**** Not Yet Fixed ****
Date:	

---
Number:	602
Name:	joachim
Date:	15.3.93
Topic:	doubles
What:	Chat doesn't work with double floats
	(crashes in compare_terms())

Fixed:	typo in compare_terms()
Fixed after Release: 3.3.8
Files modified: bip_comp.c
Name:	joachim
Date:	10.1.94

---
Number:	601
Name:	joachim
Date:	15.3.93
Topic:	debugger
What:	wake skip doesn't work
	[eclipse 3]: set_leash(delay,stop).

	yes.
	[eclipse 6]: delay(X,write(99)), true,X=1.
	  (1) 0  CALL   delay(X, write(99)) (dbg)?- creep
	C (2) 0  DELAY  write(99) (dbg)?- wake
	Segmentation violation - maybe machine stack overflow
	Aborting execution....
	( w uses the DE register which is now not always valid
	  in the delay port )

Fixed:	use LD when DE is invalid (but should be done differently)
Release not fixed  
Files modified: debug_opt.c
Name:	joachim
Date:	29.4.93

---
Number:	600
Name:	brisset
Date:	26.3.93
Topic:	debugger
What:	an inlined goal is retried:
	[eclipse 1]: [user].
	 loop :- \+ toto, loop.
	 toto :- fail.

	[eclipse 2]: trace.

	yes.
	Debugger switched on - creep mode
	[eclipse 4]: loop.
	  (1) 0  CALL   loop (dbg)?- creep
	  (2) 1  CALL   not/1 (dbg)?- skip
	  (2) 1  EXIT   not/1 (dbg)?- creep
	  (5) 1  CALL   loop (dbg)?- retry (3)
	  retrying (2)
	  (2) 1  CALL   not/1 (dbg)?- creep
	N (3) 2  CALL   locked_access_handler(82, loop) (dbg)?- creep

Fixed:	forbid retrying frames with UNAV_ARGS flag
Release not fixed  
Files modified: debug_opt.c
Name:	joachim
Date:	29.4.93

---
**********************************************************
 VERSION 3.3.1 INSTALLED 7.4.93, 5 not yet fixed
**********************************************************
---
Number:	599
Name:	micha
Date:	4.3.93
Topic:	saved states
What:	Saved state done after dynamic loading has bad whoami:
	[sepia_kernel 6]: getval(whoami, X).

	X = "/tmp/eclipse.6398.0"
	and so new dynamic loding (e.g. calling lib(kb)) is not possible.

Fixed:	
Release not fixed  
Files modified: sav_res.c, bip_load.c, top.pl
Name:	micha
Date:	5.3.93

---
**********************************************************
 VERSION 3.3 INSTALLED 1.4.93
**********************************************************
---
Number:	598
Name:	matsc@sics.se
Date:	12.1.93
Topic:	parser
What:	{ } not parsed, {/**/} not parsed, dynamic/**/(a, b, c) parsed as /3.

Fixed:	
Release not fixed  
Files modified: lex.c read.c
Name:	micha
Date:	1.2.93

---
Number:	597
Name:	joachim
Date:	22.1.93
Topic:	dcg
What:	
	[eclipse 6]: [user].
	 _ --> _.
	 user       compiled traceable 28 bytes in 0.00 seconds
	type error in call(-126, -126)

	*** compilation aborted in the file user

Fixed:	trafo_clause did not handle the PTHROW case
Release not fixed  
Files modified: procedure.c bip_db.c
Name:	micha
Date:	22.1.93

---
Number:	596
Name:	cleary@cpsc.ucalgary.ca (John Cleary)
Date:	28.12.92
Topic:	failed query in a compiled file changes cwd (prerelease only)
What:	[eclipse 1]: getcwd(X), (['sepia4/bug'];true), getcwd(Y).

	*** compiled query failed: fail

	X = "/auto/home/scorpio12/micha/"
	Y = "/auto/home/scorpio12/micha/sepia4/"

Fixed:	
Release not fixed  
Files modified: kernel.pl
Name:	joachim
Date:	22.1.93

---
Number:	595
Name:	cleary@cpsc.ucalgary.ca (John Cleary)
Date:	2.10.92
Topic:	writeq
What:	At least writeq has to print the full precision:
	[sepia]: X is 1.0000006.
	X = 1.0
	yes.
	[sepia]: X is 1.0000006, X=1.0.
	no (more) solution.

Fixed:	using new function float_to_string()
Release not fixed  
Files modified: write.c bip_tconv.c
Name:	joachim
Date:	7.1.93

---
Number:	594
Name:	cleary@cpsc.ucalgary.ca (John Cleary)
Date:	14.12.92
Topic:	parser/lexer
What:	
	[eclipse 2]: Y = -16777216.0.
	Y = -(1.67772e+07)
	yes.
	[eclipse 3]: Y = -16777215.0.
	Y = -(1.67772e+07)
	yes.

Fixed:	
Release not fixed  
Files modified: lex.c read.c
Name:	joachim
Date:	2/93

---
Number:	593
Name:	mkshen@lrz.lrz-muenchen.dbp.de
Date:	11.12.92
Topic:	parser/lexer/handlers
What:	integer overflow checking
	[eclipse 2]: X = 12345678901234567890.
	X = -350287150

Fixed:	
Release not fixed  
Files modified: lex.c
Name:	joachim
Date:	2/93

---
Number:	592
Name:   mkshen@lrz.lrz-muenchen.dbp.de
Date:	11.12.92
Topic:	==
What:	[eclipse 1]: recorda(k,a,R1), recorda(k,b,R2), R1==R2.
	R1 = 16'1ea908
	R2 = 16'1ea918

Fixed:	diff routine now used to implement ==/2
Release not fixed  
Files modified: emu.c
Name:	joachim
Date:	

---
Number:	591
Name:	mkshen@lrz.lrz-muenchen.dbp.de
Date:	11.12.92
Topic:	source lines
What:	
	[eclipse 1]: [t].
	t.pl       compiled traceable 120 bytes in 0.02 seconds
	yes.
	[eclipse 2]: get_flag(a/1,source_line,A),get_flag(b/1,source_line,B).
	A = 2
	B = 1
	where the first line of t.pl is:
	a(1). b(2).

Fixed:	StreamLine was initialized with 0; the line number is now obtained
	directly from the parser and thus precise.
Release not fixed  
Files modified: io.c read.c procedure.c
Name:	micha
Date:	22.1.93

---
Number:	590
Name:	joachim
Date:	9.12.92
Topic:	compiler
What:	The following is compiled as simple if-then-else, which is wrong:
	[eclipse 9]: [user].
	 p(X) :- X=s(a,b) -> true ; writeln(X).
	 user       compiled traceable 228 bytes in 0.02 seconds

	yes.
	[eclipse 10]: p(s(Z,c)).
	s(a, c)

	Z = a		% Z is not untrailed
	yes.

Fixed:	counting args of compound terms in the condition
Release not fixed  
Files modified: pass2.c
Name:	micha
Date:	22.1.93

---
Number:	589
Name:	micha
Date:	4.11.92
Topic:	compiler
What:	p(f(X), g(X)).
	:- define_local_macro(f/1, p/2, []).
	q(f(X)) :- !, write(f).
	q(h(X)).
	[eclipse 9]: q(h(X)).
	f

Fixed:	[already fixed in the development version]
Release not fixed  
Files modified: 
Name:	micha
Date:	

---
Number:	588
Name:	cleary@cpsc.ucalgary.ca (John Cleary)
Date:	1.10.92
Topic:	floats
What:	negative 0.0 can appear:
	[sepia]: X is -0.0, X = 0.0.

	no (more) solution.
	Behaviour for ==/2 and head unification depends on version.
	compare/3 says they are equal.

Fixed:	unification changed to use float comparison, so they unify.
	write changed to suppress the minus sign.
Release not fixed  
Files modified: emu.c emu_c_env.c write.c
Name:	joachim
Date:	7.8.93

---
Number:	587
Name:	Kjell Post <kjell@cse.ucsc.edu>
Date:	13.10.92
Topic:	argv
What:	In a saved state there are the -r file arguments in argv, although
	the user didn't put the explicitly. We'd rather put them
	at the end and then explicitly erase in/before restore.

Fixed:	They are now removed from argv[]
Release not fixed  
Files modified: main.c
Name:	joachim
Date:	15.12.92

---
Number:	586
Name:	Kjell Post <kjell@cse.ucsc.edu>
Date:	10.10.92
Topic:	quintus
What:	$ sepia file.y
	SEPIA Version 3.1.3, Thu Jan 30 13:32 1992 Copyright ECRC GmbH
	[sepia]: quintus, unix(argv(L)).
	file.y
	    ^ (here?)
	syntax error: postfix/infix operator expected
	string contains unexpected characters in term_string(_g301, 

Fixed:	don't use term_string
Release fixed  
Files modified: quintus.pl
Name:	joachim
Date:	11.10.92

---
Number:	585
Name:	Kjell Post <kjell@cse.ucsc.edu>
Date:	7.10.92
Topic:	dynamic predicates (is also in 3.1.3)
What:	[eclipse 1]: dynamic(p/1), asserta(p(1)), assert(p(0)), p(1).

	no (more) solution.

Fixed:	asserta of first clause did not set the last clause pointer
Release fixed  
Files modified: bip_db.c
Name:	joachim
Date:	16.11.92

---
Number:	584
Name:	thom
Date:	29.9.92
Topic:	lexer
What:	
	[eclipse 7]:  X is 2147483647e2147483647.

	X = Inf
	yes.
	[eclipse 8]: X is 2147483647e2147483647.
	X is 2147483647e2147483647.
				 ^ (here?)
	syntax error: illegal character

	[eclipse 5]: X is 2147483647e2147483647,  -(29.2333, 29.1167, _g37);  -(29.2333, 29.1167, _g37).

	X = Inf
	_g37 = 0.1166     More? (;) 
	arithmetic exception in -(29.2333, 29.1167, _g37)

Fixed:	overflow in double->float conversion in number_string/2 was not caught
Release not fixed  
Files modified: bip_tconv.c
Name:	joachim
Date:	16.11.92

---
Number:	583
Name:	volker
Date:	17.9.92
Topic:	portray(?)
What:	
	Version 3.2.1, Copyright ECRC GmbH, Tue Aug 11 19:04 1992
	[eclipse 1]: lib(domain).
	[eclipse 2]: [user].
	 p(1..2).

	yes.
	[eclipse 3]: p(X).

	X = {BAD_TERM_0x3_0x161}

Fixed:	indexing bug in compiler
Release fixed  
Files modified: section.c
Name:	micha
Date:	31.8.92

---
Number:	582
Name:	so10150@rzaix315.rrz.uni-hamburg.de (G.Grasshoff)
Date:	11.9.92
Topic:	parser
What:	These two terms are parsed differently (^M comes from a DOS file):
	not
 (a, b).
	not (a, b).

Fixed:	The parser did explicitly (!) access the stream buffer and checked
	the preceding character, but not its class. Defined a new token
	for <space>(
Release not fixed  
Files modified: read.c lex.c lex.h
Name:	micha
Date:	15.9.92

---
Number:	581
Name:	joachim
Date:	11.9.92
Topic:	compiler
What:	[eclipse 1]: [user].
	p(X) :- writeln(call),fail.
	p(X) :- var(X), writeln(delay), !.	% var/1 is missing in the code
	p(X) :- writeln(execute),fail.
	p([]) :- writeln(clause1).
	p([_|_]) :- writeln(clause2).
	p(X) :- writeln(fail),fail.

Fixed:	
Release not fixed  
Files modified: 
Name:	micha
Date:	

---
Number:	580
Name:	micha
Date:	14.9.92
Topic:	global/1
What:	[eclipse 1]: external(s/1), global(s/1), get_flag(s/1, call_type, T).

	T = b_external

Fixed:	
Fixed after Release: 3.4.5
Files modified: bip_module.c
Name:	micha
Date:	23.9.94

---
Number:	579
Name:	norbert
Date:	4.9.92
Topic:	heap
What:	[eclipse 1]: socket(internet, stream, s).
	yes.
	[eclipse 2]: connect(s, acrab6 / 1177).	%(port gotten from server)
	yes.
	[eclipse 3]: close(s).
	INTERNAL ERROR: hg_free() bad magic number

Fixed:	StreamLexAux is used for other purposes in sockets and was not reset
Release fixed  
Files modified: io.c
Name:	micha
Date:	4.9.92

---
Number:	578
Name:	norbert
Date:	3.9.92
Topic:	connect/2
What:	connect(0/0) makes an error rather succeeding as documented

Fixed:	
Release fixed  
Files modified: bip_io.c
Name:	micha
Date:	3.9.92

---
Number:	577
Name:	norbert
Date:	1.9.92
Topic:	system errors
What:	It is not possible to find out the errno value in the user program.

Fixed:	defined flag last_errno
Release not fixed  
Files modified: environment.pl
Name:	micha
Date:	3.9.92

---
Number:	576
Name:	jeanmarc
Date:	27.8.92
Topic:	compiler
What:	delay pp(X,Y,aa) if var(X), var(Y).
	pp(X,Y,_) :- nonvar(X), !.
	pp(_,Y,aa).
	[eclipse 2]: pp(A, a, aa).
	 
	 no (more) solution.

Fixed:	
Release fixed
Files modified: section.c
Name:	micha
Date:	31.8.92

---
Number:	575
Name:	lasergui@deis36.cineca.it (Lasagni-Guidotti)
Date:	21.7.92
Topic:	metaterms
What:	
[eclipse 1]: [user].
	 :- coroutine.
	t(X, Y) :-
		X > 0,
		Y > 0,
		meta_term(X, 1),
		meta_term(Y, 1),
		meta_term(C, 1),
		meta_bind(X,C),
		meta_bind(Y,C).         
	[eclipse 2]: t(X, Y).
	X = X
	Y = Y		<------ X is not equal to Y
	This is because TMETA(C) + TDELAY(X) and TMETA(C) + TDELAY(Y)
	are pushed on the woken stack, the first call of wake_meta_handler
	changes the value of C to Ref(TG) and the second pair is misinterpreted
	and C thought to be still TMETA.

Fixed:	does not occur any more in new metaterm implementation
Files modified: 
Name:	joachim
Date:	11/92

---
Number:	574
Name:	micha
Date:	24.8.92
Topic:	compiler/indexing
What:	[eclipse 1]: [user].
	 p(0).
	 p(_).
	 user       compiled traceable 184 bytes in 0.00 seconds

	 yes.
	 [eclipse 4]: p(-1).

	 no (more) solution.

Fixed:	the labels for default cases were Fail instead of default
Release fixed
Files modified: section.c
Name:	micha
Date:	24.8.92

---
Number:	573
Name:	andras@itc.icl.ie
Date:	20.8.92
Topic:	compiler
What:	[sepia]: [user].
	test(A) :- (A=1;A+2->writeln(ha);writeln(hi)).
	compiler error: clause 1 of test/1 - -> variable trimmed

Fixed:	testing if the variable exists, added new Compiler tests
Release fixed  
Files modified: pass3.c
Name:	micha
Date:	24.8.92

---
Number:	572
Name:	steven
Date:	14.8.92
Topic:	compiler
What:	:- coroutine, mode call_dog(+).
	call_dog([]).
	call_dog(G) :-
	   (G=dog(0) -> true ;   true).
	compiles without a resume instruction.

Fixed:	The mode info was not reset after the first clause
Release fixed
Files modified: section.c
Name:	micha
Date:	14.8.92

---
**********************************************************
 VERSION 3.2.1 INSTALLED 11.8.92, 5 not yet fixed
**********************************************************
---
Number:	571
Name:	jacques
Date:	31.7.92
Topic:	arithmetic
What:	I would rather expect a type error:
	[sepia 1]: 1 is 1.0.
	number expected in 1 is 1.0

Fixed:	
Files modified: boot_bips.pl
Name:	joachim
Date:	31.7.92

---
Number:	570
Name:	joachim
Date:	30.7.92
Topic:	saved state
What:	gc_interval is reinitialised when starting a saved core, it is
	not possible to make a saved core with a modified gc_interval

Fixed:	Not fixed - The problem is that a saved state may be started with
	a different stack size and then we have a conflict between keeping
	the old gc_interval or initializing it to 1/8 of the new stack size.
Files modified: 
Name:	joachim
Date:	

---
Number:	569
Name:	volker
Date:	30.7.92
Topic:	
What:	cwd not reset after trying to compile a nonexistent file
	in another directory

Fixed:	
Files modified: boot_bips.pl
Name:	joachim
Date:	30.7.92

---
Number:	568
Name:	joachim
Date:	29.7.92
Topic:	coroutine
What:	Resume missing before call to f/0:

	[sepia 1]: coroutine,nodbgcomp,[user].
	 p(X) :- functor(X,a,0), f.
	 f :- fail.
	 delay notify(X) if var(X).
	 notify(X) :- writeln(X).
	 user       compiled optimized 148 bytes in 0.03 seconds

	yes.
	[sepia 2]: notify(X), p(X).

	no (more) solution.

Fixed:	
Files modified: body.c
Name:	micha
Date:	5.8.92

---
Number:	567
Name:	jacques
Date:	28.7.92
Topic:	delay clauses
What:	matching is broken:

	[sepia 2]: [user].
	 delay p(f(X)) if var(X).
	 p(_).
	 user       compiled traceable 112 bytes in 0.00 seconds

	yes.
	[sepia 3]: p(X).

	X = f(X)

Fixed:	
Files modified: head.c
Name:	micha
Date:	5.8.92

---
Number:	566
Name:	micha
Date:	15.7.92
Topic:	DCG
What:	trdcg does not handle disjunctions ok:
	[sepia 5]: read(X), write(X).
	    p --> ({true};[a]).
	    p(_g353, _g353) :- ( true ; _g353 = [a|_g353]).
	and a cyclical reference is created. The links from the disjunction
	branches must not be just unified, one has to make sure that
	in both branches the links either remain unchanged or both change.

Fixed:	
Files modified: macro.pl
Name:	joachim
Date:	3.8.92

---
Number:	565
Name:	joachim
Date:	9.7.92
Topic:	dictionary GC
What:	When importing from a non-existing module, the module did is stored
	in the module_ref field of the imported predicate descriptor,
	but not marked on GC. So the did may be collected as long as the
	module property does not yet exist. There may be a similar problem
	with import/1.

Fixed:	the ugly way, marked the did as permanent
Files modified: bip_module.c
Name:	joachim
Date:	19.11.92

---
Number:	564
Name:	stefano
Date:	29.6.92
Topic:	current_predicate/1
What:	current_predicate(X), X=atom/1 fails, current_predicate(atom/1) succeeds

Fixed:	the test-case succeeded for builtins as well, added a check
Files modified: db.pl
Name:	joachim
Date:	30.6.92

---
**********************************************************
 VERSION 3.2.0 (eclipse) INSTALLED 29.6.92, 4 not yet fixed
**********************************************************
---
Number:	563
Name:	stefano
Date:	10.6.92
Topic:	get_stream_info
What:	The offset function returns 0 always. at/2 works fine though.
	[sepia]: open(rf4,read,s), read(s,X).
	...
	[sepia]: get_stream_info(s,offset,Offset).
	Offset = 0
	yes.
	[sepia]: at(s,K).
	K = 34

Fixed:	
Files modified: bip_io.c
Name:	joachim
Date:	16.6.92

---
Number:	562
Name:	cleary@cpsc.ucalgary.ca (John Cleary)
Date:	9.6.92
Topic:	bagof + metaterms
What:	bagof substitutes variables back into the answers, however if the
	variable is a metaterm, this triggers the meta-unification and this
	is at least inefficient, sometimes it might be wrong.
	To correct this, the attribute of the copied variable should be first
	dropped, and only the the variable unified with the original one.
	Free variable in the attribute, however, must be handled separately.

Fixed:	if both variables are metaterms, the attribute of the solution
	is copied to the original variable
Files modified: setof.pl
Name:	micha
Date:	9.6.92

---
Number:	561
Name:	micha
Date:	3.6.92
Topic:	debugger
What:	:- coroutine.
	p:- q.
	q :- repeat, r.

	repeat does not exit properly. The exit port in repeat_code was
	commented out, no idea why. COnceptually it ought to be there.

Fixed:	
Files modified: code.c
Name:	micha
Date:	3.6.92

---
Number:	560
Name:	micha
Date:	27.5.92
Topic:	macro expansion
What:	crash because a machine stack location (the result of macro trafo)
	is trailed and untrailed only when it already holds new data.

Fixed:	globalize this variable when necessary
Files modified: read.c
Name:	joachim
Date:	27.5.92

---
Number:	559
Name:	micha
Date:	27.4.92
Topic:	compiler
What:	call_explicit(mode_(Pred, M), sepia_kernel) crashes the debugger

Fixed:	CALL_EXPLICIT bit was missing for built-ins
Files modified: pass3.c
Name:	micha
Date:	27.4.92

---
Number:	558
Name:	joachim
Date:	26.4.92
Topic:	dcg
What:	Manual example does not work:
	[sepia]: [user].
	  a --> ([])|([z],a).
	user       compiled traceable 88 bytes in 0.00 seconds

	yes.
	[sepia]: a(X,[]).
	calling an undefined procedure |([], ([z] , a), X, []) in module sepia

Fixed:	Transformation clause for |/2 was missing
Files modified: macro.pl
Name:	joachim
Date:	26.4.92

---
Number:	557
Name:	andras@itc.icl.ie
Date:	21/4/92
Topic:	~=/2
What:	[sepia]: X ~= 2, X = 3, f(T).
	X = 3
	T = T
	Delayed goals:
		3 ~= 2				WRONG! Should be f(T).
	yes.

Fixed:	Diff_del instruction did not reset DE on success
Files modified: emu.c
Name:	joachim
Date:	21.4.92

---
Number:	556
Name:	veron
Date:	27.2.92
Topic:	init
What:	sepia -g 31 makes the system crazy

Fixed:	added a check
Files modified: main.c
Name:	joachim
Date:	17.6.92

---
Number:	555
Name:	joachim
Date:	25.2.92
Topic:	dynamic & tool
What:	tools inherit the dynamic property from the body:
	[sepia]: assert(where(M):-writeln(M)), tool(where/0,where/1).

	yes.
	[sepia]: retract(where).
	Aborting execution....

Fixed:	inheritance of flags in tool/2
Files modified: bip_module.c
Name:	joachim
Date:	25.2.92

---
Number:	554
Name:	stefano
Date:	24.2.92
Topic:	string_list/2 does not cope with null character
What:	[sepia]: string_list(X,[0,0'a]),string_list(X,L).

	X = "\000a"
	L = []
yes.

Fixed:	strlen() was used rather than StringLength()
Files modified: bip_strings.c
Name:	joachim
Date:	24.2.92

---
Number:	553
Name:	stefano
Date:	24.2.92
Topic:	printf cannot print strings with null chars in them
What:	[sepia]:  string_list(X,[0,0'a]),printf("%s",X).

	X = "\000a"
	yes.

Fixed:	Fixed:  This should be considered a feature, otherwise we have to reimplement
	the full functionality of the C printf with sepia strings.
	When the full sepia string is wanted, %w can be used instead.
Files modified: 
Name:	joachim
Date:	24.2.92

---
Number:	552
Name:	micha
Date:	24.2.92
Topic:	compiler
What:	call_explicit(A=B, sepia_kernel) is taken as a simple condition
	in if-then-else

Fixed:	caller_procedure() zeroed the mode field
Files modified: proc_desc.c
Name:	micha
Date:	24.2.92

---
Number:	551
Name:	stefano
Date:	24.2.92
Topic:	read_string
What:	Several problems:
	top :-
		open(".login",read,InStream)
		, at(InStream,X)
		, writeln(before-X)
		, read_string(InStream,"",500000,Buffer1)
		, string_length(Buffer1,L)
		, writeln(length-L)
		, at(InStream,Y)
		, writeln(after-Y)
		, (at_eof(InStream) -> writeln(at_eof) ; writeln(not_at_eof))
		, read_string(InStream,"",500000,Buffer2)
		.

	The above shows the effect:
	before - 0
	length - 791
	after - 0		<--- position wrong
	not_at_eof		<--- EOF not recognised

	no.

	Even worse, it causes:
	GC internal error: illegal tag (36) in compact_and_udpate

Fixed:	The position was wrong because the last, unsuccessful fill_buffer()
	resetted the buffer pointer.
	The GC problem was caused by a missing increment of TG for the
	terminating zero in read_string/3,4.
Files modified: io.c bip_io.c
Name:	joachim
Date:	24.2.92

---
Number:	550
Name:	marc
Date:	10.2.92
Topic:	modules
What:	When there is a portray/2 visible to sepia_kernel, as soon as an error
	message tries to use it, there is a loop of messages about trying
	to access a locked module:
	assert(portray(_, _)), global(portray/2), [1].
	type error in trying to access a locked module in trying t...

Fixed:	the module tag was not passed from pwrite() to the recursive emulator
	that is used to execute portray.
Files modified: write.c
Name:	joachim
Date:	24.2.92

---
Number:	549
Name:	jacques
Date:	5.2.92
Topic:	erase_module
What:	It is possible to erase locked modules.

Fixed:	
Files modified: bip_module.c
Name:	micha
Date:	29.6.92

---
**********************************************************
 VERSION 3.1.3 INSTALLED 30.1.92, 5 not yet fixed
**********************************************************
---
Number:	548
Name:	kulas@siwa.informatik.uni-dortmund.de
Date:	14.1.92
Topic:	compiler
What:	Wrong code generated for
	go(L) :-
		L = [Aa, Bb, Cc],
		findall( X, member(X, L), L0),
		write(L).

	...
	Get_variableNAML          	2 A1 Y1 
	...
	Put_structureAM           	A2 member/2 
	Push_referenceAM          	A1 
	Push_local_valueAM        	A1 	<--- L should be taken from Y1
	Push_named_variable       	X 
	...

Fixed:	
Files modified: body.c
Name:	micha
Date:	22.1.92

---
Number:	547
Name:	micha
Date:	3.1.92
Topic:	lexer
What:	[sepia]: X=16'1<1.

	X = 449
	yes.

Fixed:	digit check for based integers was wrong
Files modified: lex.c
Name:	micha
Date:	3.1.92

---
Number:	546
Name:	philippe/joachim
Date:	27.11.91
Topic:	tools
What:	If a tool body is itself a tool, it does not get the module argument!

	[sepia]: tool(p/1,p/2), tool(p/0,p/1), [user].
	  p(X,Y) :- writeln(p(X,Y)).
	 user       compiled traceable 104 bytes in 0.02 seconds

	yes.
	[sepia]: p.
	p(sepia, BAD_TERM_0x101380_0xd)

	yes.

	[sepia]: tool(q/0,write/1).	% and the same problem with builtins

	yes.
	[sepia]: q.
	Aborting execution....

	[ The first case can be fixed by generating a proper Put-module-
	  instruction in tool/2.
	  For builtins, something equivalent would have to be done in the
	  Escape-instruction, but that seems impossible since we cannot add
	  the module arguments on the local stack!
	  Maybe just forbid a tool body to be a tool? (joachim) ]

Fixed:	Forbidden a tool interface to be a tool body.
Files modified: bip_module.c
Name:	micha
Date:	18.12.91

---
Number:	545
Name:	joachim
Date:	25.11.91
Topic:	block/exit_block
What:	2 (?) problems:
	[sepia]: [user].
	 p16:-block(q16(X),_,write(X)).
	 q16(one):-exit_block(two).

	yes.
	[sepia]: p16.
	one				<--- should be untrailed by then
	yes.
	[sepia]: block(q16(X),_,write(X)).
	X				<--- but it works from toplevel!
	X = X
	yes.
	[sepia]: block(q16(X),X,write(X)).
	exiting to an undefined tag in exit_block(two) <--- X should be unbound
					 _before_ trying to unify with 'two'
	[the last one is in fact a feature, ie the unification test is carried
	 out in the state of the exit_block - joachim]

Fixed:	EB and GB were not set in Catch	
Files modified: emu.c
Name:	joachim
Date:	7.1.92

---
Number:	544
Name:	micha
Date:	25.11.91
Topic:	load + save/1
What:	After loading externals and making a saved state, the first line in the
	saved state refers to the temporary symbol table and not
	to the binary Sepia.

Fixed:	also changed the #! line
Files modified: sav_res.c
Name:	micha
Date:	25.11.91

---
Number:	543
Name:	jacques
Date:	22.11.91
Topic:	get_var_info
What:	- type checks are not done as specified in the bip book.
	- contradiction in bip book: get_var_info(X, not_an_info, Y)
	  should give range error but is among failure examples

Fixed:	
Files modified: tconv.pl
Name:	micha
Date:	6.6.94

---
Number:	542
Name:	norbert
Date:	15.11.91
Topic:	exec/2,3
What:	exec/2,3 sometimes leaves file descriptors open:
	[sepia]: [user].
	 next_fd :-
		open(".",read,S),
		get_stream_info(S, fd, FD),
		writeln(fd=FD),
		close(S).

	[sepia]: next_fd, exec("true", []), next_fd.
	fd = 4
?? -->	fd = 6

	yes.
	[sepia]: next_fd, exec("true", [S]), close(S), next_fd.
	fd = 6
ok -->	fd = 6

	S = 5
	yes.
	[sepia]: next_fd, exec("true", [null]), next_fd.
	fd = 6
?? -->	fd = 8

	yes.

Fixed:	typo in p_exec
Files modified: bip_io.c
Name:	micha
Date:	25.11.91

---
Number:	541
Name:	stefano
Date:	14.11.91
Topic:	wait/2
What:	wait/2 on drs80 fails when the waited-for process terminates.
	This causes exec/2, help/1 etc to hang.

	[sepia]: exec("echo hello", [], P), wait(P,S).
	hello

	no (more) solution.

Fixed:	This is not a Sepia bug, this is a DRS-80 feature.
Files modified: 
Name:	micha
Date:	25.11.91

---
Number:	540
Name:	micha
Date:	9.10.91
Topic:	quintus library
What:	op(600, xfy, :) and op(1150, fx, meta_predicate) missing

Fixed:	
Files modified: quintus.pl
Name:	micha
Date:	9.10.91

---
Number:	539
Name:	Klaus Schwab/joachim
Date:	8.10.91
Topic:	compiler
What:	The following does not compile correctly in dbgcomp:

	p(X) :- ((X=a, !) ; true), true.

	...
	Cut                       	2 
	Branchs                   	-2 3100(Debug)	<-- wrong
	...

Fixed:	
Files modified: pass3.c
Name:	micha
Date:	23.10.91

---
Number:	538
Name:	micha
Date:	4.10.91
Topic:	metaterms
What:	meta_term(X, LocalVar) makes a binding from global to local...

Fixed:	
Files modified: bip_delay.c
Name:	micha
Date:	7.11.91

---
Number:	537
Name:	joachim
Date:	2.10.91
Topic:	modules
What:	
	[sepia]: module(m).
	warning: creating a new module in module(m)
	[m]: erase_module(sepia).
	yes.
	[m]: module(m1).
	no.
	warning: creating a new module in not a module in [m]: 

Fixed:	
Files modified: events.pl
Name:	micha
Date:	7.11.91

---
Number:	536
Name:	steven/joachim
Date:	27.9.91
Topic:	compiler
What:	Cyclic structure created, only in code for assembler version:

	[sepia]: nodbgcomp, [user]. 
	 tidy((c(X),c(Y)),B) :- !, X=Y, writeln(c(Y)). 
	 user       compiled optimized 164 bytes in 0.03 seconds

	yes.
	[sepia]: tidy((c(A),c(B)), Tidy).
	c(c(c(c(c(c(c(c(c(c(c(...)))))))))))

Fixed:	The assembler emulator is no longer supported.
Files modified: 
Name:	
Date:	

---
Number:	535
Name:	jeanmarc
Date:	26.9.91
Topic:	coroutining/compiler
What:	Resuming instruction missing from the then-branch:

	producer(S) :-
		random(N),
		(N > 0
		->	S = [N|S1]
		;	S = [zero|S1]),
		producer(S1).

Fixed:	
Files modified: 
Name:	micha
Date:	29.10.91

---
Number:	534
Name:	jeanmarc
Date:	25.9.91
Topic:	metaterms
What:	Only on sun-3/assembler version:

	SEPIA Version 3.0.16, Fri Jul 26 10:42 1991 Copyright ECRC GmbH
	[sepia]: coroutine, set_flag(variable_names,off), [user].
	bug(L) :-
		meta_term(T,p([a])),
		bug1(T),
		meta_term(T,p(L)).

	bug1(T) :-
		meta_term(T,p(L)),
		meta_term(T1,p([b|L])),
		meta_bind(T,T1).
	user     compiled traceable 376 bytes in 0.02 seconds

	yes.
	[sepia]: bug(L).

	L = _g82A		<--- should be [b,a]
	yes.

Fixed:	meta_term/2 used its builtin argument after overwriting it
Files modified: bip_delay.c
Name:	joachim
Date:	27.9.91

---
Number:	533
Name:	thierry/joachim
Date:	19.9.91
Topic:	coroutining
What:	Different results in debug/nodebug mode:
	[sepia]: [user].
	 delay p(X,Y, Z,U) if var(X), var(Y).
	 delay p(X,Y, Z,U) if var(Z).
	 delay p(X,Y, Z,U) if var(U).
	 p(_,_,_,_).
	 user       compiled traceable 28 bytes in 0.00 seconds

	yes.
	[sepia]: p(X,Y, Z,U), X=a, Y=a, Z=a, delayed_goals(U, D).
	...
	D = [p(a, a, a, U)]			<-- ???
	...
	yes.
	[sepia]: debug.
	[sepia]: p(X,Y, Z,U), X=a, Y=a, Z=a, delayed_goals(U, D).
	...
	D = [p(a, a, a, U), p(a, a, a, U)]	<-- that's what we would expect
	...
	yes.
	[ This is an accidental (?) optimisation in the optimised waking
	routine. It works only when there are multiple, consecutive occurences
	of the same goal in the wake list: A goal is marked woken, then the
	subsequent woken goals in the wake list are skipped, then the goal
	is called. In the non-optimised waking routine we first skip woken
	goals, then mark a goal as woken, then call it. (joachim)]

Fixed:	When inserting a new delayed environment into the suspended list,
	we first check if it is already there at the beginning/end
	and if so, nothing is done. Then both waking sequences behave the same.
Files modified: emu_c_env.c
Name:	micha
Date:	18.10.91

---
Number:	532
Name:	micha
Date:	19.9.91
Topic:	debugger/coroutining
What:	[sepia]: [user].
	 delay p(A, B) if var(A), var(B).
	 user       compiled traceable 0 bytes in 0.00 seconds

	yes.
	[sepia]: p(A, B), A=1.
	  (1) 0  CALL   p(A_g86, B_g102) (dbg)?- creep
	  (1) 0  DELAY  p(A_d130, B_d122) (dbg)?- creep
	B (2) 0  CALL   A_d130 = 1 (dbg)?- retry (1)
	  retrying (1)
	  (1) 0  CALL   p(A_d130, B_d122) (dbg)?- creep
	  (1) 0  DELAY  p(_BAD_VAR_0x1de1e8_0x0, _BAD_VAR_0x1de214_0x179ff0) (dbg)?- 

Fixed:	arguments of delayed goals are in fact unsafe and they can't be made safe
	by dereferencing (as was assumed in the code), it doesn't work for retry.
Files modified: debug.c
Name:	joachim
Date:	3.2.91

---
Number:	531
Name:	herold
Date:	9.9.91
Topic:	open_2d
What:	hangs on sun3 with X11r4

Fixed:	event mask is set when creating the window
Files modified: k_x11.pl
Name:	micha
Date:	18.12.91

---
Number:	530
Name:	andras@itc.icl.ie
Date:	27.8.91
Topic:	compiler
What:	The following compiles wrong with dbgcomp:
      test(X):-
	     !,
	     writeln(clause1),
	     (
		     X = 1
	     ->
		     writeln(ok)
	     ;
		     writeln(wrong)
	     ).
     test(_):- writeln(clause2).

Fixed:	A combination of space overflow and optimization. Now it ignores
	the second clause completely.
Files modified: section.c
Name:	micha
Date:	23.10.91

---
Number:	529
Name:	andras@itc.icl.ie
Date:	27.8.91
Topic:	compiler
What:	[sepia]: [user].
	test:-
	     getcond(A, B),
	     ( A -> ( B -> true)).
	getcond(true,true).
	Not compiled correctly, the cut variable is discarded after the first
	cut.

Fixed:	If a cut variable is shared, its block and position must be updated
	like for other permanent variables.
Files modified: pass2.c
Name:	micha
Date:	23.10.91

---
Number:	528
Name:	andras@itc.icl.ie
Date:	27.8.91
Topic:	external preds
What:	b_external predicates cannot delay

Fixed:	
Files modified: 
Name:	Fixed
Date:	

---
Number:	527
Name:	andras@itc.icl.ie
Date:	27.8.91
Topic:	print_modes/0
What:	Does not work if there are more modules. Also, each mode should be
	reported in the definition module, not in the module where it is only
	visible.

Fixed:	I cannot produce any problem.
Files modified: 
Name:	micha
Date:	7.11.91

---
Number:	526
Name:	scheidhr@dfki.uni-sb.de
Date:	20.8.91
Topic:	cn
What:	calling neg X=1 without lib(cn) makes a funny error message

Fixed:	removed autoloading for cn builtins
Files modified: cn_kernel.pl kernel.pl
Name:	joachim
Date:	11.11.91

---
Number:	525
Name:	scheidhr@dfki.uni-sb.de
Date:	20.8.91
Topic:	saved state
What:	sepia -r saved -g 5000 crashes (tg badly initialized)

Fixed:	ignore -g option and print a warning for non-reallocable saved states
Files modified: main.c
Name:	joachim
Date:	2.3.92

---
Number:	524
Name:	thimm@ira.uka.de
Date:	16.8.91
Topic:	xsepia on a non-Sun machine
What:	xsepia cannot be made because _XGetRGBColormaps is missing.

Fixed:	this is due to nonportable code in load_image/1, which is never
	executed
Files modified: k_image.c
Name:	micha
Date:	19.8.91

---
Number:	523
Name:	jeanmarc
Date:	13.8.91
Topic:	getval
What:	a setval'd term gets corrupted during a call to compile_term/1
	[ The problem is in _head_pass2(). There is no overflow checking
	for the procedure->gargs array, so arities greater than 10 cause
	arbitrary memory to be overwritten. - joachim ]

Fixed:	Made a uniform test for Gargs overflow and decreased the limit
Files modified: compiler.h pass2.c procedure.c
Name:	micha
Date:	19.8.91

---
Number:	522
Name:	laszlo@itc.icl.ie
Date:	8.8.91
Topic:	compiler
What:	Bad code produced for
	a(X,Y) :- concat_atom([X,"/k"], Z),
	    compare(Z, new(Y), Y).

Fixed:	After globalizing the global temporary the puts was missing
Files modified: body.c
Name:	micha
Date:	8.8.91

---
Number:	521
Name:	jeanmarc
Date:	6.8.91
Topic:	backtrackable builtins
What:	gc internal error when the debugger is on

Fixed:	The PLAST return code of backtrackable externals caused the
	choicepoint to be popped without notifying the debugger.
	It is now done with a proper cut instruction.
Files modified: emu.c code.c
Name:	joachim
Date:	6.8.91

---
Number:	520
Name:	micha
Date:	1.8.91
Topic:	background read
What:	When sepia runs in background and it tries to read from the terminal,
	it gets the signal TTIN. Since the handler is true/0,
	this is interpreted as reading EOF and Sepia exits,
	which is wrong, it should stop (default/0 handler).

Fixed:	
Files modified: sun_bsd.pl vax_bsd.pl
Name:	micha
Date:	7.8.91

---
**********************************************************
 VERSION 3.0.16 INSTALLED 26.07.91, 3 not yet fixed
**********************************************************
---
Number:	519
Name:	micha
Date:	26.7.91
Topic:	GC + delay
What:	The primes test does not work in the installed Sepia (it already did not work
	in 3.0.15), but it works when switching off the GC.

Fixed:	EB and GB must be set when pushing an exception frame, otherwise
	bindings done inside the exception handler are not trailed and
	the garbage collector (which works only locally in the handler)
	throws away stuff created in the handler because it's not referenced.
Files modified: emu.c
Name:	joachim
Date:	7.8.91

---
Number:	518
Name:	joachim
Date:	20.6.91
Topic:	general heap
What:	general heap usage grows when repeatedly executing the chat query
	what percentage of countries border each ocean ? 

Fixed:	We cannot in general reclaim the list cells of records with
	database references. Replaced erase/2 with erase_list/3,
	which is known to be safe in the case of the setof records.
Files modified: setof.pl
Name:	joachim
Date:	21.6.91

---
Number:	517
Name:	jacques
Date:	17.6.91
Topic:	compiler
What:	When selecting the index, the head is not dereferenced, so that
	improper arguments may be selected after macro transformation
	or in compile_term/1

Fixed:	
Files modified: section.c
Name:	micha
Date:	18.6.91

---
Number:	516
Name:	steven
Date:	12.6.91
Topic:	if-then-else
What:	
	[sepia 5]: [user].
	 p(R) :-
	   Type==open ->
		true
	   ; Type==def ->
		 (transformed(R) -> true ; true).

	 user       compiled traceable 356 bytes in 0.00 seconds
	yes.
	[sepia 5]: als p.
		...
	-->	Set_bp                    	2440648(Debug_port)
		MoveLAM                   	Y1 A1 
		Space                     	-2 
		Debug                     	transformed/1 sepia  CALL    
	-->	CallfP                    	transformed/1 3 
	-->	Restore_bp                	
		...
	[should be Try_me_inline rather than Set_bp]

Fixed:	-> should erase the cut var only if the parent does not need it
Files modified: pass2.c
Name:	micha
Date:	9.7.91

---
Number:	515
Name:	thierry
Date:	10.6.91
Topic:	saved state
What:	ssepia and xsepia saved states do not work, because the #! line
	is clipped exactly at the '-r', so that sepia is called like
	'ssepia - savedfile' instead of 'ssepia -r savedfile'.

Fixed:	removed the space between #! and filename (really just a fix ...)
Files modified: sav_res.c
Name:	joachim
Date:	4.7.91

---
Number:	514
Name:	micha
Date:	10.6.91
Topic:	exec/2
What:	fail on fast machines (wait before execve)

Fixed:	loop until a child comes
Files modified: io.pl
Name:	micha
Date:	10.6.91

---
Number:	513
Name:	joachim
Date:	10.6.91
Topic:	local_record/erase_module
What:	
	SEPIA Version 3.0.15, Fri Apr 26 19:49 1991 Copyright ECRC GmbH
	[sepia]: [user].
	 :- import sepia_kernel.
	 p :- erase_module(source),create_module(source),
		local_record_body(key/1, source),
		recordz_body(key(_),term(1,2,3,4),source),
		p.
	 user       compiled traceable 268 bytes in 0.02 seconds

	yes.
	[sepia]: p.		% takes a while ...
	Spurious interrupt in protected code!!!
	Trying to abort...

Fixed:	the difference list cell was freed to the wrong heap
Files modified: property.c bip_record.c
Name:	joachim
Date:	12.6.91

---
Number:	512
Name:	joachim/micha
Date:	6.6.91
Topic:	break levels
What:	The delayed goals of the interrupted execution are visible, e.g.
	when calling a break level from the debugger.
	[introduced by fix for #453]

Fixed:	reset LD always, except for sub_emulc()
Files modified: emu.c emu_c_env.c code.c ase.c
Name:	joachim
Date:	13.6.91

---
Number:	511
Name:	Paeppinghaus
Date:	5.6.91
Topic:	read_string
What:	garbage collector internal error and crash in a program
	that heavily uses strings.

Fixed:	read_string/4 left the stack in an inconsistent state when reading
	until EOF and when the string length was a multiple of 4.
Files modified: bip_io.c
Name:	joachim
Date:	5.6.91

---
Number:	510
Name:	joachim
Date:	4.6.91
Topic:	get_stream_info/3
What:	2 problems:

	SEPIA Version 3.0.15, Fri Apr 26 19:49 1991 Copyright ECRC GmbH
	[sepia]: get_stream_info(5,X,Y).

	X = name
	Segmentation violation - maybe machine stack overflow
	Aborting execution....

	SEPIA Version 3.0.15, Fri Apr 26 19:49 1991 Copyright ECRC GmbH
	[sepia]: socket(unix,stream,S).

	S = 6
	yes.
	[sepia]: get_stream_info(5,X,Y).
	illegal stream specification in 5	<-- bad message

Fixed:	check if stream is open
Files modified: bip_io.c io.pl
Name:	joachim
Date:	25.6.91

---
Number:	509
Name:	broome@msiadmin.cit.cornell.edu
Date:	29.5.91
Topic:	cn
What:	[sepia]: neg X=Y.

	X = X
	Y = Y   Delayed constraints:
			_g234 ~= _g238

Fixed:	cn_delayed_goals_handler
Files modified: cn_kernel.pl
Name:	joachim
Date:	13.6.91

---
Number:	508
Name:	joachim
Date:	23.5.91
Topic:	abolish
What:	Abolishing an import link should not care about the type
	of the predicate (since it is not really affected):
	[sepia]: cprolog.
	yes.
	[sepia]: abolish(instance/2).
	trying to modify a system predicate in abolish instance / 2

Fixed:	relax the check
Files modified: bip_db.c
Name:	joachim
Date:	25.6.91

---
Number:	507
Name:	joachim
Date:	15.5.91
Topic:	[]
What:	[sepia]: get_stream([],X).
	Aborting execution....

	[sepia]: current_atom(A),A=[],current_stream(X,Y,A).

	Segmentation violation - maybe machine stack overflow
	Aborting execution....

Fixed:	get_stream_id()
Files modified: bip_io.c
Name:	joachim
Date:	25.6.91

---
Number:	506
Name:	joachim
Date:	7.5.91
Topic:	metaterms
What:	[sepia 8]: meta_term(A,b),delayed_goals(A,G).
	Segmentation violation - maybe machine stack overflow
	Aborting execution....

Fixed:	not all CRef's have delayed goals
Files modified: bip_delay.c bip_tconv.c debug_opt.c
Name:	micha
Date:	6.6.91

---
**********************************************************
 VERSION 3.0.15 INSTALLED 29.04.91, 2 not yet fixed
**********************************************************
---
Number:	505
Name:	Peter Paeppinghaus
Date:	26.4.91
Topic:	io
What:	at_eof does not work on string streams
	[sepia]: open("abc",string,S),read(S,X), at_eof(S).
	no (more) solution.

Fixed:	
Files modified: bip_io.c
Name:	joachim
Date:	26.4.91

---
Number:	504
Name:	joachim
Date:	24.4.91
Topic:	io
What:	Problem with stream descriptor  overflow:
	[sepia]: between(5,28,_),open("",string,_),fail.

	no.
	[sepia]: pipe(X,Y).

	X = -4981			<---
	Y = 30
	yes.

Fixed:	added an indirection so that stream descriptors are allocated
	separately and need no longer be moved when the table overflows.
	This should also improve interrupt safety.
Files modified: io.c io.h sepia.h external.h
Name:	joachim
Date:	26.4.91

---
Number:	503
Name:	micha
Date:	23.4.91
Topic:	dump + macros
What:	The define_local_macro query in a dumped file is always
	called in sepia_kernel, so that the file is actually not
	macro-expanded.

Fixed:	made file_query/2 a tool
Files modified: procedure.c io.pl
Name:	micha, joachim
Date:	23.4.91

---
Number:	502
Name:	micha
Date:	23.4.91
Topic:	exec/...
What:	Its first argument is corrupted by it on BSD systems.

Fixed:	vfork() does not copy the memory, so the child cannot overwrite
	the string
Files modified: bip_io.c
Name:	micha
Date:	23.4.91

---
Number:	501
Name:	emmanuel
Date:	22.4.91
Topic:	compiler
What:	resume instruction missing in
	p(X, Y) :- (X=Y->a;b),c.

Fixed:	With disjunctions, the sequence REGULAR-REGULAR may have to wake
Files modified: pass3.c
Name:	micha
Date:	23.4.91

---
Number:	500
Name:	andras
Date:	19.4.91
Topic:	dynamic predicates
What:	after :- assert(p), abolish(p, 0), killed_dyn_code_size_ is a huge
	number which results in calling the dynamic garbage collector
	on every future retract.

Fixed:	killed_dyn_code_size_ was corrupted by abolish
Files modified: dynamic.c
Name:	micha
Date:	22.4.91

---
Number:	499
Name:	joachim
Date:	19.4.91
Topic:	writeq
What:	
	[sepia]: writeq(\(=>(-3,4))).
	\ -3 => 4
	yes.
	[sepia]: display(\ -3 => 4).
	-(\, =>(3, 4))
	yes.

Fixed:	for this purpose treat negative numbers as if they were -/1 structures
Files modified: write.c
Name:	joachim
Date:	19.4.91

---
Number:	498
Name:	volker
Date:	17.4.91
Topic:	memory management
What:	A program with several thousand asserts gives heap overflow
	while there is still lots of swap space free.

Fixed:	overflow of the mem_list[] array, removed it (obsolete)
Files modified: mem.c
Name:	joachim
Date:	17.4.91

---
Number:	497
Name:	mireille
Date:	12.4.91
Topic:	assembler version only
What:	
	[sepia]: opium(on).

		[opium]: buggy(nqueens).

	module(nqueens).
	[sepia]: nqueens(4, Qs).

		[opium]: n(32).
		[opium]: o.	% notrace

	Overflow on the control stack.
	Use the "-l N_Kilobytes" option to have a larger stack.

Fixed:	The DET flag was not reset by recursive emulators which were no
	interrupt exmulators. As a consequence, a return address was popped.
Files modified: ase.c as_c_defs.h
Name:	joachim
Date:	16.4.91

---
Number:	496
Name:	marcus
Date:	15.4.91
Topic:	setarg/3
What:	[sepia]: [user].
	?- import setarg/3 from sepia_kernel.
	test( Foo ) :- 
		Foo = foo( _, _ ),
		arg( 1, Foo, Val ),
		setarg( 1, Foo, s( Val ) ).
	 user       compiled 208 bytes in 0.00 seconds

	 yes.
	 [sepia]: test(V).

	 V = foo(s(s(s(s(s(s(s(s(s(s(...)))))))))), _g122)
	 [the 1st argument of foo/1 is overwritten with a structure s/1
	 whose argument points to the first argument of foo/1,
	 so a cycle is created]

Fixed:	This is not a bug. If there are references to the term being
	overwritten by setarg/3, the use of the predicate is not safe
	and is in the full responsibility of the user.
Files modified: 
Name:	
Date:	

---
Number:	495
Name:	marcus
Date:	15.4.91
Topic:	variable names
What:	
	[sepia]: [user].
	 create_clause1( ( H :- ( true ) ) ) :-
		H =.. [a, b( X ), X ].
	 test1 :-
		create_clause1( Clause ),
		assert( Clause ).
	 user       compiled 332 bytes in 0.00 seconds

	yes.
	[sepia]: test1.
	instantiation fault in assert(a(b(X), X) :- true)

Fixed:	Missing Dereference_ in _check_clause_and_get_info
Files modified: bip_db.c
Name:	micha
Date:	15.4.91

---
Number:	494
Name:	micha
Date:	15.4.91
Topic:	exec
What:	When the execvp in exec/2,3,4 fails, there are two sepias alive,
	on the suns they make segmentation violation, on other machines
	they happily exist together (found by new lint!).

Fixed:	Calling exit(128 + errno) after the execvp() and checking it in exec/2.
	exec/3 etc. have to check the status of the child themselves.
Files modified: bip_io.c io.pl
Name:	micha
Date:	15.4.91

---
Number:	493
Name:	micha
Date:	10.4.91
Topic:	all_dynamic
What:	[sepia]: [user].
	p.
	user       compiled 28 bytes in 0.00 seconds

	yes.
	[sepia]: set_flag(all_dynamic, on), [user].
	p.
	^D
	*** trying to redefine a procedure with another type: p / 0

Fixed:	The error message must be like for assert, i.e. procedure
	already defined (static).
Files modified: procedure.c
Name:	micha
Date:	10.4.91

---
Number:	492
Name:	micha
Date:	10.4.91
Topic:	dynamic procedures
What:	Dynamic procedures are always compiled in debug mode

Fixed:	The flag PR_DEBUG was not correctly set in dynamic/1, the source
	procedure was always hard PR_DEBUG
Files modified: bip_db.c, dynamic.c
Name:	micha
Date:	10.4.91

---
Number:	491
Name:	emmanuel (for eric)
Date:	9.4.91
Topic:	break level
What:	when quiting a break level trigered by ^C - b, no message
	is printed.
	Actualy there is no flushing (it will be done only after
	the end of the query in toplevel/0).

Fixed:	added flush(toplevel_output)
Files modified: boot_bips.pl
Name:	emmanuel
Date:	9.4.91

---
Number:	490
Name:	andras
Date:	8.4.91
Topic:	load
What:	The symbol table of the first incremental load is not removed.

Fixed:	
Files modified: bip_load.c
Name:	micha
Date:	12.4.91

---
Number:	489
Name:	andras
Date:	8.4.91
Topic:	statistics
What:	print_mode/0 prints the mode declaration without modules so that
	when it is compiled, it creates local procedures in the current
	module. It should probably be split according to the home
	module of the procedures.

Fixed:	Defined print_modes/0 in Prolog, using call/2 to call the mode
	if there are more modules involved.
Files modified: statistics.c bip_db.c db.pl kernel.pl
Name:	micha
Date:	12.4.91

---
Number:	488
Name:	andras
Date:	8.4.91
Topic:	printf
What:	[sepia]: X=[1, a], printf("%*t%w%n", X).
	a
	 
	X = [-1, a]

Fixed:	counter argument was decremented in place
Files modified: write.c
Name:	joachim
Date:	11.4.91

---
Number:	487
Name:	joachim
Date:	5.4.91
Topic:	compiler
What:	SEPIA Version 3.0.14, Mon Jan 28 12:35 1991 Copyright ECRC GmbH
	[sepia]: coroutine,nodbgcomp,set_flag(all_dynamic,on).

	yes.
	[sepia]: [user].
	 display_list([]) :-
		ttynl.
	 (compiler) too little dynamic space allocated
	Aborting execution....

Fixed:	The 0 at the end was not counted
Files modified: pass2.c, section.c
Name:	micha
Date:	10.4.91

---
Number:	486
Name:	joachim
Date:	5.4.91
Topic:	quintus
What:	Shell sees only the rm:
	[sepia]: quintus, unix(shell('rm toto')).
	usage: rm [-rif] file ...
	no

Fixed:	added quotes to the shell command line
Files modified: quintus.pl
Name:	joachim
Date:	11.4.91

---
Number:	485
Name:	joachim
Date:	5.4.91
Topic:	quintus
What:	no_style_check/1 should switch off singleton warnings.
	line_count/2, line_position/2, write_canonical/2, save/2 are missing.

Fixed:	except line_position/2, which can't be easily done
Files modified: quintus.pl
Name:	joachim
Date:	11.4.91

---
Number:	484
Name:	brzoska@ira.uka.de
Date:	28.3.91
Topic:	compiler
What:	Not even an error message when I by mistake slip a delay clause between
	2 normal clauses.
	[sepia]: [user].
	 delay p(X) if var(X).
	 p(a).
	 delay p(b(X)) if var(X).
	 p(b).
	 user       compiled 56 bytes in 0.05 seconds

	yes.
	[sepia]: p(X).

	X = b
	yes.

Fixed:	The delay clauses did not have any source information, nor compilation
	id#, and non-consecutive delay clauses were not even tested.
Files modified: procedure.c delay.c
Name:	micha
Date:	10.4.91

---
Number:	483
Name:	micha
Date:	28.3.91
Topic:	modules
What:	[sepia]: export a/0.

	yes.
	[sepia]: module(a).
	[a]: import(sepia),[user].
	 a.
	 user       compiled 28 bytes in 0.00 seconds

	yes.
	[a]: abolish(a/0), pred(a/0).

	no.
	After abolishing the local a/0, the imported a/0 should become
	visible again.

Fixed:	This is not a bug, import/1 has a clearer semantics when it is seen
	as a shorthand for a sequence of import_from's, and these are not
	affected by abolish/1.
Files modified: 
Name:	
Date:	

---
Number:	482
Name:	thierry
Date:	27.3.91
Topic:	cn
What:	[sepia 1]: setuniv(X), Z=X.
			       ^^^  free = univ succeeds
	Z = _u113
	X = _u113
	yes.

	[sepia 2]: setuniv(X), X=Z.
			       ^^^  univ = free fails
	no (more) solution.


Fixed:	unification named=univ was wrong
Files modified: emu_c_env.c
Name:	joachim
Date:	12.4.91

---
Number:	481
Name:	micha
Date:	27.3.91
Topic:	Sun-3 threaded code
What:	The Sun-3 optimizer throws away labels that are not used in the same
	function (even if they appear in the same file). The inclusion
	of emu_as.i must be put into emulc() or all I_* etc. labels
	must be global.

Fixed:	
Files modified: emu.c
Name:	micha
Date:	15.4.91

---
Number:	480
Name:	micha
Date:	26.3.91
Topic:	debugger
What:	the option 'fail' on a REDO port does not work properly:
	(75384) 38  REDO   fib(s(s(s(s(zero)))), Y) (dbg)?- fail
	(75384) 38  REDO   fib(s(s(s(s(zero)))), Y) (dbg)?- creep
	(75394) 39  REDO   fib(s(s(zero)), Y) (dbg)?- 

Fixed:	forbid failing on backtracking ports, we are already failing on those
Files modified: debug_opt.c
Name:	emmanuel
Date:	10.04.91

---
Number:	479
Name:	micha
Date:	21.3.91
Topic:	compiler
What:	[sepia]: mode(p(-)), assert(p(a)).
	(compiler) too little dynamic space allocated
	Aborting execution....

Fixed:	due to the fix of #442, code might be longer with output mode args
Files modified: pass2.c
Name:	micha
Date:	9.4.91

---
Number:	478
Name:	micha
Date:	14.3.91
Topic:	modules
What:	[sepia]: create_module(a), import(a).

	yes.
	[sepia]: module(a).
	[a]: assert(a), erase_module(sepia), export(a/0).
	loading the library /home/lp/sepia/workdir/sepia/lib/db.pl
	signal SEGV (no mapping at the fault address) in p_export at line 1311 in file "

Fixed:	update the 'imports' and 'imported' chain of the other module
	so that they do not reference an erased module.
Files modified: bip_module.c
Name:	emmanuel
Name:	This fix is wrong - when a module calls import(a), and
	a is then recompiled, the import is lost. Erasing a module
	must not change the interfaces of other modules; rather the
	lazy import must check if the module exists.
	Fixed
Date:	11.04.91

---
Number:	477
Name:	micha
Date:	13.3.91
Topic:	compiler
What:	p :- q(_); r(_). allocates two permanent variables although
	temporaries should be used
	[variable occurring only in last goal is not permanent even
	if it is in a disjunction]

Fixed:	variables occurring only once in the last goal are temporary.
	However, multiple occurrences are permanent, and so are single
	occurrences in several disjunction branches. A disjunction
	still needs allocation, because blocks are not really counted.
Files modified: pass2.c
Name:	micha
Date:	10.4.91

---
Number:	476
Name:	emmanuel
Date:	13.3.91
Topic:	tool
What:	
[sepia]: dynamic q/1.

yes.
[sepia]: tool(q/0, q/1).

yes.
[sepia]: get_flag(q/0, source_file, X).

Segmentation violation - maybe machine stack overflow
Aborting execution....
X = SEPIA Version 3.0.14, Mon Jan 28 12:35 1991 Copyright ECRC GmbH

Fixed:	no more source info for all tools
Files modified: bip_db.c
Name:	joachim
Date:	11.4.91

---
Number:	475
Name:	micha
Date:	12.3.91
Topic:	set_chtab/2
What:	[sepia]: get_chtab(0'", X), set_chtab(0'", X).
	single atom or string quote character may not be redefined in chtab(34, string_quote)

Fixed:	
Files modified: lex.c
Name:	joachim
Date:	11.4.91

---
Number:	474
Name:	micha (Klaus Schwab)
Date:	12.3.91
Topic:	kegitool
What:	On Sparc 2, Sepia sends the EMT signal to kegitool too quickly,
	so that it kills it. Probably doing something before
	would help.

Fixed:	This cannot be fixed in Sepia because the problem exists in chip
	as well. It must be fixed in kegitool, however it is not possible
	to reproduce the bug and moreover kegitool seems to have other
	serious problems, e.g. trying to Restart twice crashes it.
Files modified: 
Name:	micha
Date:	

---
Number:	473
Name:	thom
Date:	11.3.91
Topic:	assembler version only
What:	unification fails with named variables
	[sepia]: assert(p(I,[I|_],[I|_],[I|_])).

	I = I
	yes.
	[sepia]: clause(p(A,B,C,D),E).

	no (more) solution.		% works if variable_names off

Fixed:	Read_next_listAM and others did not work for named variables
Files modified: ase.c
Name:	joachim
Date:	16.4.91

---
Number:	472
Name:	micha
Date:	8.3.91
Topic:	compiler
What:	[sepia]: [user].
	p :- not(not((!, fail))).
	user       compiled 128 bytes in 0.00 seconds

	yes.
	[sepia]: p.

	yes.
	[nested not/1 and once/1 do not store their cut variable for
	 the real cut on the stack, so a wrong one is taken]

Fixed:	not/1 which calls !/0 in fact needs two cut variables, one
	to cut and fail the negation, and another one for the !, which
	must be transformed to a local cut. The second cut is stored
	with the argument of not/1
Files modified: pass2.c pass3.c
Name:	micha
Date:	11.4.91

---
Number:	471
Name:	micha
Date:	7.3.91
Topic:	compiler
What:	[sepia]: [user].
	p:-true->not(true->fail).
	user       compiled 100 bytes in 0.02 seconds

	yes.
	[sepia]: p.

	no.
	[the argument of not/1 must use its own cut variable]

Fixed:	together with #472
Files modified: pass2.c pass3.c
Name:	micha
Date:	11.4.91

---
Number:	470
Name:	emmanuel
Date:	4.3.91
Topic:	tool/2 and debug flags
What:	tool/2 set the debugger flags to untraceable when the declaration
	is made before the definition.

Fixed:	the debugger flags were overwritten in _tool2()
Files modified: bip_module.c
Name:	emmanuel
Date:	4.3.91

---
Number:	469
Name:	emmanuel
Date:	4.3.91
Topic:	debug_compile flag
What:	setting debug_compile flag off automaticaly set variable names
	off. Only nodbgcomp sould set both to off.

Fixed:	
Files modified: environment.pl
Name:	joachim
Date:	13.4.91

---
Number:	468
Name:	thom
Date:	28.2.91
Topic:	all_dynamic
What:	
	[sepia]:  set_flag(all_dynamic,on).

	yes.
	[sepia]: [user].
	 q310(a, a).
	 q310(b, b).
	 q310(A, c).
	Warning: Singleton variables in clause 3 of q310/2: A
	user       compiled 188 bytes in 0.00 seconds

	yes.
	[sepia]: ls.
	loading the library /usr/local/SEPIA/lib/strings.pl
	q310(a, a).
	calling an undefined procedure substring("q310(b, b)", 10, 1, _g144) in module strings

Fixed:	The dynamic procedures did not attempt to link globals and exported.
Files modified: procedure.c
Name:	micha
Date:	17.4.91

---
Number:	467
Name:	Mats Carlsson
Date:	22.2.91
Topic:	writeq
What:	[sepia]: op(1100,yf,!), op(1100,fy,@).
	
	yes.
	[sepia]: writeq(@(!(a))).
	@ a !
	yes.
	[sepia]: writeq(!(@(a))).
	@ a !
	yes.

Fixed:	If the parent is yf* and the y argument is *fy and both have
	the same precedence, the argument is parenthesised. This
	is recongnised by setting ARGYF in the parent.
Files modified: write.c io.h
Name:	micha
Date:	17.4.91

---
Number:	466
Name:	joachim
Date:	21.2.91
Topic:	lib(ifdef)
What:	does not work any more. The skipped terms are read again
	by the compiler.

Fixed:	Defined compiled_stream/1 which gives the precise compiled stream.
Files modified: kernel.pl ifdef.pl top.pl io.pl non_consecutive.pl bip_io.c
Name:	micha
Date:	12.4.91

---
Number:	465
Name:	micha
Date:	21.2.91
Topic:	compatibility
What:	the operator multifile/1 is missing in quintus and sicstus.
	( should print a warning and make dynamic )

Fixed:	
Files modified: quintus.pl
Name:	joachim
Date:	11.4.91

---
Number:	464
Name:	jacques
Date:	3.12.90
Topic:	compiler
What:	-----------------------------------------------------------------------
	test :- foo(_, [1|_]), fail.

	foo([], []) :- !.
	foo([], _) :- !, once(fail ; write('DO!!!')).
	foo(_, _) :- write('REDO!!!').

	845 janus6: sepia
	SEPIA Version 3.0.13, Mon Dec  3 18:29 1990 Copyright ECRC GmbH
	[sepia]: [foo].
	foo        compiled 684 bytes in 0.00 seconds

	yes.
	[sepia]: test.
	DO!!!
	no.
	[sepia]: [user].
	 user       compiled 0 bytes in 0.00 seconds

	yes.
	[sepia]: [foo].
	foo        compiled 636 bytes in 0.03 seconds

	yes.
	[sepia]: test.
	DO!!!REDO!!!
	no.

Fixed:	Procedures indexed on more arguments, which also have some Unif
	clauses, must take care to index first on the main argument and
	keep the Det flag for clauses.
Files modified: section.c compiler.h
Name:	micha
Date:	12.4.91

---
Number:	463
Name:	mireille
Date:	20.2.91
Topic:	compiler
What:	In q(X) :-
	    (p(a) -> r(X)).
	no argument for p/1 is fetched and so a call to p(X) is made.


Fixed:	-> must start a new block if not inside a disjunction
Files modified: pass2.c pass3.c
Name:	micha
Date:	11.4.91

---
Number:	462
Name:	Mats Carlsson
Date:	15.2.91
Topic:	quintus
What:	nospyall/0 does nothing. It has to be a tool !

Fixed:	
Files modified: quintus.pl
Name:	joachim
Date:	11.4.91

---
Number:	461
Name:	Mats Carlsson
Date:	15.2.91
Topic:	writeq
What:	
	[sepia]: op(100,xfy,op1), op(100,yf,op1), op(200,xfy,op2).

	yes.
	[sepia]: writeq(op2(op1(a), b)).
	a op1 op2 b				% parentheses missing ...
	yes.
	[sepia]: X = (a op1 op2 b).
	X = (a op1 op2 b).			% since this can't be read in
		       ^ (here?)
	syntax error: postfix/infix operator expected

Fixed:	A postfix-infix operator is parenthesised unless it is the
	last term or it is followed by ) or ,.
Files modified: write.c io.h
Name:	micha
Date:	17.4.91

---
Number:	460
Name:	Mats Carlsson
Date:	15.2.91
Topic:	writeq
What:	parentheses missing:
	[sepia]: writeq(-(1*2)).
	- 1 * 2

Fixed:	writeq always writes +/1 and -/1 in functor notation
Files modified: write.c
Name:	joachim
Date:	19.2.91

---
Number:	459
Name:	Mats Carlsson
Date:	15.2.91
Topic:	Quintus
What:	(a|b) sould be READ as a;b
	Define a macro and remove (|)/2.

Fixed:	
Files modified: quintus.pl
Name:	joachim
Date:	11.4.91

---
Number:	458
Name:	Mats Carlsson
Date:	15.2.91
Topic:	grammar rules
What:	
	[sepia]: read(X).
		foo([X|Y]) --> [X|Y].

	X = foo([X|{_g175 = _g239}], _g175, _g175) :- _g175 = [X|_g239]
	yes.
	[sepia]: read(X).
		s(X) --> ({p(X)} -> [] ; [X]), r(X).

	X = s(X, _g201, _g199) :- ;({p(X)} -> [], [X], _g201, _g287) , r(X, _g287, _g199)
	yes.

Fixed:	
Files modified: macro.pl
Name:	joachim
Date:	18.2.91

---
Number:	457
Name:	Mats Carlsson
Date:	15.2.91
Topic:	listing/writeclause
What:	Problems with variables & missing parentheses
	[sepia]: writeclause(X).
	_g137 :-
		_g139.				% wrong

	X = _g137 :- _g139			% instantiates argument
	yes.
	[sepia]: writeclause(p :- X;Y).
	p :-
		(
		    _g159
		->
		    _g161
		;
		    _g121
		).

	[sepia]: writeclause((a:-b) :- body).
	a :- b :-
		body.				% brackets missing

	[sepia]: writeclause(head :- (a:-b)).
	head :-
		a :- b.				% brackets missing

	etc.

Fixed:	by hacking, maybe we should replace it with the O'Keefe code
Files modified: dynamic.pl
Name:	joachim
Date:	19.2.91 and 11.4.91

---
Number:	456
Name:	Mats Carlsson
Date:	15.2.91
Topic:	arithmetic
What:	negative shifts yield 0

Fixed:	if it makes people happier ...
Files modified: emu.c ase.c
Name:	joachim
Date:	16.4.91

---
Number:	455
Name:	joachim
Date:	7.2.91
Topic:	compiler
What:	p :- q, var(A) -> p(A) does not compile correctly

Fixed:	Unsafe temporary variables in ->/2 if they occur both before and after
	the -> . Now they are all made permanent in case the cut is not
	a void operation.
Files modified: pass2.c
Name:	micha
Date:	8.2.91

---
Number:	454
Name:	joachim
Date:	7.2.91
Topic:	delay clauses / dynamic predicates
What:	[sepia 8]: coroutine, [user].
	 delay p(X) if var(X).
	 user       compiled 0 bytes in 0.00 seconds

	yes.
	[sepia 9]: assert(p(9)).
	procedure not dynamic in assert(p(9))

Fixed:	testing all_dynamic before Delcl
Files modified: procedure.c
Name:	micha
Date:	8.2.91

---
Number:	453
Name:	joachim
Date:	6.2.91
Topic:	macros
What:	[sepia 52]: coroutine, [user].
	 t($$$, X) :- X > 0.   % delays
	 :- define_global_macro($$$, t/2, []).
	 user       compiled 96 bytes in 0.00 seconds

	yes.
	[sepia 52]: X = $$$, delayed_goals(X, DX), delayed_goals(D).

	X = _d179
	DX = [_d179 > 0]
	D = []			% goal is missing from the LD list
	yes.

Fixed:	don't reset LD when exiting emulator with PKEEP
Files modified: emu.c
Name:	joachim
Date:	12.4.91

---
Number:	452
Name:	fricke@opal.cs.tu-berlin.de
Date:	4.2.91
Topic:	compiler
What:	g( A, Term, B ) :-
	    copy_term( Term, d( A, B, AccessTerm ) ),
	    once( AccessTerm ).
	does not compile properly

Fixed:	once/1 as last goal makes the clause regular, even if there are no
	other permanent variables
Files modified: pass2.c
Name:	micha
Date:	5.2.91

---
Number:	451
Name:	fricke@opal.cs.tu-berlin.de
Date:	4.2.91
Topic:	compiler
What:	p( [H|T], M, S ) :-
	    l( M, S, A/B ),
	    p( T, M, S ).
	causes a compiler error.

Fixed:	The fact that a structure was already unified in the head
	was not completely known when generating the first regular goal args.
Files modified: body.c
Name:	micha
Date:	5.2.91

---
Number:	450
Name:	joachim
Date:	1.2.90
Topic:	io
What:	at_eof fails when the file is past eof
	[sepia]: open(foo,read,S).
	S = 7
	yes.
	[sepia]: repeat, get(7, -1).
	yes.
	[sepia]: at_eof(7).
	no.

Fixed:	StreamPtr is not valid when MEOF is set
Files modified: bip_io.c
Name:	micha
Date:	8.2.91

---
**********************************************************
 VERSION 3.0.14 INSTALLED 28.01.91, 2 not yet fixed
**********************************************************
---
Number:	449
Name:	joachim
Date:	24.1.91
Topic:	current_functor/1
What:	[sepia]: current_functor(a/300).
	out of range in current_functor(a / 300)

Fixed:	
Files modified: db.pl
Name:	joachim
Date:	24.1.91

---
Number:	448
Name:	jacques
Date:	18.1.91
Topic:	reader
What:	reader not able to read smallest integer -2147483648

Fixed:	removed the overflow handling completely
Files modified: lex.c
Name:	joachim
Date:	24.1.91

---
Number:	447
Name:	micha
Date:	21.1.91
Topic:	lib(scattered)
What:	does not work properly with Hilog

Fixed:	didn't handle nested compilations properly
Files modified: scattered.pl
Name:	joachim
Date:	23.1.91

---
Number:	446
Name:	micha
Date:	21.1.91
Topic:	'd' in the debugger
What:	When the functor of the delayed goals is pushed in order to be
	printed, its tag is not initialized and so there might be spurious
	problems, e.g. if the previous tag value was TPROC.

Fixed:	initializing the tag to TDICT
Files modified: debug_opt.c
Name:	micha
Date:	21.1.91

---
Number:	445
Name:	micha
Date:	18.1.91
Topic:	debugger + var skip
What:	occur_stack checks even frames which were not updated by the
	garbage collector, so one gets a segmentation violation
	when using the var skip after a gc. Furthermore, variables
	that occur only in suspended goals are not found in the debugger
	stack and so they cannot be traced.

Fixed:	added UNSAFE_GC check to _occur_stack and added _occur_ld
	to search as well in suspended goals
Files modified: debug_opt.c
Name:	micha
Date:	18.1.91

---
Number:	444
Name:	joachim
Date:	17.1.91
Topic:	tool/2
What:	tool interface should not inherit protected property from the body
	[sepia]: [user].
	 :- tool(my_freeze/1, call/2).
	 delay my_freeze(G) if nonground(G).
	   
	*** trying to redefine a protected procedure: my_freeze / 1

Fixed:	defined a new Macro to get the flags that must be inherited from
	the body (only predicates define in sepia_kernel inherit the debugger
	flags)
Files modified: bip_module.c
Name:	emmanuel
Date:	17.1.91

---
Number:	443
Name:	joachim
Date:	17.1.91
Topic:	sicstus package
What:	[sepia]: freeze(X,write(X)), X=1.
	calling an undefined procedure untraced_call(write(1)) in module sicstus

Fixed:	
Files modified: sicstus.pl
Name:	joachim
Date:	17.1.91

---
Number:	442
Name:	micha
Date:	16.1.91
Topic:	debugger + modes
What:	The output mode arguments might be bound between an EXIT and a CALL
	port so that their trailing is not forced.

Fixed:	Wrapped the output mode unification into CALL and EXIT ports of an
	untraceable procedure
Files modified: head.c
Name:	micha
Date:	16.1.91

---
Number:	441
Name:	micha
Date:	16.1.91
Topic:	debugger + coroutining
What:	When the last goal is simple and it wakes a delayed goal, the debugger
	still thinks that the parent clause has an environemnt and that he
	can retry its subgoals, but in fact the environment might be deallocated
	before waking the suspended goal.

Fixed:	The last simple goal before an Exit gets a flag LAST_BI, and the
	debugger then marks the parent environment as deallocated before
	starting the waking sequence
Files modified: debug.h, pass3.c, debug.c
Name:	emmanuel, micha
Date:	16.1.91

---
Number:	440
Name:	micha
Date:	16.1.91
Topic:	debugger + coroutining
What:	In the debug wake sequence there is no FORCE when the woken list
	is made and when goals are marked as woken. This causes
	problems when retrying and when calling portray to print
	the FAIL ports.

Fixed:	Always trailing in Start_wake_debug, Debug_wake_simple and Debug_Wake
Files modified: emu.c
Name:	micha
Date:	16.1.91

---
Number:	439
Name:	micha
Date:	15.1.91
Topic:	debugger
What:	The SEMI frames are exited only at the end of their parent procedure
	and so when TRO flag is set in the parent, sometimes it is set
	in the SEMI frame. Then retrying and printing previous goals
	might be wrong.

Fixed:	TRO must be set not only on SEMI frames but also their non-SEMI parent
Files modified: debug.c
Name:	emmanuel
Date:	15.1.91

---
Number:	438
Name:	joachim
Date:	9.1.91
Topic:	debugger
What:	segmentation violation when using debugger

Fixed:	The debuggers RESET_ON_EXIT request tried to reset EB from an
	incomplete if-then-else choicepoint, which messed up the local stack
Files modified: emu.c ase.c
Name:	joachim
Date:	9.1.91

---
Number:	437
Name:	kish shen
Date:	9.1.91
Topic:	quintus compatibility
What:	statistics(trail, X) gives trail size instead of trail used

Fixed:	
Files modified: environment.pl
Name:	micha
Date:	9.1.91

---
Number:	436
Name:	jacques
Date:	7.1.91
Topic:	at/2
What:	at(user, X) should issue the illegal stream error rather than
	'use input or output instead of user'.

Fixed:	
Files modified: bip_io.c
Name:	micha
Date:	24.1.91

---
Number:	435
Name:	micha
Date:	18.12.90
Topic:	coroutining + GC
What:	segmentation violation with crossword program

Fixed:	The destructive updates in delay lists were not correctly trailed:
	- zero must be trailed as a pointer, not as a constant
	- 3rd word of a T2POINTERS cell must be trailed with offset 2
Files modified: emu_c_env.c
Name:	joachim
Date:	9.1.91

---
Number:	434
Name:	micha
Date:	13.12.90
Topic:	compiler
What:	[sepia]: [user].
	p :- once(true)->fail; true.
	user       compiled 212 bytes in 0.00 seconds

	yes.
	[sepia]: p.

	yes.
	++another one:
	p :- (a, b -> simple) -> q	% the second -> is not cut

Fixed:	In nested implications, the right cut variable was
	not always validated.
Files modified: pass3.c
Name:	micha
Date:	24.1.91

---
Number:	433
Name:	micha
Date:	6.12.90
Topic:	debugger
What:	In the skipped mode (and 'F'), after each TRUST port EB and GB
	are reset to stack tops, so that it behaves like nondeterministic,
	and overflows the stack, whereas with 's' it is ok.

Fixed:	
Files modified: debug.c
Name:	emmanuel
Date:	6.12.90

---
**********************************************************
 VERSION 3.0.13 INSTALLED HERE, 2 not yet fixed
**********************************************************
---
Number:	432
Name:	thierry
Date:	26.11.90
Topic:	lib ifdef
What:	does not work if there is more than one elseif or elseif with else.

Fixed:	
Files modified: ifdef.pl
Name:	micha
Date:	26.11.90

---
Number:	431
Name:	mireille
Date:	14.11.90
Topic:	lib/2
What:	When calling lib/2 with a non-existing module name:
	[sepia]: lib(expert_system, expert_system).
	loading the library /auto/home/cygnus3/mireille/sepium_wd/demo/expert_system.pl
	Spurious interrupt in protected code!!!
	Trying to abort...

Fixed:	added check
Files modified: boot_bips.pl
Name:	joachim
Date:	14.11.90

---
Number:	430
Name:	joachim
Date:	8.11.90
Topic:	compiler
What:	 in
	 p(X) :- (X=1, !; X=2), fail.
	 p(4).
	the cut is not executed


Fixed:	
Files modified: pass3.c
Name:	micha
Date:	12.11.90

---
Number:	429
Name:	joachim
Date:	7.11.90
Topic:	procedure flags
What:	
	[sepia]: local p/1.
	yes.
	[sepia]: pred(p/1).
	debugged            off
	declared            on
	defined             off
	...
	stability           dynamic	<----
	...
	visibility          local

Fixed:	flags/3 was returning 'dynamic' stability for undefined predicates,
	it now fail.
Files modified: db.pl
Name:	emmanuel
Date:	8.11.90

---
Number:	428
Name:	micha
Date:	6.11.90
Topic:	debugger + GC (?)
What:	% cd /home/cygnus/micha/src/pl/Analyser
	% sepia
	[sepia]: [load], trace.
	[sepia]: go.		% then type cs^Caa (creep, skip, Ctrl-C, abort, abort)
	...
	GC internal error: illegal tag (60) in compact_and_udpate
	...

Fixed:	REQUEST_ABORT makes exit_block(abort) rather than call(abort)
Files modified: ase.c emu.c debug_opt.c
Name:	joachim
Date:	21.11.90

---
Number:	427
Name:	joachim (thierry)
Date:	5.11.90
Topic:	redefinitions/inline expansion
What:	compiling a call inside not/1 does not set the reference flag of
	the called procedure, so redefinitions are not properly checked:
	[sepia]: [user].
	 p :- not instance(a,a).
	user       compiled 164 bytes in 0.00 seconds

	yes.
	[sepia]: cprolog, p.		% cprolog redefined instance/2
	loading the library /usr/local/SEPIA/lib/cprolog.pl
	loading the library /usr/local/SEPIA/lib/cio.pl
	Aborting execution....

Fixed:	was because of a simple condition
Files modified: pass2.c
Name:	micha
Date:	6.11.90

---
Number:	426
Name:	joachim
Date:	30.10.90
Topic:	display/1,2
What:	prints variables wrong:
	[sepia]: display(A).
	'_'("A")

Fixed:	removed a forgotten modification for testing
Files modified: write.c
Name:	joachim
Date:	30.10.90

---
Number:	425
Name:	seidl
Date:	25.10.90
Topic:	user_start
What:	Calling break/0 from user_start does not work (missing initialisation)
	% cat file
	:- global user_start/0.
	user_start :- break.

	% sepia -b file
	type error in incval(break_level)
	Aborting execution....
	SEPIA Version 3.0.11, Thu Oct 18 18:00 1990 Copyright ECRC GmbH

Fixed:	
Files modified: top.pl
Name:	joachim
Date:	5.11.90

---
Number:	424
Name:	jacques
Date:	22.10.90
Topic:	redefinitions
What:	protected predicate can be redefined even if already referenced.
	[sepia]: [user].
	 foo(X) :- X is 1 + 1.
	 :- local is/2.
	 is(_, _).
	 user       compiled 92 bytes in 0.02 seconds
	yes.
	[sepia]: foo(X).
	X = X
	yes.

Fixed:	extended the is_inconsistent() and get_compatible_type() functions
	so that they check for redefinition of proctected procedures too.
Files modified: bip_module.c proc_desc.c
Name:	emmanuel
Date:	25.10.90

---
Number:	423
Name:	jacques
Date:	22.10.90
Topic:	redefinitions
What:	
	[sepia]: [user].
	 p(X) :- write(X).
	user       compiled 92 bytes in 0.00 seconds
	yes.
	[sepia]: local write/1.
	yes.
	[sepia]: assert(write(_)).
	no.

Fixed:	bip_error was not checked after failure of dynamic_/3
Files modified: events.pl
Name:	joachim
Date:	22.10.90

---
Number:	422
Name:	nabiel
Date:	22.10.90
Topic:	cprolog compatibility
What:	current_predicate/2 and current_functor/2 are wrong,
	they should return a structure as 2nd argument

Fixed:	
Files modified: cprolog.pl
Name:	joachim
Date:	22.10.90

---
**********************************************************
 VERSION 3.0.11 INSTALLED HERE, 2 not yet fixed
**********************************************************
---
Number:	421
Name:	micha
Date:	11.10.90
Topic:	restore, -r
What:	When calling a saved state from another directory, ccd/1 points
	to the directory of the saved state and not to the current directory.
	(why is restore() called twice?)

Fixed:	reset ccd to the new working directory after restoring (in restore())
Files modified: sav_res.c
Name:	emmanuel
Date:	15.10.90

---
Number:	420
Name:	micha
Date:	5.10.90
Topic:	quintus compatibility
What:	In statistics/2, many quintus items are missing.

Fixed:	
Files modified: environment.pl
Name:	micha
Date:	5.10.90

---
Number:	419
Name:	micha
Date:	4.10.90
Topic:	error_handler/2
What:	[sepia]: external(v/0, p_dbgcomp).

	yes.
	[sepia]: (import error_handler/2 from sepia_kernel),
		set_error_handler(145, error_handler/2).

	yes.
	[sepia]: [user].
	 v.
	 procedure being redefined in another file in v / 0 , Segmentation violation - maybe machine stack overflow

Fixed:	The culprit was not expected to be an external predicate. Also
	non-consecutive clauses might have been reported for such redefinition.
Files modified: procedure.c
Name:	micha
Date:	5.10.90

---
Number:	418
Name:	joachim (jeanmarc)
Date:	28.9.90
Topic:	
What:	[sepia]: [user].
	 p(X) :-
	        nonground(X)
	        ->      (nonvar(X)
	                -> writeln(a)
	                ;  (member(a,[]) -> writeln(b) ; writeln(c))
	                )
	        ; writeln(d).
	 user       compiled 472 bytes in 0.02 seconds
	
	yes.
	[sepia]: p(X).
	loading the library /usr/local/SEPIA/lib/lists.pl
	c
	
	X = X
	yes.
	[sepia]: p(X).
	Aborting execution....

Fixed:	In A->B;C, B has to be treated independently, due to the
	algorithm used.
Files modified: pass2.c
Name:	micha
Date:	1.10.90

---
Number:	417
Name:	joachim (steven)
Date:	28.9.90
Topic:	compiler
What:	[sepia]: [user].
	 unify(A,B) :- var(B), unify2(B,A).
	 unify2(A,B) :- occurs(A,B), !, fail.
	 unify2(A,A).
	 user       compiled 272 bytes in 0.02 seconds
	yes.
	[sepia]: unify(0,A).
	no (more) solution.	% should succeed

Fixed:	When Puts_value pushes a named/cdt variable on the local stack,
	it must not be reused, otherwise it intrudes into an argument register.
Files modified: body.c
Name:	micha
Date:	28.9.90

---
Number:	416
Name:	micha
Date:	27.9.90
Topic:	kegitool
What:	tracetool does not work, because getenv/2 in trace/0 fails

Fixed:	use a string instead of an atom in getenv/2
Files modified: debug.pl
Name:	emmanuel
Date:	28.09.90

---
**********************************************************
 VERSION 3.0.9 INSTALLED HERE, 6 not yet fixed
**********************************************************
---
Number:	415
Name:	joachim (emmanuel)
Date:	16.9.90
Topic:	assembler version only
What:	Bad module argument passed to the error handler:
	[sepia]: [user].
	 p(_,_,M) :- writeln(M).
	 :- set_error_handler(4,p/3).
	 user       compiled 56 bytes in 0.00 seconds

	yes.
	[sepia]: arg(_,_,_).
	BAD_TERM_0x800000f9_0xc0b50

Fixed:	
Files modified: ase.c
Name:	joachim
Date:	26.9.90

---
Number:	414
Name:	emmanuel (anna)
Date:	25.09.90
Topic:	module
What:	when an imported procedure is declared as local, an error
	is raised (import links must be abolished explicitely).
	To be consistent, this must also be the case when
	a procedure is compiled while already imported.

Fixed:	raise the error
Files modified: procedure.c
Name:	emmanuel
Date:	25.09.90

---
Number:	413
Name:	emmanuel (anna)
Date:	25.09.90
Topic:	module
What:	the tool flag is not removed from the descriptor when a tool
	inteface is recompiled

Fixed:	reset it when recompiling
Files modified: procedure.c
Name:	emmanuel
Date:	25.09.90

---
Number:	412
Name:	joachim (mireille)
Date:	25.9.90
Topic:	set_chtab/2
What:	[opium]: set_chtab(0'\, symbol), read(X), set_chtab(0'\, escape), write(X).
		'toto''tutu'.
	toto'tutu
	X = 'toto''tutu'		<-- should use the backslash

Fixed:	was broken by a recent "improvement"
Files modified: lex.c
Name:	joachim
Date:	25.9.90

---
Number:	411
Name:	joachim (stephane)
Date:	25.9.90
Topic:	quintus
What:	set_output/1 does not work

Fixed:	typo
Files modified: quintus.pl
Name:	joachim
Date:	25.9.90

---
Number:	410
Name:	joachim
Date:	24.9.90
Topic:	printf
What:	toplevel output is wrong in quintus mode:
	SEPIA Version 3.0.8, Fri Aug 31 09:07 1990 Copyright ECRC GmbH
	[sepia]: quintus, X=1. 

	X = %PQw
	yes.

Fixed:	defined printf_/5 taking format control character as argument
Files modified: write.c io.pl events.pl boot_bips.pl quintus.pl
Name:	joachim
Date:	24.9.90

---
Number:	409
Name:	emmanuel (mireille)
Date:	21.09.90
Topic:	term_string/2
What:	it is not a tool so that it does not respect local operators,...

Fixed:	made term_string/2 module dependent (be a tool and call
	bodies of writeq/2 and read/2.
Files modified: kernel.pl, tconv.pl
Name:	emmanuel
Date:	21.09.90

---
Number:	408
Name:	emmanuel
Date:	12.9.90
Topic:	debugger
What:	the invocation numbers of goals delayed in skipped b.i. are wrong

Fixed:	typo
Files modified: debug.c
Name:	emmanuel
Date:	12.9.90

---
Number:	407
Name:	emmanuel
Date:	12.9.90
Topic:	if-then-else
What:	the history package is broken, a segmentation violation
	occurs in check_goal/3 (huge if-then-else).

SEPIA Version 3.0 development, Wed Aug  1 17:01 1990 Copyright ECRC GmbH
[sepia]: lib(history).
loading the library /home/lp/sepia/workdir/sepia/lib/history.pl
loading the library /home/lp/sepia/workdir/sepia/lib/array.pl
loading the library /home/lp/sepia/workdir/sepia/lib/dynamic.pl

yes.
[sepia 1]: true.
Segmentation violation - maybe machine stack overflow
Aborting execution....

Fixed:	pass2 and pass3 were disagreeing on ,/2 as an alternative in
	if-then-else. Pass 2 used the same cut pointer, pass3 did not.
	Actually pass2 is right, but pass3 would need more states
	to be able to propagate the information down, so it's fixed
	the easier way.
Files modified: pass2.c
Name:	micha
Date:	27.9.90

---
Number:	406
Name:	jacques
Date:	12.9.90
Topic:	writeq
What:	does not quote atoms containing backspace characters
	[sepia]: writeq('a\b').
	a
	yes.

Fixed:	moved 'unused' characters to the 'solo' class
Files modified: lex.c
Name:	joachim
Date:	12.9.90

---
Number:	405
Name:	emmanuel
Date:	12.9.90
Topic:	system_debug
What:	NO_ARGS must be set when puts of void variables are optimised away
[sepia]: [user].
 :- system_debug.
 p :- X = 1.

yes.
[sepia]: als p.

p/0 (1359716):
	Debug_esc                 	=/2 sepia  CALL /* + NO_ARGS ! */
	Debug_port                	*EXIT
	Debug                     	p/0 sepia *EXIT
	Retd

Fixed:	
Files modified: pass3.c
Name:	micha
Date:	27.9.90

---
Number:	404
Name:	emmanuel
Date:	12.9.90
Topic:	system_debug
What:	
[sepia]: [user].
 :- coroutine.
 :- system_debug.
 p :- A < 3, A = 2.

yes.
[sepia]: als p/0.

p/0 (1382652):
	Puts_constant             	tag <107> const <c5380>
	Puts_integer              	3
	Puts_named_variable       	A
	Debug_esc                 	</2 sepia  CALL
	Escape                    	< / 2
	Debug_port                	*EXIT
/*
 =/2 must be executued otherwize the </2 is not resumed
*/
	Debug_esc                 	=/2 sepia  CALL
	Debug_port                	*EXIT
	Space                     	-3
	Resrd

Fixed:	added IsMut check in arithmetic transformation
Files modified: pass2.c
Name:	joachim
Date:	1.10.90

---
Number:	403
Name:	joachim
Date:	10.9.90
Topic:	gc
What:	in Chat, the garbage collector gives the message:
	GC internal error: bad target tag (8) in mark_from

Fixed:	case TDBREF was missing, however, the gc worked properly
Files modified: gc_stacks.c
Name:	joachim
Date:	10.9.90

---
Number:	402
Name:	joachim (anna)
Date:	7.9.90
Topic:	interrupt saftey
What:	Some compiler optimisations between head and first subgoal are
	not interrupt safe, because the Try-instructions mark all
	arguments above the head arity as invalid.

	p(N/A) :-		<- Try instruction loads A2 with TEND
				<- N is moved to A3
		number(A),	<- an interrupt here will destroy A3 !
				<- A1 and A2 are loaded here
		q(a,b,N).
	p(_).

Fixed:	removed TEND marking from the Try instruction, do it only in
	Metacall and in the GC
Files modified: ase.c emu.c gc_stacks.c
Name:	joachim
Date:	29.9.90

---
Number:	401
Name:	anna
Date:	5.9.90
Topic:	compiler
What:	[sepia_kernel]: [user].
	 dbgcomp.
	 loading the library /home/lp/sepia/workdir/sepia/lib/io.pl
	user       compiled 28 bytes in 0.00 seconds
	Spurious interrupt in protected code!!!

Fixed:	the flags were 1) overwritten, 2) not tested. for all_dynamic ditto
Files modified: procedure.c
Name:	micha
Date:	5.9.90

---
Number:	400
Name:	micha
Date:	4.9.90
Topic:	rtoken
What:	Syntax errors in rtoken cause a crash:
	[sepia]: rtoken(X).
		'		% newline typed
	Segmentation violation - maybe machine stack overflow

Fixed:	rtoken/1 did not mark the error location
Files modified: bip_io.c
Name:	micha
Date:	5.9.90

---
Number:	399
Name:	micha
Date:	3.9.90
Topic:	atomic/1
What:	atomic/1 succeeds on a suspended variable.

Fixed:	(in emu.c by micha)
Files modified: emu.c ase.c
Name:	micha/joachim
Date:	10.9.90

---
**********************************************************
 VERSION 3.0.8 INSTALLED HERE, 2 not yet fixed
**********************************************************
---
Number:	398
Name:	micha
Date:	27.8.90
Topic:	printf/2,3
What:	printf("%%", []) doesn't work

Fixed:	
Files modified: write.c
Name:	micha
Date:	28.8.90

---
Number:	397
Name:	emmanuel (anna)
Date:	27.8.90
Topic:	debugger & expanded goals
What:	problem when setting expnaded goals to skipped:
	the debugger tries to request an environment !

[sepia]: module(sepia_kernel).
[sepia_kernel]: skipped((not)/0).

yes.
[sepia_kernel]: module(sepia).
[sepia]: a(1).
  (1) 0  CALL   a(1) (dbg)?- creep
S (2) 1  CALL   not (dbg)?- creep
WARNING: Debug(CALL) not followed by a call/jmp instruction
Segmentation violation - maybe machine stack overflow
Aborting execution....

Fixed:	a new flag is set in the port when the argument are not available.
	The goal is then traced as Name/Arity and this is then
	skipped (when set to skipped) like an externals (no REQUEST).
Files modified: debug.c debug_opt.c debug.h debug_types.h gc_stacks.c
Name:	emmanuel & micha
Date:	28.8.90

---
Number:	396
Name:	micha
Date:	24.8.90
Topic:	compatibility packages
What:	[sepia]: quintus.

	yes.
	[sepia]: module(a).
	[a]: quintus.

	yes.
	[a]: format('a', []). 
	calling an undefined procedure format(a, []) in module a
	-> calling quintus/0 in the second module does not work

Fixed:	import even when already in the right mode
Files modified: boot_bips.pl
Name:	joachim
Date:	25.8.90

---
Number:	395
Name:	emmanuel
Date:	24.08.90
Topic:	debugger warnings
What:	the warning when an if branch of ->/2 is a non deterministic woken goal
	is not always raised when the choice point is nested in the
	woken goal.

Fixed:	this was broken by fix #355: the NDE flag must be reset AFTER
	the warning check.
Files modified: debug.c
Name:	emmanuel
Date:	24.08.90

---
Number:	394
Name:	joachim (an old one from mark wallace)
Date:	24.8.90
Topic:	constructive negation
What:	
	[sepia]: lib(cn), [user].
	 p(1).
	 p(X) :- X ~= 1.
	 user       compiled 148 bytes in 0.00 seconds

	yes.
	[sepia]: forall([X], p(X)).

	X = _g37
	yes.
	[sepia]: forall([X], (true, p(X))).

	X = _g43
	yes.
	[sepia]: forall([X], (_=a, p(X))).

	no (more) solution.				!!!

Fixed:	lib(cn) dropped
Files modified: 
Name:	
Date:	

---
Number:	393
Name:	joachim
Date:	24.8.90
Topic:	constructive negation
What:	type check binds variable:
	[sepia]: lib(cn), forall(X, true).
	loading the library /usr/local/SEPIA/lib/cn.pl

	X = []
	yes.

Fixed:	using global error variable
Files modified: cn_kernel.pl
Name:	joachim
Date:	25.8.90

---
Number:	392
Name:	micha
Date:	23.8.90
Topic:	file_query/2
What:	It is not possible to make ptags of meter.pl, because the getval/2
	query is not executed and so set_flag/2 gets a free variable.

Fixed:	in file query set_flag/2 only some flags are allowed
Files modified: io.pl
Name:	micha
Date:	23.8.90

---
Number:	391
Name:	micha (emmanuel)
Date:	16.8.90
Topic:	compiled disjunctions
What:	a->(b->c;a==c->d;e);f	does not compile ok

Fixed:	In A->B;C the parent cut variable can be used in B but not in A;
	single ->'s are handled differently
Files modified: pass2.c
Name:	micha
Date:	16.8.90

---
Number:	390
Name:	micha
Date:	16.8.90
Topic:	gc
What:	When running the sepia-puzzle demo on the sun-4, the first GC:
	[sepia]: GC .signal BUS (bus error) in mark_from_control_frames at line 1041 in file "gc_stacks.c"
	 1041               size = EnvSize((pword**)env + 1);

Fixed:	the compiler treated user-defined goals in an arithmetic expression
	as simple
Files modified: pass2.c
Name:	micha
Date:	27.8.90

---
Number:	389
Name:	emmanuel (steven)
Date:	14.8.90
Topic:	coroutine + ass emu ???
What:	Segmentation violation that only occurs with the
	installed version (no matter with/without the debugger,
	 dbgcomp or nodbgcomp, gc on or off)
	
SEPIA Version 3.0.7, Mon Aug  6 18:07 1990 Copyright ECRC GmbH
[sepia]: ['/home/lp/emmanuel/debug/code/stevbug.pl'].
/home/lp/emmanuel/debug/code/stevbug.pl compiled 13536 bytes in 0.28 seconds

yes.
[sepia]: meta_p(A,B).
Segmentation violation - maybe machine stack overflow
Aborting execution....
SEPIA Version 3.0.7, Mon Aug  6 18:07 1990 Copyright ECRC GmbH
[sepia]: 

Fixed:	binding a non-standard variable did not check for universally
	quantified variables (TUNIV tag)
Files modified: ase.c
Name:	joachim
Date:	17.8.90

---
Number:	388
Name:	micha
Date:	13.8.90
Topic:	cprolog
What:	floor/2 is missing

Fixed:	
Files modified: cprolog.pl
Name:	micha
Date:	16.8.90

---
Number:	387
Name:	micha (kay)
Date:	10.8.90
Topic:	setting coroutine in demos
What:	When the user compiles something, he is no longer able to start
	the demos because of coroutine/0 there.

Fixed:	Defined the procedure may_switch_coroutine/0 exported in sepia_kernel
	which succeeds if coroutine/0 will succeed
Files modified: boot_bips.pl kernel.pl
Name:	micha
Date:	10.8.90

---
Number:	386
Name:	micha
Date:	10.8.90
Topic:	tyi/1
What:	[sepia]: tyi(X).
	<^C typed>

interruption: type a, b, c, e, or h for help : ? continue
system interface error: Error 0 in tyi(input, _g25)

Fixed:	errno was overwritten in the interrupt handler
Files modified: io.c
Name:	micha
Date:	10.8.90

---
Number:	385
Name:	micha (bolle)
Date:	9.8.90
Topic:	getwd.c
What:	It compares a dir structure read from the directory with the result
	of stat(2). On a big endian machine that mounts file systems from
	a low endian one these are different - stat gives the correct
	number whereas read gets one of the two number wrong.
	E.g. drs80:/usr1/kcmh/HOSTSW/src/kcmpc fails because
	parent src is drs80 whereas currrent dir is mounted from phoebe.


Fixed:	always using stat
Files modified: getwd.c
Name:	micha
Date:	10.8.90

---
Number:	384
Name:	micha
Date:	8.8.90
Topic:	getcwd/1, compile/1
What:	When one of the parent directories is not readable, it is not
	possible to compile anything.
	Current directory "/" is returned as "//"

Fixed:	returning "." if nothing else can be done
Files modified: bip_misc.c
Name:	micha
Date:	10.8.90

---
Number:	383
Name:	micha
Date:	8.8.90
Topic:	coroutining
What:	Goals on the woken stack should be woken before entering
	an if-then-else construct.

Fixed:	
Files modified: pass3.c
Name:	micha
Date:	8.8.90

---
Number:	382b
Name:	micha
Date:	8.8.90
Topic:	debugger + statistics
What:	cygnus% sepia
	SEPIA Version 3.0.7, Mon Aug  6 18:07 1990 Copyright ECRC GmbH
	[sepia]: [sepia_top].
	sepia_top.pl compiled 920 bytes in 0.03 seconds
	 
	 yes.
	 [sepia]: [b1].
	 /home/lp/micha/src/pl/queens/b1.pl       compiled 1952 bytes in 0.03 seconds

	 yes.
	 [sepia]: debug(go(9, X)).
	 Start debugging - leap mode
	 ^C
	  
	  interruption: type a, b, c, d, e, or h for help : ? abort
	  Aborting execution....
	   
	   Spurious interrupt in protected code!!!nTrying to abort...Spurious interrupt in protected code!!!nTrying to abort...
	   *** SEPIA Fatal error: memory corrupted
	(can also make SEGV in debug_opt.c with proc being 7fffffff)

Fixed:	debug_sp_ must be reset to last_non_exited_ on an CALL_EXIT_BLOCK_PORT
	since it may point on an exit frame
Files modified: debug.c
Name:	emmanuel
Date:	30.8.90

---
Number:	382
Name:	micha
Date:	7.8.90
Topic:	coroutining + GC + dbgcomp
What:	The primes example causes GC internal error in dbgcomp mode.

Fixed:	when waking a sequence of builtins, no GC must be done because the
	wake stack and the wake list are active.
	Modified the debugged waking routine accordingly.
Files modified: code.c emu.c
Name:	joachim
Date:	24.8.90

---
**********************************************************
 VERSION 3.0.7 INSTALLED HERE, 2 not yet fixed
**********************************************************
---
Number:	381
Name:	joachim
Date:	3.8.90
Topic:	writeq
What:	does not quote an atom beginning with the comment sequence, so
	it can't be read in any more:
	[sepia]: writeq('/***').
	/***
	yes.

Fixed:	need_quotes() function rewritten, moved to lex.c
Files modified: lex.c write.c
Name:	joachim
Date:	6.8.90

---
Number:	380
Name:	mireille
Date:	6.8.90
Topic:	compile_term/1
What:	The input term is corrupted.

Fixed:	It did not trail.
Files modified: procedure.c
Name:	micha
Date:	6.8.90

---
Number:	379
Name:	micha
Date:	3.8.90
Topic:	memory overflow on mx300
What:	When asking too much memory on mx300, one gets the message
	system interface error: Not enough space in getcwd(getcwd).
	which is misleading.

Fixed:	The getcwd() routine makes a fork to read pwd(1); with bigger stack
	sizes it cannot fork. We now use our getwd() routine for
	all system V machines. Also the message would be now
	system interface error: Not enough space in initialization of (getcwd)
Files modified: bip_misc.c getwd.c main.c
Name:	micha
Date:	3.8.90

---
Number:	378
Name:	micha
Date:	2.8.90
Topic:	help/1
What:	On System V machines, more is in /usr/bin/more; when pg is invoked,
	it somehow skips the last page of output.

Fixed:	added /usr/bin/more to pagers
Files modified: environment.pl
Name:	micha
Date:	2.8.90

---
**********************************************************
 VERSION 3.0.6 INSTALLED HERE, 2 not yet fixed, #378 also fixed on gemini&drs
**********************************************************
---
Number:	377
Name:	joachim
Date:	30.7.90
Topic:	interrupts - assembler versions only
What:	When the interrupt handler is in prolog and a tool,
	the module is not passed correctly:
	[sepia]: set_interrupt_handler(2,writeln/1).
	yes.
	[sepia]: ^Cnot a module in write_(output, 2, Aborting execution....

Fixed:	a bug in the Fastcall instruction
Files modified: ase.c
Name:	joachim
Date:	30.7.90

---
Number:	376
Name:	emmanuel (for anna)
Date:	30.07.90
Topic:	get_flag/2
What:	get_flag(debugger_model, byrd) sets the mode to byrd !

Fixed:	
Files modified: environment.pl
Name:	emmanuel
Date:	30.07.90

---
Number:	375
Name:	joachim
Date:	30.7.90
Topic:	interrupt/gc
What:	When a garbage collection is interrupted and the interrupt
	calls exit_block/1, you get something like
	trying to access a locked module in postpone_exit(...)
	(only in the installed version where sepia_kernel is locked)

Fixed:	marked the module tags
Files modified: gc_stacks.c code.c
Name:	joachim
Date:	31.7.90

---
Number:	374
Name:	joachim
Date:	26.7.90
Topic:	delay clauses
What:	[sepia]: [user].
	 delay p([A]) if var(A).
	 user       compiled 0 bytes in 0.00 seconds

	yes.
	[sepia]: p([A|B]).	% should not delay

	A = _d61
	B = []

	Delayed goals:
	p([_d61])

Fixed:	
Files modified: head.c
Name:	micha
Date:	26.7.90

---
Number:	373
Name:	micha
Date:	27.7.90
Topic:	arithmetic
What:	[sepia]: X is round(3+4).
	number expected in round(3 + 4, _g43)

Fixed:	round/1 was missing in the eval-routine
Files modified: boot_bips.pl
Name:	joachim
Date:	27.7.90

---
**********************************************************
 VERSION 3.0.4 INSTALLED HERE, 3 not yet fixed
**********************************************************
---
Number:	372
Name:	micha
Date:	24.7.90
Topic:	coroutining+dbgcomp
What:	The money demo does not work if compiled with dbgcomp and run
	without the debugger. It works both with the debugger and
	with nodbgcomp.

Fixed:	saved the state of the waking routine in the exception frame
Files modified: emu.c emu_export.h
Name:	joachim
Date:	24.7.90

---
Number:	371
Name:	micha
Date:	24.7.90
Topic:	debugger+coroutining
What:	the woken goals are not instantiated:
	acrab4% ssepia
	SEPIA Version 3.0.3, Thu Jul 19 16:55 1990 Copyright ECRC GmbH
	[sepia]: lib(money), money.
	...
	yes.
	[sepia]: trace(call(solve(X), money)).
	Start debugging - creep mode
	B (1) 0  CALL   call(solve(_g42), money) (dbg)?- zap to port: resume
	B (570) 4  RESUME *(10, 0, _d2717) (dbg)?- creep
	B (570) 4  EXIT   *(10, 0, _d2717) (dbg)?- 

Fixed:	the debugger should not keep delay variable in the debugger
	frame. Change TMUT tags to TREF when pushing the literal
Files modified: debug.c
Name:	emmanuel
Date:	24.07.90

---
Number:	370
Name:	emmanuel
Date:	19.7.90
Topic:	debugger + coroutine
What:	goals resumed in skipped built-ins compiled in debug mode
	are sometimes not traced:
  (1) 0  CALL   p (dbg)?- leap
B (2) 1  CALL   record(n, 1)
B (2) 1  EXIT   record(n, 1)
B (3) 1  CALL   _l63 =\= 0
B (3) 1  DELAY  _d44 =\= 0
B (4) 1  CALL   recorded(n, _d44, _g52)
B (4) 1 *EXIT   recorded(n, 1, 21d850)
  (1) 0 *EXIT   p

Fixed:	check also fo IBI flag when debugged skipped called
Files modified: debug.c
Name:	emmanuel
Date:	19.07.90

---
Number:	369
Name:	emmanuel
Date:	19.7.90
Topic:	debugger + coroutine + module
What:	the 'd' option of the debugger does not show
	delayed goals defined in locked module (it does
	not always know where they were called from)

Fixed:	Always mark the module tag when displaying the delayed goals.
	Note that we can't use the debugger frame since the debugger
	does not always have the invocation
	number in the delay environment (e.g. delayed in ND proc).
	The 'security hole' is anyway present in delayed_goals/1.
	There is no way to know from where the delayed goal was
	call by looking at the delayed environment !
Files modified: debug_opt.c
Name:	emmanuel
Date:	19.07.90

---
Number:	368
Name:	joachim
Date:	19.7.90
Topic:	coroutining
What:	backtracking externals do not wake
	[sepia]: coroutine, [user].
	 test :- rerecord(k,99), X=\=0, recorded(k,X,_), ft.
	 ft :- fail.
	 ft.
	 user       compiled 260 bytes in 0.00 seconds

	yes.
	[sepia]: test.

	Delayed goals:
		99 =\= 0
	yes.

Fixed:	replaced Ret by Resr instruction
Files modified: code.c
Name:	joachim
Date:	19.7.90

---
Number:	367
Name:	micha
Date:	19.7.90
Topic:	coroutining
What:	The send more money example does not work

Fixed:	explicit resume instructions in some kernel predicates
Files modified: boot_bips.pl events.pl
Name:	joachim
Date:	19.7.90

---
Number:	366
Name:	micha
Date:	19.7.90
Topic:	coroutining
What:	after asserting something it is still possible to switch on
	the coroutining mode

Fixed:	
Files modified: dynamic.c
Name:	micha
Date:	19.7.90

---
Number:	365
Name:	micha
Date:	19.7.90
Topic:	kegitool
What:	coroutine cannot be called in the kegitool because of kegi_history

Fixed:	the history is now recorded
Files modified: kegi.pl k_env.pl
Name:	micha
Date:	19.7.90

---
**********************************************************
 VERSION 3.0.1 INSTALLED HERE, 3 not yet fixed
**********************************************************
---
Number:	364
Name:	joachim
Date:	17.7.90
Topic:	string streams
What:	The stream buffer is sometimes unnecessarily doubled, which yields
	general heap overflow

Fixed:	check in io_flush_out() if the buffer is really full
Files modified: io.c
Name:	joachim
Date:	17.7.90

---
Number:	363
Name:	micha
Date:	13.7.90
Topic:	kegi + toplevel
What:	the sepia perfmeter does not work with kegitool, because the
	15* events are not sent in the toplevel modified by kegi.

Fixed:	added a call to error 154 in kegi user_loop.
Files modified: k_env.pl
Name:	emmanuel
Date:	16.7.90

---
Number:	362
Name:	micha
Date:	13.7.90
Topic:	interrupts + gc
What:	The sepia perfmeter does not work with the garbage collector

Fixed:	removed erroneous export of EB, GB in _break() and export of
	SP and E when exiting the assembler emulator. Added 2 fields
	to assembler invocation frame to store Gbl_Sp and Gbl_E.
Files modified: emu_c_env.c ase.c
Name:	joachim
Date:	16.7.90

---
Number:	361
Name:	micha
Date:	11.7.90
Topic:	exit from sepia
What:	If something goes wrong, e.g. cannot allocate space for the stacks,
	sepia exits with 0, so that it cannot be tested in a shell script.

Fixed:	replaced by p_reset and p_exit
Files modified: bip_array.c, ase.c, bip_control.c, delay.c, dynamic.c,
	emu_c_env.c, emu_util.c, main.c
Name:	micha
Date:	1.8.90

---
Number:	360
Name:	joachim (for Michael Ratcliffe)
Date:	10.7.90
Topic:	emulator
What:	
	SEPIA Version 3.02, 7/5/90 Copyright ECRC GmbH
	[sepia]: [user].
	 go :- repeat, read(Key), display_data(Key).
	 display_data(Key) :- writeln(Key).
	 user       compiled 184 bytes in 0.00 seconds

	yes.
	[sepia]: go.
		X.
	_d243143	<--- variable overwritten

	yes.

Fixed:	Put_unsafe_valueAMT did not globalise the temporary in the
	nondeterministic case, which is wrong since it is always popped.
Files modified: emu.c ase.c
Name:	joachim/micha
Date:	10.7.90

---
Number:	359
Name:	anna
Date:	5.7.90
Topic:	aborting from debugger
What:	[sepia]: ['/home/lp/anna/bugs/sepia/missing/missing17.pl'].
	[sepia]: trace.
	[sepia]: test.
	   (1) 0  CALL   test (dbg)?- s
	   ...
	   (1) 0  FAIL   test (dbg)?- a

	loops in the emulator
	[ The problem is that the debugger has partially untrailed in order
	  to display the fail port instantiations, but the other machine
	  registers are not reset accordingly. I.e. the abstract machine
	  is in an inconsistent state and the exit_block does not work.
	]
Fixed:	The E register is now always exported together with the stack pointers.
	When the debugger untrails, it updates Gbl_E as well, so that
	untrailing cannot destroy the environment chain.
Files modified: emu_regs.h emu.c debug.c ase.c
Name:	joachim
Date:	27.8.90

---
Number:	358
Name:	micha
Date:	06.07.90
Topic:	modules
What:	abolish/1 of a not yet referenced imported/1 predicate
	should remove the import (currently makes error 100).

Fixed:	call visible_procedure() if lazy import
Files modified: bip_db.c
Name:	emmanuel
Date:	06.07.90

---
Number:	357
Name:	emmanuel
Date:	5.7.90
Topic:	leaving recursive emulators
What:	is not properly traced in the assembler version

Fixed:	modified Throw to give the same ports as the C version
Files modified: ase.c
Name:	joachim
Date:	5.7.90

---
Number:	356
Name:	joachim
Date:	5.7.90
Topic:	current_functor
What:	After having compiled chat,
	:- current_functor(X),fail.
	makes a segmentation violation

Fixed:	When the last slot in a dictionary segement was in use,
	current_functor/5 remembered an invalid pointer
Files modified: bip_db.c
Name:	joachim
Date:	5.7.90

---
Number:	355
Name:	emmanuel (for sylvie)
Date:	04.07.90
Topic:	debugger
What:	the debugger traces a choice point after inline expanded once:
	[sepia]: [user].
 p(X) :- once(X).
 a(1).
 a(2).
 user       compiled 256 bytes in 0.02 seconds

yes.
[sepia]: trace(p(a(X))).
Start debugging - creep mode
  (1) 0  CALL   p(a(_g42)) (dbg)?- creep
  (2) 1  CALL   once (dbg)?- creep
B (3) 2  CALL   call(a(_g42)) (dbg)?- creep
  (4) 3  CALL   a(_g42) (dbg)?- creep
  (4) 3 *EXIT   a(1) (dbg)?- creep
B (3) 2 *EXIT   call(a(1)) (dbg)?- creep
  (2) 1 *EXIT   once (dbg)?- creep		<---
  (1) 0 *EXIT   p(a(1)) (dbg)?- creep		<---
Stop debugging.

Fixed:	reset NDE flag
Files modified: debug.c
Name:	emmanuel
Date:	04.07.90

---
Number:	354
Name:	joachim
Date:	3.7.90
Topic:	dynamic predicates
What:	The code of dynamic predicates is not counted by the compiler.
	You always get "... compiled 0 bytes in ... seconds"

Fixed:	
Files modified: bip_db.c dynamic.c
Name:	micha
Date:	4.7.90

---
Number:	353
Name:	emmanuel
Date:	03.07.90
Topic:	debugger & portray
What:	the debugger generates error 68 if portray is not defined
	nor declared but there is a descriptor for it.

Fixed:	use visible_d_procedure() (not get_visible_procedure())
Files modified: debug_opt.c
Name:	emmanuel
Date:	03.07.90

---
Number:	352
Name:	emmanuel
Date:	02.07.90
Topic:	debugger mode
What:	reporting the debugger mode with debugging/0 fail when
	upper case skips are used & trace/1 makes SV when printing
	such modes.

Fixed:	reset the SKIP_PRINT flag when printing the debugger mode
Files modified: bip_control.c debug.pl
Name:	emmanuel
Date:	02.07.90

---
Number:	351
Name:	emmanuel
Date:	02.07.90
Topic:	debugger & streams
What:	Segmentation fault when debug_input read past eof of a non macro

Fixed:	reset_input() now check if we are in a macro before reseting
	debug_input_ with previous_input.
Files modified: debug_opt.c
Name:	emmanuel
Date:	02.07.90

---
Number:	350
Name:	steven
Date:	28.6.90
Topic:	current_record
What:	record(x,1), current_record(x). fails

Fixed:	a module argument was missing
Files modified: idb.pl
Name:	joachim
Date:	29.6.90

---
Number:	349
Name:	bolle
Date:	27.6.90
Topic:	debugger
What:	the error handlers called by skipped external should not be traced

Fixed:	use same mecanism as for skip in coroutining (a falg in the frame).
Files modified: debug.c
Name:	emmanuel
Date:	28.06.90

---
Number:	348
Name:	jojo
Date:	27.6.90
Topic:	garbage collector
What:	crashes when running ptags program on chat

Fixed:	macro transformation left an undefined pword on the global stack
Files modified: read.c
Name:	joachim
Date:	27.6.90

---
Number:	347
Name:	bolle
Date:	26.6.90
Topic:	debugger
What:	Typing an unknown command with a counter repeats the error
	message that many times

Fixed:	
Files modified: debug_opt.c
Name:	micha
Date:	26.6.90

---
Number:	346
Name:	micha
Date:	26.6.90
Topic:	exec/_
What:	It does not recognize quoting and escaping

Fixed:	_get_args recognizes ', " and \
Files modified: bip_io.c
Name:	micha
Date:	26.6.

---
Number:	345
Name:	sylvie
Date:	26.6.90
Topic:	printf
What:	In quintus mode, the printf calls from sepia_kernel have
	wrong control character.

Fixed:	checking caller module and using '%' if the kernel
Files modified: write.c
Name:	micha
Date:	26.6.90

---
Number:	344
Name:	emmanuel
Date:	22.06.90
Topic:	reclaming procedure code
What:	_reclaim_procedure() tries to reclaim the code of external
	predicates:

	[sepia]: external(p/0, p_global).

	yes.
	[sepia]: [user].
	 p.
	 loading the library /home/lp/sepia/workdir/sepia/lib/io.pl
	user       compiled 28 bytes in 0.00 seconds
	Spurious interrupt in protected code!!!
	Trying to abort...

Fixed:	checked all call to remove_procedure(code) so that it does
	not put in the chain of abolished_procedure_ codes of
	external.
Files modified: bip_db.c
Name:	emmanuel
Date:	22.06.90

---
Number:	343
Name:	emmanuel
Date:	22.06.90
Topic:	modules
What:	culprits of visibility predicates are wrong

Fixed:	use Bip_Error_Fail()
Files modified: declaration.pl bip_module.c
Name:	emmanuel
Date:	22.04.90

---
Number:	342
Name:	micha
Date:	21.6.90
Topic:	syntax options
What:	set_flag(syntax_options, no_blanks) does not work

Fixed:	no_blanks nad limit_arg_precedence were exchanged
Files modified: lex.c
Name:	joachim
Date:	21.6.90

---
Number:	341
Name:	emmanuel
Date:	21.6.90
Topic:	error checking
What:	[sepia]: interrupt(45).
	calling an undefined procedure bip_error(_g42, interrupt(45)) in module sepia_kernel

Fixed:	replaced calls to bip_error/2
Files modified: events.pl
Name:	joachim
Date:	21.6.90

---
**********************************************************
 VERSION 3.01 INSTALLED HERE
**********************************************************
Number:	340
Name:	micha
Date:	19.6.90
Topic:	see/1
What:	ignores stream 5

Fixed:	
Files modified: bip_io.c
Name:	micha
Date:	19.6.90

---
Number:	339
Name:	micha
Date:	19.6.90
Topic:	dump/compile
What:	does not reclaim the names of the DIDs being read from an .sd file

Fixed:	the did names are copied so that the read-in buffer can be reclaimed
Files modified: procedure.c dict.c
Name:	micha
Date:	19.6.90

---
Number:	338
Name:	emmanuel
Date:	15.06.90
Topic:	current_predicate/built_in/1
What:	current_predicate/6 do not return all predicate. When a
	DEFAULT descriptor is created after current_predicate/6 has
	scan the local descriptor, it is not return while scanning
	the GLOBAL descriptor.

Fixed:	do not return DEFAULT descriptors when scanning the local pri's,
	return them when scanning the globals. Do the same for lazy import.
Files modified: bip_db.c
Name:	emmanuel
Date:	15.06.90

---
Number:	337
Name:	emmanuel
Date:	12.06.90
Topic:	The debugger & interrupts
What:	The debugger is sometimes messed up when an interrupt handler
	makes an exit block (if the debugger is on but the interrupt handler
	is in nodebug mode, the debugger ignores the ports)

Fixed:	a leave port is notified whenever a recursive or an interrupt
	handler do a throw. The debugger stops tracing at each interrupt
	or recursive emulator throw (and trace again thanks to the
	additionnal leave ports).
Files modified: debug.c code.c
Name:	emmanuel
Date:	12.06.90

---
Number:	336
Name:	emmanuel
Date:	11.06.90
Topic:	get_flag/3
What:	does not return the correct flags (or fails) when the local
	descriptor is not yet created (DEFAULT (linked to global)
	or IMPORT (linked to export)).

Fixed:	fixed case 1 of p_proc_flags().
Files modified: bip_db.c
Name:	emmanuel
Date:	11.06.90

---
Number:	335
Name:	emmanuel
Date:	11.06.90
Topic:	als/1
What:	should not work on the visible but on the local procedure

Fixed:	make error ACCESSING_NON_LOCAL if module_ref is not the caller module
Files modified: bip_db.c
Name:	emmanuel
Date:	11.06.90

---
Number:	334
Name:	joachim
Date:	15.6.90
Topic:	database references
What:	[sepia]: recordz(k,apple,R), erase(k,_),
		 record(k,egg), referenced_record(R,X).

	R = 1293f8
	X = egg
	yes.

Fixed:	marking keys that may have referenced records
Files modified: bip_record.c idb.pl boot_bips.pl
Name:	joachim
Date:	15.6.90

---
Number:	333
Name:	emmanuel
Date:	15.6.90
Topic:	streams
What:	help(X) loops and creates a lot of streams, current_stream/3 makes
	a difference between atoms and strings.

Fixed:	
Files modified: environment.pl
Name:	joachim
Date:	18.6.90

---
Number:	332
Name:	micha
Date:	12.6.90
Topic:	boot error
What:	halt0/0 is called after boot error, so when it happens in a makefile,
	it does not stop.

Fixed:	
Files modified: code.c
Name:	micha
Date:	12.6.90

---
Number:	331
Name:	joachim
Date:	11.6.90
Topic:	dynamic procedures and erase_module
What:	
	[sepia]: [user].
	 :- module(m).
	 :- assert(p(1)).
	 :- module(sepia).
	 :- erase_module(m).
	 user	compiled 0 bytes in 0.00 seconds

	yes.
	[sepia]: [user].
	 xyz.
	 user	compiled 28 bytes in 0.00 seconds
	dynamic.c/_garbage_collect_proc error: procedure is not dynamic
	Aborting execution....

Fixed:	p_erase_module() and p_abolish() share the same code (abolish_proc())
	that removes proc from the procedure chaines, reclaim the
	code correctly (put it in the abolished code chain) and unlink
	the global or exported predicates.
Files modified: bip_db.c bip_module.c
Name:	emmanuel
Date:	11.6.90

---
Number:	330
Name:	joachim
Date:	8.6.90
Topic:	als/1,2
What:	does not work on sun4 with threaded code C emu

Fixed:	search in address table
Files modified: printam.c, opcode.h
Name:	joachim
Date:	11.6.90

---
Number:	329
Name:	micha
Date:	11.6.90
Topic:	compiler
What:	In procedures like
	    p(a) :- !.		% or p(X) :- !.
	    p(a).
	    p(X).
	a choice point is generated

Fixed:	
Files modified: section.c
Name:	micha
Date:	11.6.90

---
Number:	328
Name:	joachim
Date:	11.6.90
Topic:	dump/1
What:	Does not work with more strings

Fixed:	
Files modified: procedure.c
Name:	micha
Date:	11.6.90

---
Number:	327
Name:	emmanuel
Date:	8.6.90
Topic:	compiler
What:	The following does not compile right:
	 p(f(Over2, Over3),Arg2, Arg3) :-
	    q(V, Over2, Over3,
	       X1, X2, X3, X4, X5, X6, X7, X8),
	    r(Arg2, Arg3).

Fixed:	procedure->gargs might be changed, so it has to be used
	only after all _goal_pass2 calls
Files modified: pass2.c
Name:	micha
Date:	11.6.90

---
Number:	326
Name:	micha
Date:	7.6.90
Topic:	dynamic & coroutining preds + import or call_explicit
What:	The PriCode is not updated in all descriptors after
	an assert or after delay clauses have been added

Fixed:	delay: update code fields when compiling delay clauses
	dynamic: always keep a dead clause at the beginning
Files modified: 
Name:	joachim
Date:	8.6.90

**********************************************************
 VERSION 3.0 INSTALLED HERE
**********************************************************
---
Number:	325
Name:	joachim
Date:	21.5.90
Topic:	lexer
What:
	[sepia]: X=1e39.		% this works ok
	X=1e39.
	     ^ (here?)
	syntax error: illegal character
	[sepia]: X = 1e345.		% this does not

	X = Inf
	yes.

Fixed:	checking the result of atof
Files modified: lex.c
Name:	micha
Date:	23.5.90

---
Number:	324
Name:	joachim (for seidl)
Date:	25.5.90
Topic:	i/o
What:	[sepia]: set_flag(enable_interrupts, off).

	yes.
	[sepia]: tyi(X).
	<ctrl-C>
	system interface error: Error 0 in tyi(input, _g30)

Fixed:	removed errno reset
Files modified: io.c
Name:	micha
Date:	18.5.90

---
Number:	323
Name:	micha
Date:	2.5.90
Topic:	autoloading
What:	probably a problem when the autoloaded predicate makes an error:
	cygnus% ds
	SEPIA Version 2.5, 4/26/90 Copyright ECRC GmbH
	[sepia]: trace.
	loading the library /home/lp/sepia/workdir/sepia/pl/debug.pl
	yes.
	Debugger switched on - creep mode
	[sepia]: array(p, 3, a).
	B (1) 0  CALL   array(p, 3, a) (dbg)?- creep
	loading the library /home/lp/sepia/workdir/sepia/pl/array.pl
	type error in array_body(BAD_TERM_0xb0600_0x24f770, BAD_TERM_0xe9_0x12, [BAD_TERM_0xac_0xcc850, _d-362498|_d-362498], _d243184)


Fixed:	modev tool declaration to kernel.pl
Files modified: array.pl kernel.pl
Name:	micha
Date:	2.5.90

---
Number:	322
Name:	joachim
Date:	2.5.90
Topic:	current_atom/1 and current_functor/1
What:	current_atom/1 returns a good and a bad nil,
	current_functor/1 returns only bad ones:

	[sepia]: current_atom(A), atom_string(A,"[]").

	A = []     More? (;) 

	A = []     More? (;) 

	no (more) solution.
	[sepia]: functor(_,[],2), current_functor(F/2), F=[].

	no (more) solution.

Fixed:	current_atom/1 and p_current_functor
Files modified: db.pl, bip_db.c
Name:	micha
Date:	21.5.90

---
Number:	321
Name:	micha
Date:	30.4.90
Topic:	abolish/1
What:	[sepia_kernel]: abolish dump/1.
	warning: modifying a system predicate in abolish dump / 1

	yes.
	[sepia_kernel]: pred(dump/1).
	in sepia_kernel: system  prolog static tool global sepia_kernel debugged stopped
	 traceable skipped non_referenced code_defined
	--> makes only a warning, but does not abolish; It should either
	make a normal error, or really abolish.

Fixed:	changed the error handler, used another error in the compiler
Files modified: error.c, events.pl, procedure.c
Name:	micha
Date:	22.5.90

---
Number:	320
Name:	micha
Date:	24.4.90
Topic:	writeclause
What:	it should print a space before the fullstop only when necessary,
	the current output look very awkward, e.g.
	p .
	q .
	The space is necessary only if the dot could be interpreted as
	part of the preceding token, e.g.

	p(X) :- X = -- .

Fixed:	writing the clause into a string first, then checking the last char
Files modified: dynamic.pl
Name:	micha
Date:	19.5.90

---
Number:	319
Name:	jojo
Date:	20.4.90
Topic:  readvar/3
What:	SEPIA Version 2.5, 4/19/90 Copyright ECRC GmbH
	[sepia]: readvar(Term, List, input).
		X.

	Term = _g22
	Segmentation violation - maybe machine stack overflow
	Aborting execution....
	List = [['X', SEPIA Version 2.5, 4/19/90 Copyright ECRC GmbH

Fixed:	when a single variable was read, it was not created on the global stack
Files modified:  read.c
Name:	joachim
Date:	23.4.90

---
Number:	318
Name:	micha
Date:	28.3.90
Topic:	delayed events
What:	miranda8% sepia
	SEPIA Version 2.4, 3/28/90 Copyright ECRC GmbH
	[sepia]: set_flag(enable_interrupts, off).
	loading the library /home/lp/sepia/workdir/sepia/pl/environment.pl

	yes.
	[sepia]: ^C^Cset_flag(enable_interrupts, on).	% ^C typed twice
	Segmentation violation - maybe machine stack overflow
	Aborting execution....
	Aborting execution....

	SEPIA Version 2.4, 3/28/90 Copyright ECRC GmbH
	[sepia]:

Fixed:	Interrupts were enabled too soon in the emulator
Files modified: emu.c
Name:	joachim
Date:	23.5.90

---
Number:	317
Name:	joachim
Date:	5.3.90
Topic:	writeq
What:	when printing atoms or strings, writeq just outputs unprintable
	characters instead of printing them in escaped form.
	Moreover it does not use the current atom/string quotes defined
	in the lexer. 

Fixed:	write_quoted completely rewritten
Files modified: lex.c write.c
Name:	joachim
Date:	6.3.90

---
Number:	316
Name:	micha
Date:	7.3.90
Topic:	command line options
What:	miranda8% sepia -o debug
	Missing argument for the -e option

Fixed:	usage() was receiving the second char of the next word instead of the
	current.
Files modified: main.c
Name:	emmanuel
Date:	22.03.90

---
Number:	315
Name:	emmanuel
Date:	05.03.90
Topic:	compilation
What:	sepia silently compiles directories.
	If you have a file foo.pl and a directory foo,
	[foo] compiles the directory.

Fixed:	defined exists/2
Files modified: bip_io.c io.pl kernel.pl boot_bips.pl
Name:	micha
Date:	22.5.90

---
Number:	314
Name:	joachim
Date:	16.2.90
Topic:	macros
What:	local macros do not hide global ones:
	[sepia]: [user].
	c: t1(a,b).
	c: :- define_global_macro(a/0, t1/2, []).
	c: user	compiled 48 bytes in 0.00 seconds

	yes.
	[sepia]: write(a).
	b
	yes.
	[sepia]: module(other).
	[other]: [user].
	c: t2(a,c).
	c: :- define_local_macro(a/0, t2/2, []).

	yes.
	[other]: write(a).
	b
	yes.

Fixed:	while rewriting the property handling
Files modified: property.c and others
Name:	joachim
Date:	19.2.89

---
Number:	313
Name:	joachim
Date:	12.2.90
Topic:	coroutining bips
What:	times(X,0,0) gives instantiation fault in non-coroutine mode,
	but succeeds with X=0 in coroutine mode which is wrong.

Fixed:	used the same code for both
Files modified: bip_arith.c (bip_delay.c removed)
Name:	joachim
Date:	13.2.90

---
Number:	312
Name:	joachim (thierry)
Date:	12.2.90
Topic:	garbage collection
What:	garbage collection of delayed goals does not work in 2.3a

Fixed:	wrong trailing in assembler emulator
Files modified: ase.c
Name:	joachim
Date:	12.2.90

---
Number:	311
Name:	joachim
Date:	24.1.90
Topic:	delayed_goals/1/2
What:	The structures that these builtins create have no functor tags.
	This causes at least the write-routine to crash sometimes.

Fixed:	
Files modified: bip_control.c
Name:	joachim
Date:	24.1.90

---
Number:	310
Name:	joachim (for thierry)
Date:	10.1.90
Topic:	errno_id/2
What:	range check missing
	[sepia]: errno_id(-1,L).

	Segmentation violation - maybe machine stack overflow

Fixed:	
Files modified: bip_control.c
Name:	joachim
Date:	10.1.90

---
Number:	309
Name:	micha
Date:	3.1.90
Topic:	lex_an
What:	'/' at the file end is not correctly parsed (actually, so is any CM1).

Fixed:	while fixing all problems at buffer boundary
Files modified: lex.c lex.h read.c ...
Name:	micha
Date:	4.1.90

---
Number:	308
Name:	joachim (for thierry)
Date:	21.12.89
Topic:	error handling
What:	 
	[sepia]: error(0,true).
	calling an undefined procedure untraced_call(error(6, error(0, true, _g12))) 
	in module sepia_kernel

Fixed:	was already fixed in the development version
Files modified: events.pl
Name:	joachim
Date:	2.1.90

---
Number:	307
Name:	micha
Date:	21.12.89
Topic:	lex_an()
What:	1e followed by a non-integer is always interpreted as
	a floating number token.

Fixed:	with #309
Files modified: lex.c
Name:	micha
Date:	4.1.90

---
Number:	306
Name:	jojo
Date:	20.12.89
Topic:	comparing lists with compound terms
What:	[a] @< f(a).

	yes.

Fixed:	
Files modified: bip_comp.c
Name:	jojo
Date:	20.12.89

---
Number:	305
Name:	joachim(has)
Date:	14.12.89
Topic:	cprolog
What:	end of file handling is not correct (cf. cprolog manual)
	- get0/1 etc return -1 instead of CTRL-Z on eof
	- the input stream is not closed immediately
	- read/1 returns multiply end_of_file. It should close the
	  stream after the first one.

Fixed:	using two different events
Files modified: 
Name:	micha
Date:	0.0.0

---
Number:	304
Name:	micha(seidl)
Date:	13.12.89
Topic:	parsing of floats
What:	[sepia]: X is 1e-6.

	X = 0.0
	yes.

Fixed:	parsing was ok, only printing was wrong
Files modified: write.c
Name:	micha
Date:	4.1.90

---
Number:	303
Name:	micha
Date:	8.12.89
Topic:	bad culprit in the error message
What:	[sepia]: op(200, yf, a), op(300, yfx, a).
	loading the library /home/lp/sepia/workdir/sepia/pl/environment.pl
	multiple definiton postfix/infix in op_(global_op, 300, yfx, a, sepia)

Fixed:	while implementing the operator with property lists
Files modified: 
Name:	emmanuel
Date:	21.03.90

---
*******************************************************************************
VERSION 2.3 INSTALLED HERE, 7 not yet fixed
*******************************************************************************
---
Number:	302
Name:	joachim (has)
Date:	6.12.89
Topic:	compatibility packages
What:	This should give a comprehensible error message:
	[sepia]: cprolog,bsi.
	loading the library /usr/local/SEPIA/lib/cprolog.pl
	loading the library /usr/local/SEPIA/lib/bsi.pl

	*** trying to redefine a built-in procedure: tool(consult / 1, consult_body / 2)
	*** compiled query failed: ?- tool(consult / 1, consult_body / 2) , tool(reconsult / 1, reconsult_body / 2)
		before line 156 in the file /usr/local/SEPIA/lib/bsi.pl

	% loops in 2.3, failed in 2.12

Fixed:	moved cprolog/0 etc to boot_bips.pl and added tests
Files modified: boot_bips.pl and compatibility libraries
Name:	joachim
Date:	21.5.90

---
Number:	301
Name:	joachim (has)
Date:	6.12.89
Topic:	lib/1/2
What:	- When a library file is compiled, the current_compilation_directory
	  is wrong and recursive compilation does not work.
	- lib("lists") gives a type error.

Fixed:	
Files modified: top.pl
Name:	joachim
Date:	6.12.89

---
Number:	300
Name:	micha (michel)
Date:	5.12.89
Topic:	user_start/0
What:	after a restart, user_start/0 is again called which may cause
	bigger problems than the restart (i.e. an internal problem) itself.

Fixed:	split go/0 into two procedures
Files modified: top.pl main.c
Name:	micha
Date:	5.12.89

---
Number:	299
Name:	micha (has)
Date:	1.12.89
Topic:	lexer
What:	When the right comment delimiter */ is at the buffer boundary,
	a syntax error occur.

Fixed:	
Files modified: lex.c
Name:	micha
Date:	1.12.89

---
Number:	298
Name:	micha
Date:	27.11.89
Topic:	syntax errors
What:	The parser uses global variables to store the pointer to the
	buffer where the error occurred. 2 problems: when an interrupt
	occurs and makes a syntax error, the global variable is lost.
	Second, since after setting this variable it skips to the
	next fullstop, if there is no fullstop in the current buffer,
	a new buffer is read in and so the printed context will be wrong.

Fixed:	
Files modified: lex.c read.c events.pl ...
Name:	micha
Date:	2/93

---
Number:	297
Name:	joachim
Date:	15.11.89
Topic:	
What:	behaviour of redefining system predicates has changed since 2.12.
	The error message is printed, but it it nevertheless redefined:
	SEPIA Version 2.21, 10.31.89 Copyright ECRC GmbH
	[sepia]: [user].
	c: true :- writeln(hello).
	c: 
	*** trying to redefine a built-in procedure: true / 0
		before line 2 in the file user

	no.
	hello
	hello
	[sepia]: 

Fixed:	return missing in clause_error()
Files modified: procedure.c
Name:	joachim
Date:	16.11.89

---
Number:	296
Name:	Miller
Date:	7.11.89
Topic:	Users can not trace grammar rules
What:	phrase/2 and /3 are skipped so users can not trace grammar rules.

Fixed:	phrase/2/3 are unskipped now !
Files modified: macro.pl
Name:	Miller
Date:	7.11.89

Number:	295
Name:	alex
Date:	3.11.89
Topic:	control / env. stack overflow 
What:	misleading message

	SEPIA Version 2.21, 10.31.89 Copyright ECRC GmbH
	[sepia]: X = f(X, a), Y = f(Y, a), X = Y.
	Overflow on the environment/control stack.
	Use the "-l N_Kilobytes" option to have a larger stack.
	> The current sizes are: environment stack 0
        > 	                 control stack     0
	Aborting execution....
	SEPIA Version 2.21, 10.31.89 Copyright ECRC GmbH
	[sepia]: 

Fixed:	exported SP from emulator
Files modified: emu.c emu_util.c
Name:	joachim
Date:	15.11.89

---
Number:	294
Name:	joachim
Date:	2.11.89
Topic:	C stack overflow
What:	There are several occasions where the C stack can overflow, e.g.

	SEPIA Version 2.21, 11.1.89 Copyright ECRC GmbH
	[sepia]: X = f(X,a), Y = f(Y,a), X == Y.
	Illegal instruction
	miranda7% 

	In the assembler emulator this occurs even if you write a
	non-tail-recursive, endless loop:

	SEPIA Version 2.21a, 03/05/97 Copyright ECRC GmbH
	[sepia]: [user].
	c: p :- p, q.
	c: user	compiled 68 bytes in 0.00 seconds
	yes.
	[sepia]: p.
	Illegal instruction
	miranda7% 

	I couldn't find a way to trap this signal, even by adding a
	check directly in the signal catching routine _break().

Fixed:	In BSD it is possible to specify that a handler is executed on
	a separate stack, which solves the problem.
	Many thanks to paul for finding this solution.
Files modified: handlers.c, events.pl, sun_bsd.pl, vax_bsd.pl
Name:	joachim
Date:	10.11.89

---
Number:	293
Name:	joachim
Date:	14.10.89
Topic:	debugger
What:	traces internal predicates inside error/3
	[sepia]: trace.
	yes.
	Debugger switched on - creep mode
	[sepia]: error(4,s(a,s),m).
	B (1) 0  CALL   error(4, s(a, s), m) (dbg)?- creep
	B (2) 1  CALL   invalid_error(4, _l58) (dbg)?- creep
	B (3) 2  CALL   var(4) (dbg)?- creep
	B (3) 2  FAIL   var(4) (dbg)?- creep
	...

Fixed:	added untraced_call (for error/2) in error/3, added invalid_error/2
	in the skipped and untraceable lists.
Files modified: kernel.pl events.pl
Name:	emmanuel
Date:	25.10.89

---
Number:	292
Name:	joachim (for michel)
Date:	12.10.89
Topic:	reader?
What:	source_file/3 does not work in the development version, just fails.
	[sepia]: lib(lists).
	loading the library /home/lp/sepia/workdir/sepia/pl/lists.pl
	yes.
	[sepia]: source_file(append/3,X,Y).
	no (more) solution.
	[it works if lists is loaded using compile - lib/1 makes the
	difference (micha)]

Fixed:	using FSYSTEM instead of FNOSTAT
Files modified: procedure.c
Name:	micha (found by bruno)
Date:	24.11.89

---
Number:	291
Name:	micha
Date:	11.10.89
Topic:	Debugger
What:	Retry problem, see note debug #7

Fixed:	corrected the macro Trail_If_Needed() which has been corrupted
	by a previous delta. It didn't trail when the local variable was
	as old as EB. Replaced the  >  by  >= .
Files modified: emu_export.h
Name:	joachim (for emmanuel)
Date:	10.11.89

---
Number:	290
Name:	miller
Date:	10.10.89
Topic:	Loading of 'C' predicates on installed systems
What:	ICL bug 1059 (for IAW in Dublin).
	On systems installed in directories other than
	/usr/local/SEPIA the loading of C predicates does not
	work using load/2. This is because load/2 uses the
	global variable library to find the directory of the
	.o file (and not the list in library_path). library
	is not set by the installation makefile and so it
	stays as /usr/local/SEPIA (as set in top.pl).

	Why do we have both library and library_path ?
	[load/2 uses the global variable 'whoami' to find the binary sepia
	and 'library' to find aux.o. library is used in sepia before booting
	since the library path is available only after environment.pl
	is loaded. (micha)]
Fixed:	this is not a sepia bug
Files modified: 
Name:	
Date:	

---
Number:	289
Name:	joachim (for martin)
Date:	27.9.89
Topic:	delete/1
What:	
	[sepia]: get_flag(cwd,L).
	L = "/home/cygnus2/martin/"
	yes.
	[sepia]: sh("mkdir dumb").
	yes.
	[sepia]: delete(dumb).
	system interface error: Not owner in delete(dumb)
	[sepia]: sh("rmdir dumb").
	yes.

Fixed:	now also delete empty directories (using rmdir(2)).
Files modified: bip_io.c
Name:	emmanuel
Date:	24.11.89

---
Number:	288
Name:	bruno
Date:	22.9.89
Topic:	call/2
What:	[sepia]: call(a, b).
	calling an undefined procedure a in module b
	
	should be "not a module" error
	
Fixed:	
Files modified: emu.c
Name:	bruno
Date:	24.11.89

---
Number:	287
Name:	bruno
Date:	11.9.89
Topic:	compiler / parser
What:	the query "set_flag(max_vars_per_clause, xxx)" in a file has
		no effect on the allocated variable stack

Fixed:	
Files modified: procedure.c
Name:	micha
Date:	11.9.89

---
Number:	286
Name:	micha
Date:	7.9.89
Topic:	cprolog
What:	tell(File), close(File) makes an error, succeeds in C-Prolog

Fixed: redefined error_handler of error #196 
Files modified: events.pl
Name: jojo
Date:	8.9.89  	

---
Number:	285
Name:	joachim (for lefebvre)
Date:	4.9.89
Topic:	exit_block, debugger
What:	
	[sepia]: trace.
	yes.
	[sepia]: p.
	  (1) 0  CALL   p (dbg)?- creep
	  B (2) 1  CALL   error_handler(68, p, sepia) (dbg)?- creep
	  calling an undefined procedure p in module sepia
	  B (2) 1  LEAVE  error_handler(68, p, sepia) (dbg)?- abort
	  Aborting execution....	% loops

Fixed:	This bug does not occurs in the development sepia (the leave
	algorithme has been re-writen).
Files modified: none
Name:	emmanuel
Date:	11.9.89

---
Number:	284
Name:	martin
Date:	30.8.89
Topic:	io
What:	type check in get_char missing
	[sepia]: get_char('b',input).
	> b
	no.

Fixed:	already fixed
Files modified: 
Name:	bruno
Date:	6.9.89

---
Number:	283
Name:	martin
Date:	30.8.89
Topic:	io
What:	readvar works with output streams and unopened streams.
	[sepia]: readvar(T, L, output).
	> a.

	T = a
	L = []
	yes.
	[sepia]: readvar(T, L, 29).
	> a.

	T = a
	L = []
	yes.

Fixed:	already reported and fixed as bug 230
Files modified: 
Name:	bruno
Date:	6.9.89

---
Number:	282
Name:	martin
Date:	30.8.89
Topic:	io
What:	
	[sepia]:open(file1,write,s),write(abc,s),at(P1,s),close(s),
	> open(file1,update,s),read(T1,s),at(P2,s),close(s),
	> open(file1,update,s),read(T2,s),at(P3,s),close(s).

	P1 = 3
	T1 = abc
	P2 = 3
	T2 = abcabc
	P3 = 6
	yes.

Fixed:	after an eof when reading an update file the buffer looked as valid
Files modified: io.c
Name:	micha
Date:	24.11.89

---
Number:	281
Name:	joachim
Date:	30.8.89
Topic:	coroutining/debugger
What:	Goals are multiply woken in debug mode
	[sepia]: [user].
	c: delay p(X,Y) if var(X), var(Y).
	c: p(X,X) :- writeln(woken).
	c: user	compiled 184 bytes in 0.02 seconds

	[sepia]: p(X,Y), p(X,Y), X=1.
	woken
	woken

	Y = 1
	X = 1
	yes.
	[sepia]: debug.
	Leap mode switched on

	yes.
	[sepia]: p(X,Y), p(X,Y), X=1.
	woken
	woken
	woken

	Y = 1
	X = 1
	yes.

Fixed:	going always to debug_wake_simple and checking the next DE there
Files modified: emu.c
Name:	micha
Date:	6.9.89

---
Number:	280
Name:	joachim
Date:	29.8.89
Topic:	parser
What:	
	[sepia]: op(500,xfy,.).
	yes.
	[sepia]: X = .(a,.(b,.(c,[]))).
	X = [a, b, c]
	yes.
	[sepia]: X = a.b.c.[].
	X = a '.' b '.' c '.' []	<-- not transformed into a list !
	yes.

Fixed:	
Files modified: read.c
Name:	bruno
Date:	30.8.89

---
Number:	279
Name:	joachim (thierry)
Date:	25.8.89
Topic:	coroutining (probably assembler emulator)
What:	only in SEPIA 2.12a:

	[sepia]: du(X,Y),X=a.

	Y = _d89
	term of an unknown type in writeq_(...

	[sepia]: du(X,Y),Y=a.		% loops

Fixed:	A dereferencing step in the diff-routine was missing. Unfortunately
	we can not rely on not having delay tags in the local stack ...
Files modified: ase.c
Name:	joachim
Date:	30.10.89

---
Number:	278
Name:	joachim (thierry)
Date:	25.8.89
Topic:	coroutining
What:	
	[sepia]: [user].
	c: delay dg(X) if var(X).
	c: dg(X).
	c: delay du(X,Y) if X \== Y.
	c: du(X,Y).

	[sepia]: dg(A), du(X,Y), X=A, X=Y.
	A = _d117
	X = _d117
	Y = _d117
	Delayed goals:
		dg(_d117)
		du(_d117, _d117)  <--- flounders forever

	the same with:

	[sepia]: dg(A), dg(B), du(X,Y), X=A, Y=B, X=Y.
	[sepia]: dg(A), dg(B), du(X,Y), X=A, Y=B, X=a, Y=a.

Fixed:	transfer the delay-if-unif list when unifying two delaying variables
Files modified: emu_c_env.c
Name:	abder/joachim
Date:	25.10.89

---
Number:	277
Name:	joachim
Date:	24.8.89
Topic:	occurs/2
What:	does not work with delaying variables:
	[sepia]: coroutine, 3 is X, occurs(X,s(b,c,X,a)).
	loading the library /usr/local/SEPIA/lib/coroutine.pl
	type error in occurs(_d99, s(b, c, _d99, a))
	[sepia]:

Fixed:	in _occurs(), also tail recursion optimised.
Files modified: bip_comp.c
Name:	joachim
Date:	24.8.89

---
Number:	276
Name:	micha
Date:	23.8.89
Topic:	exit_block/1
What:	exit_block(_) raises an error but also makes a restart. The installed
	Sepia (asm) just hangs.

Fixed:	create new block before calling the error handler
Files modified: top.pl events.pl
Name:	joachim
Date:	30.11.89

---
Number:	275
Name:	bruno (michel)
Date:	22.8.89
Topic:	write / writeq
What:	[sepia]: write([(a|b)]).
	[a | b]			% should be [(a|b)] 
	yes.

Fixed:	
Files modified: write.c
Name:	bruno
Date:	25.8.89

---
Number:	274
Name:	micha
Date:	22.8.89
Topic:	assert/1
What:	After assert/1, the junk on the global stack is not popped.

Fixed:	
Files modified: bip_db.c
Name:	micha
Date:	22.8.89

---
Number:	273
Name:	micha (hong kong)
Date:	21.8.89
Topic:	concat_atoms/3
What:	It does not reclaim the space for the concatenated string
	when it already exists.

Fixed:	
Files modified: bip_strings.c
Name:	bruno
Date:	4.9.89

---
Number:	274
Name:	micha (hong kong)
Date:	21.8.89
Topic:	heap, parser
What:	The parser does not reclaim all the space it is allocating.
	The function _paf always mvoes the string in to the heap first,
	but does not deallocate it when it turns out that it is
	already there.

Fixed:	newdid has extra argument setted to one if the atom was
	already in the dictionary ; in this case, the space for
	the corresponding string is reclaimed
Files modified: read.c dict.c
Name:	bruno
Date:	4.9.89

---
Number:	273
Name:	micha (hong kong)
Date:	21.8.89
Topic:	heap, parser
What:	The parser always allocates space for the variable stack on the heap.
	This is usually big so that often a new block of memory must be
	allocated. If, during parsing, some items are allocated on the heap,
	e.g. atoms or strings, they are allocated from the same block,
	before the variable stack. The variable stack is finally reclaimed,
	but not the space for the string (since it is needed). Next time,
	when some space is needed from the heap, it is taken from the
	space previously occupied by the variable stack and when the
	parser is again called, it cannot re-use that block since it is
	now smaller, so it gets a new one. If this process is repeated
	sufficiently often, as is the case with PCE, the heap ands up
	having tens or hundreds of free blocks of size smaller than the
	variables stack size.
	[Can be fixed, at least temporarily, using a "second fit" method,
	as opposed to the first fit begin used now. A better solution is
	not to return the block to the memory manager (but take interrupts
	into account!)]

Fixed:	has been fixed by modifying the memory management
Files modified: ?
Name:	paul, perez
Date:	

---
Number:	272
Name:	joachim
Date:	20.8.89
Topic:	macro transformation
What:	there is no check for the transformation function having arity 2.

Fixed:	Used the macros Get_Proc_Did and Get_Functor_Did for checking
Files modified: read.c
Name:	joachim
Date:	20.8.89

---
Number:	271
Name:	micha
Date:	16.8.89
Topic:	interrupt/1
What:	For some interrupts it does not really send the signal, it only calls
	the handler.

Fixed:	now calls the handler directly if possible, else sends the signal.
Files modified: handlers.c
Name:	joachim
Date:	26.11.89

---
Number:	270
Name:	micha
Date:	16.8.89
Topic:	make_array/2
What:	It does not accept array with name '.' and 2 dimensions.

Fixed:	
Files modified: bip_array.c bip_control.c
Name:	bruno
Date:	21.9.89

---
Number:	269
Name:	micha
Date:	16.8.89
Topic:	term_string/2
What:	it yields end_of_file with term_string(T, ""). It should
	fail (?) instead.
	If the string contains more than the term, it succeeds:
	    ?- term_string(X, "a. b.").
	[it could check with at_eof/1, but this would fail even if there
	are only spaces at the end, so it should probably make rtoken/2
	and trap the eof if any]

Fixed:	using rtoken/2
Files modified: tconv.pl
Name:	joachim
Date:	20.5.90

---
Number:	268
Name:	micha
Date:	16.8.89
Topic:	rtoken/2
What:	It does not check the 1st argument type.
	It does not return a proper NIL if [] is read.
	
Fixed:	type check and test for d_nil_ added
Files modified: bip_io.c
Name:	joachim
Date:	18.8.89

---
Number: 267	
Name:	eamon
Date:	14.08.89
Topic:  date/1	
What:   date("Thu Jul  6 10:00:00 1989\n"). 
	 should succeed or fail, not give an e5.
	
Fixed:	changed random/1 and getcwd/1 as well
Files modified: bip_misc.c
Name:	joachim
Date:	17.8.89
ICLFIX: 22.8.89 by david

---
Number:	266
Name:   eamon	
Date:   13.08.89	
Topic:	at/2
What:   [sepia]: open(fi,update,a), at(-1,a).
	
	no.         % should be range error.
Fixed:	Not a bug, it's specified like that
Files modified: 
Name:	joachim
Date:	1.11.89

---
Number:	265
Name:	bruno
Date:	11.8.89
Topic:	
What:	[sepia]: env.
	version:                '2.2'
	....
	macro_expansion:        off
	calling an undefined procedure gc_options(0, 0, 3) in module environment
	
Fixed:	thanks to joachim for defining gc_options
Files modified: 
Name:	bruno
Date:	11.9.89

---
Number:	264
Name:	micha
Date:	10.8.89
Topic:	panic()
What:	The messages that panic() gives are completely ununderstable.
	
Fixed:	
File modified: error.c
Name:	micha
Date:	10.8.89
ICLFIX: 22.8.89 by hugh

---
Number:	263
Name:	miller
Date:	9.8.89
Topic:	assembler emulator and -e option
What:	the following will loop using the assembler emulator
		sepia -e abort
	You have to kill the process.

	Actually it generates a segmentation violation and loops.
Fixed:	it does not loop any longer
Files modified: 
Name:	micha
Date:	5.12.89

---
Number:	262
Name:	micha
Date:	9.8.89
Topic:	get_flag/3
What:	Does no type testing on the 3rd argument (2nd as well?).
	
Fixed:	type and range checking made on 2nd and 3rd argument.
Files modified: db.pl
Name:	emmanuel
Date:	24.11.89

---
Number:	261
Name:	micha
Date:	9.8.89
Topic:	error output
What:	it is flushed, but if the handler aborts, first the prompt
	is printed and then error output is flushed.
	
Fixed:	
Files modified: top.pl
Name:	micha
Date:	9.8.89

---
Number:	260
Name:	alex
Date:	09.08.89
Topic:	set_flag/3
What:	set_flag(p/1, spy, bla) gives type error instead of range error
	
Fixed:	
Files modified: debug.pl
Name:	emmanuel
Date:	24.11.89

---
Number:	259
Name:	alex
Date:	08.08.89
Topic:	constructive negation
What:	exception handling is completely missing
	forall(a, X) will give you an overflow on the global stack
Fixed:	added type checks
Files modified: cn_kernel.pl
Name:	micha
Date:	5.12.89

---
Number:	258
Name:   eamon	
Date:   08.08.89	
Topic:  interrupt discrepancies
What:   intno.  2.2 (development)           2.12a	2.21a
          3       ^D                          yes.	exits, ok
          4       Aborting execution....      yes.	ok, handler changed
          9       yes.                        ^D	exits, ok
         10       Aborting execution....      yes.	new version ok
	 11       Aborting execution....      yes.	new version ok
	 17       yes.                        ^D	exits, ok
	 26       Signal 26                   yes.	ok, handler changed
	 28       yes.                        ^D	default, ok

Fixed:	just checked, new behaviour is ok
Files modified: 
Name:	joachim
Date:	30.11.89

---
Number:	257
Name:	micha
Date:	7.8.89
Topic:	intersection/3
What:	intersection([a, b], [a, b], [b]) succeeds. Look at the Quintus
	definition, for example.
	
Fixed:	
Files modified: lists.pl
Name:	bruno
Date:	7.8.89
ICLFIX: 22.8.89 by hugh

---
Number:	256
Name:	bruno
Date:	7.8.89
Topic:	parser + ???
What:	[sepia]: a(0.00).
	calling an undefined procedure a(0.0) in module sepia

	[sepia]: [user].
	c: b(0.00).
	c: user compiled 40 bytes in 0.03 seconds
	yes.
	
	[sepia]: c(0.00).
	c(0.00).
	     ^ (here?)
	syntax error: illegal character
	
	(it is a bug in atof which might be fixed in new Sun Os release,
	else, we have to fix it in Sepia)
		
Fixed:	it is a C bug that we can "fix" in sepia only testing for 0.0,
	0.00, 0.000, ... ; it is currently fixed for 0.0 and 0.00 as it
	seems those values are needed

Files modified: lex.c
Name:	bruno
Date:	23.8.89

---
Number:	255
Name:	eamon
Date:   07.08.89	
Topic:  substring/3	
What:   substring("ab","a",-2).  fails instead of e6 (range error).	
	
Fixed:	
Files modified: bip_strings.c
Name:	bruno
Date:	25.8.89

---
Number:	254
Name:	micha
Date:	7.8.89
Topic:	at_eof/1
What:	does not work for pipes
	
Fixed:	
Files modified: bip_io.c
Name:	micha
Date:	7.8.89
ICLFIX: 22.8.89 by hugh

---
Number:	253
Name:	alex
Date:	04.08.89
Topic:	export/1, global/1, etc.
What:	export z/(-2) should give range error instead of type error
	shouldn't we give a range error for z/5555 (this succeeds) 
	taking into account the current restriction of arity < 256
Fixed:	in the macro Get_Norm_Did()
Files modified: sepia.h
Name:	joachim
Date:	20.8.89

---
Number:	252
Name:	micha
Date:	4.8.89
Topic:	rtoken/1 comma
What:	[sepia]: rtoken(X).
	> , 

	signal SEGV (segmentation violation) in did at line 385
	
Fixed:	replace a call to did by one to in_dict in p_rtoken
Files modified: bip_io.c
Name:	bruno
Date:	4.8.89

---
Number:	251
Name:	stefano
Date:	04.08.89
Topic:	setval/getval/2
What:	[sepia]: setval(a,[m-X-X,n-Y-Y]).

	X = _g78
	Y = _g66
	yes.
	[sepia]: getval(a,X).
	
	X = [m - _g76 - _g76, n - n - n]
	yes.

	
Fixed:	can not reproduce the bug
Files modified: 
Name:	bruno
Date:	11.9.89

---
Number:	250
Name:   eamon	
Date:   03.08.89	
Topic:  set_flag/3
What:	[sepia]:  get_flag(p/2, spy, on).    
        accessing an undefined procedure 
        [sepia]: set_flag(p/2, spy, on).   
        type error          <--e5 not e60

        set_flag(h/0,visibility,local).   type error
Fixed:	
Files modified: debug.pl
Name:	bruno
Date:	3.8.89

---
Number:	249
Name:	stefano
Date:	03.08.89
Topic:	is_dynamic/1
What:	The behavior of is_dynamic/1 is inconsistent with the
	behaviour of is_predicate/1. In the first case it gives
	an error on a non defined procedure, in the second case
	it just fails:

	SEPIA Version 2.12, 6.28.89 Copyright ECRC GmbH
	[sepia]: is_dynamic(toto/0).
	accessing an undefined procedure in is_dynamic(toto / 0)
	[sepia]: [user].
	c: toto.
	c: user compiled 28 bytes in 0.02 seconds
	
	
	yes.
	[sepia]: is_dynamic(toto/0).
	
	no.
	[sepia]: is_predicate(toto2/0).
	
	no.
	[sepia]: 
	
Fixed:	This is not a bug, it corresponds exactly to its description.
Files modified: 
Name:	
Date:	

---
Number:	248
Name:   eamon	
Date:   02.08.89	
Topic:  compiled_file/2	
What:   [sepia]: sh('cat a.pl').
        a.  
        compiled_file(File, Line), writeln((File,Line)).
        b.
        yes.
        [sepia]: [a].
        user , 1     (takes Line from [sepia]: and c:)  
	** should give 'a.pl' , 2 **
        /home/cygnus/eamon/a.pl compiled 56 bytes in 0.00 seconds
        yes.	
        
Fixed:	does not switch to stream 0 before executing a query
Files modified: procedure.c
Name:	bruno
Date:	2.8.89

---
Number:	247
Name:   eamon	
Date:   02.08.89	
Topic:  current_predicate/1	
What:   the following should not be returned 
fail_if / 1, (protect) / 1, (local) / 1, (export) / 1, (als) / 1,
once / 1, (traceable) / 1, (global) / 1, (import) / 1, (unskipped) / 1,
(skipped) / 1, (untraceable) / 1, import_from / 2, (cancel) / 1,
prune_instances / 2.

Fixed:	already reported and fixed as bug #213
	prune_instances/2 is in the sorts library, i.e. not a system predicate
Files modified: 
Name:	bruno
Date:	3.8.89

---
Number:	246
Name:	alex
Date:	02.08.89
Topic:	heapalloc/1
What:	wrong type test and not reacting to increasing size of the
	heap allocated
1 cygnus: sepia -h 100 100
SEPIA Version 2.12a, 7.17.89 Copyright ECRC GmbH
[sepia]: heapalloc(X).

X = 720896
yes.

2 cygnus: sepia -h 1000 1000
SEPIA Version 2.12a, 7.17.89 Copyright ECRC GmbH
[sepia]: heapalloc(X).

X = 720896
yes.

3 cygnus: sepia -h 10000 10000
SEPIA Version 2.12a, 7.17.89 Copyright ECRC GmbH
[sepia]: heapalloc(X).

X = 720896
yes.
[sepia]: heapalloc(720896).              shouldn't this succeed ????
type error in heapalloc(720896)

Fixed:	the type problem is already fixed (see # 238)
	the -h flag is not supposed to work without -s and the code
	cannot be easily changed, so this is a feature
Files modified: 
Name:	
Date:	

---
Number:	245
Name:	joachim
Date:	1.8.89
Topic:	get_flag/3 or traceable/1 ?
What:	
	[sepia]: get_flag(p/0,leash,X).

	X = stop     More? (;) 

	no (more) solution.
	[sepia]: untraceable(p/0), traceable(p/0).

	yes.
	[sepia]: get_flag(p/0,leash,X).

	no (more) solution.			???

Fixed:	flag leash in get_flag/3 did not match the one in mem.h
Files modified: db.pl
Name:	bruno
Date:	1.8.89

---
Number:	244
Name:	alex
Date:	01.08.89
Topic:	type testing in bip argc
What:	argv(0, 1.0) fails instead of giving a type error
	
Fixed:	
Files modified: bip_misc.c
Name:	bruno
Date:	1.8.89
ICLFIX: 22.8.89 by hugh

---
Number:	243
Name:   eamon	
Date:   01.08.89
Topic:  autoload/2 typetest	
What:   autoload(as,[1]).
        autoload(as,"").    both fail instead of e5
        autoload(as,[]).    succeeds
Fixed:	
Files modified: top.pl
Name:	joachim
Date:	25.10.89

---
Number:	242
Name:	alex
Date:	01.08.89
Topic:	type testing in bip argc
What:	argc(1.0) fails instead of giving a type error
	
Fixed:	already reported as bug #224 and fixed by micha
Files modified: 
Name:	bruno
Date:	1.8.89

---
Number:	241
Name:	miller
Date:	31.07.89
Topic:	source_file/3
What:	This produces wierd results for line numbers when the
	predicate is compiled from [user]. Perhaps it should 
	return 0 for clauses compiled from user.
	
Fixed:	
Files modified: procedure.c
Name:	micha
Date:	31.7.89

---
Number:	240
Name:	miller
Date:	30.07.89
Topic:	lib/2
What:	Doesn't trap instantiation /type errors in:
		lib(sorts, X).
		lib(sorts, 1).

	I am updating the BIP book to reflect desired situation.
	
Fixed:	defined '_check_module'/2 to check the module
Files modified: top.pl bip_module.c
Name:	micha
Date:	31.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	239
Name:	miller	
Date:	30.07.89
Topic:	is_predicate/1
What:	This should fail for built-ins (currently succeeds)
	Jacques says that it should succeed !

	I am updating the BIP specs to say it fails for BIPs.
	
Fixed:	* * * NOT A BUG * * * 
Files modified: 
Name:	miller
Date:	31.07.89

---
Number:	238
Name:	miller
Date:	28.07.89
Topic:	Size BIPs
What:	The bips localsize/1, globalsize/1, heapalloc/1 and heapused/1
	all suffer from the same problems:
		- Give a type error if any input is instantiated
	They should all unify an integer provided value with the
	known system value, and fail if the values do not unify.
	They should generate a type error if a non-integer is provided.

	I am updating the BIP specs to reflect the desired situation.
	
Fixed:	
Files modified: bip_control.c
Name:	micha
Date:	31.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	237
Name:	miller	
Date:	28.07.89
Topic:	
What:	current_op/3 doesn't do any error checking for:
		Precedence - will accept anything
		Associativity - will accept anything
		Name - this is trapped by current_functor

		[sepia]: current_op(X,Y,1). 
		type error in current_functor(1, _g76, 0, 0)
		[sepia]: 
	
Fixed:	 
Files modified: db.pl
Name:	bruno
Date:	31.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	236
Name:	miller 
Date:	28.07.89
Topic:	quintus proog and installed sepia
What:	If you use quintis prolog with the installed sepia you get a message
	attempting to redefine built-in concat_atom/2. 

	This is because the installed sepia has the kegi libraries loaded
	and kegi defines concat_atom/2 to be global and system. Kegi should
	declare it's own local copy of concat_atom/2, or we should provide it
	in SEPIA (it's a handly builtin to have).
	
Fixed:	concat_atom/2 is a sepia builtin, removed its kegi definition
Files modified: kegi.pl k_pce.pl
Name:	micha
Date:	24.11.89

---
Number:	235
Name:	micha(for stefano)
Date:	28.7.89
Topic:	writeq/1
What:	[sepia]: writeq(-(-1)).
	- -1
	yes.
	[sepia]: writeq(- -1).
	writeq(- -1).
		 ^ (here?)
	
Fixed:	numbers arguments of operators parenthesized by writeq
Files modified: write.c
Name:	bruno
Date:	28.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	234
Name:   eamon	
Date:   27.7.89	
Topic:  module/1	
What:   [sepia]: module(M).
	not a module in module(_g50)   (e80 not e4?)
	
Fixed:	
Files modified: top.pl
Name:	bruno
Date:	27.7.89

---
Number:	233
Name:	alex(for pascal)
Date:	24.7.89
Topic:	delay (both in the installed and the development version)
What:	unification instead of matching is used
	[sepia]: [user].
	c: delay p([a|X]) if var(X).
	c: p(_).
	c: user	compiled 140 bytes in 0.05 seconds

	yes.
	[sepia]: p([X|Y]).

	X = a
	Y = _d77

	Delayed goals:
		p([a|_d77])
	yes.
	[sepia]: p([X|Y]), Y = a.

	X = a
	Y = a
	yes.

Fixed:	defined the instruction read_test_var which is generated before
	nonvariables in the read sequence
Files modified: opcode.h names.h printam.c head.c emu.c ase.c
Name:	micha, joachim
Date:	31.7.89

---
Number:	232
Name:	joachim
Date:	23.7.89
Topic:	
What:	
	SEPIA Version 2.2, 7.23.89 Copyright ECRC GmbH
	[sepia]: als p/0.
	illegal stream mode in at_eof(toplevel_input)
	[sepia]: als p/0.
	miranda7% 
	
Fixed:	
Files modified: bip_db.c
Name:	micha
Date:	31.7.89

---
Number:	231
Name:	micha
Date:	21.7.89
Topic:	syntax errors
What:	[sepia]: get(X).
	loading the library /home/lp/sepia/workdir/sepia/pl/io.pl
	> abcd

	X = 97
	yes.
	[sepia]: nl.
	nl.
	 ^ (here?)
	 syntax error: postfix/infix operator expected
	There is a syntax error because of the 'bcd' typed, but it is not
	shown in the error message.
		
Fixed:	is a feature : only the last line of the input is shown
Files modified: 
Name:	bruno
Date:	25.7.89

---
Number:	230
Name:	micha
Date:	21.7.89
Topic:	IO
What:	Various IO predicates don't check their stream argument, e.g. get(X, 9).
	
Fixed:	check in getch(), no check in switch_stream
Files modified: io.c bip_io.c read.c
Name:	micha
Date:	21.7.89

---
Number:	229
Name:   eamon	
Date:   20.7.89   	
Topic:  at/2	
What:   at(4.3,7) gives e192 not e5	
	
Fixed:	
Files modified: bip_io.c
Name:	micha
Date:	20.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	228
Name:	eamon
Date:	20.7.89
Topic:	at/2
What:   open, write('queenie.'),close,open,write('cat.') to a file.	
        Then read(T,Stream) from it gives T = ie instead of T = nie
Fixed:	files in update mode did not work well, losing always one character
Files modified: io.c
Name:	micha
Date:	20.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	227
Name:	micha
Date:	20.7.89
Topic:	spied/1
What:	spied/1 prints a message if the goal is being spied instead of just
	succeeding. It accepts a sequence of proedures, but behaves incorrectly
	then. It should accept just one and succeed or fail (it is superseeded
	by get_flag/3 anyway).
	
Fixed:	Actually, this behaviour is mentioned in all manuals, so it's not a bug.
Files modified: 
Name:	
Date:	

---
Number:	226
Name:	micha (lefebvre)
Date:	20.7.89
Topic:	open/3
What:	If 24 files are open, a strange message is printed and sepia loops
	and cannot be killed.
	
Fixed:	find_free_stream() did not double the stream table correctly
Files modified: io.c
Name:	micha
Date:	20.7.89

---
Number:	225
Name:	joachim
Date:	
Topic:	pathname/2 and suffix/2
What:	does not accept atoms
	
Fixed:	if they do, what is their result? Better to keep them as they are.
Files modified: 
Name:	
Date:	

---
Number:	224
Name:	joachim
Date:	19.7.89
Topic:	argc/1
What:	type check missing
	
Fixed:	(please fix things like this immediately)
Files modified: bip_misc.c
Name:	micha
Date:	21.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	223
Name:	joachim
Date:	19.7.89
Topic:	events
What:	set_interrupt_handler/2 should never fail, but make a
	system interface error if an attempt is made to refdefine the
	handler for signals 9 and 17
	
Fixed:	
Files modified: handlers.c
Name:	micha
Date:	21.7.89

---
Number:	222
Name:	bruno
Date:	18.7.89
Topic:	macro expansion
What:	[sepia]: define_global_macro(a/1, t/2, []).
	yes.
	[sepia]: a(1).
	calling an undefined procedure t(a(1), _g176) in module sepia
	instantiation fault in _g56    <-- a variable should not be passed
	[sepia]: 		       to the compiler, error status is better
	
Fixed:	create new error : error in source transformation
Files modified: read.c lex.c io.pl error.c events.pl
Name:	bruno
Date:	25.7.89

---
*******************************************************************************
VERSION 2.12 INSTALLED HERE, 19 not yet fixed
*******************************************************************************
---
Number:	221
Name:	joachim
Date:	14.7.89
Topic:	i/o buffering
What:	It should be made sure that there is no pending output left
	when the system waits for input:

	[sepia]: write(hello,output).
	hello
	yes.
	[sepia]: write(hello,error).

	yes.
	[sepia]: flush(error).
	hello
	yes.
	
Fixed:	
Files modified: top.pl
Name:	micha
Date:	21.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	220
Name:	joachim
Date:	14.7.89
Topic:	
What:	atom_length does not treat [] as an atom (gives type error)
	
Fixed:	
Files modified: bip_strings.c
Name:	bruno
Date:	18.7.89
ICLFIX: 22.8.89 by hugh

---
Number:	219
Name:	michel
Date:	13.7.89
Topic:	io
What:	close/1 complains after redirecting output to a file
	> [sepia]: open(pred_list,write,S), set_stream(output,S), pred_list, close(S).
	> trying to modify a system stream in close(6)
	
Fixed:	This is no bug, system streams cannot be closed.
Files modified: 
Name:	
Date:	

---
Number:	218
Name:	micha
Date:	12.7.89
Topic:	debugger, io
What:	The 'R' option does not work
	
Fixed:	getch() was reading the same character repetitively
Files modified: io.c
Name:	micha
Date:	12.7.89

---
Number:	217
Name:	jacques
Date:	12.7.89
Topic:	op/3
What:	succeeds though it should raise an error

SEPIA Version 2.12a, 6.28.89 Copyright ECRC GmbH
[sepia]: op(foo, bar, X).

X = []
yes.
[sepia]:
	
Fixed:	
Files modified: environment.pl
Name:	micha
Date:	21.7.89

---
Number:	216
Name:	micha (michel)
Date:	11.7.89
Topic:	dummy_call/0
What:	its code is 0 so that is_predicate/1 and other preds that check the code
	abort.
	
Fixed:	initialized code to dummy_call/0
Files modified: code.c
Name:	micha
Date:	11.7.89

---
Number:	215
Name:	micha (jacques)
Date:	7.7.89
Topic:	protected predicates
What:	They can be redefined locally although the manual says they cannot.
	
Fixed:	
Files modified: bip_module.c procedure.c code.c 
Name:	bruno
Date:	24.11.89

---
Number:	214
Name:	joachim
Date:	7.7.89
Topic:	
What:	,/4 ;/4 ->/4 and ;/5 should be made local
	
Fixed:	
Files modified: code.c
Name:	bruno
Date:	18.7.89

---
Number:	213
Name:	joachim (for martin)
Date:	7.7.89
Topic:	SYSTEM flag
What:	The following builtins are not listed by current_builtin/1:
	    cancel / 1
	    export / 1
	    fail_if / 1
	    global / 1
	    import / 1
	    import_from / 2
	    local / 1
	    once / 1
	    protect / 1
	    skipped / 1
	    traceable / 1
	    unskipped / 1
	    untraceable / 1
	
Fixed:	
Files modified: bip_module.c
Name:	micha
Date:	18.7.89

---
Number:	212
Name:	bruno
Date:	6.06.89
Topic:	flush of output missing
What:	[sepia]: top(e3540).
	SEPIA Version 2.12, 7.6.89 Copyright ECRC GmbH
	[sepia]: ^D
	bye
 	******** PANIC ********              % shoul be before the header
 	Not enough memory (despite GC)
	
Fixed:	flushing current_err_
Files modified: error.c
Name:	micha
Date:	12.7.89

---
Number:	211
Name:	joachim
Date:	5.7.89
Topic:	io predicates
What:	at_eof does not check the stream argument
	[sepia]: at_eof(3.14).
	no.
	
Fixed:	
Files modified: bip_io.c
Name:	micha
Date:	21.7.89

---
Number:	210
Name:	joachim (for michel)
Date:	4.7.89
Topic:	op/3
What:	leaves a choicepoint:
	[sepia]: op(345,xfy,[a,b,c]),fail.
	type error in op_(global_op, 345, xfy, [c], sepia)
	
Fixed:	cut added
Files modified: environment.pl
Name:	joachim
Date:	4.7.89

---
Number:	209
Name:	joachim
Date:	26.6.89
Topic:	syntax error handling
What:	
[sepia]: ).
).
^ (here?)
syntax error: wrong solo char
[sepia]: ).			<---- I did not type this!
  ^ (here?)
syntax error: unexpected fullstop
[sepia]: 
	
Fixed:	remove my previous "improvment"
Files modified: lex.c
Name:	bruno
Date:	26.6.89

---
Number:	208
Name:	joachim
Date:	26.6.89
Topic:	error handlers
What:	a bad module argument is passed to the handler
	if an error occurs in a C builtin which is a tool
	
Fixed:	was caused by a recent change in the emulator
Files modified: emu.c
Name:	joachim
Date:	26.6.89

---
Number:	207
Name:	micha
Date:	26.6.89
Topic:	read predicates
What:	end of file does not raise an exception, end_of_file is returned
	instead. This should be the default case but it must be handled
	by a handler.
	
Fixed:	new error : end of file read ; by default, it unifies the first 
	argument of the caller with end_of_file
Files modified: read.c lex.c events.pl error.c
Name:	bruno
Date:	25.7.89

---
Number:	206
Name:	bruno
Date:	23.6.89
Topic:	parser
What:	prefix operator followed by end of file makes a syntax error
	
Fixed:	eof was not a delimiter
Files modified: read.c
Name:	bruno
Date:	23.6.89

---
Number:	205
Name:	micha
Date:	22.6.89
Topic:	handlers+coroutine+debug
What:	see notes debug #6
	
Fixed:	The module of an error handler was always sepia_kernel. Moreover,
	error handlers behave much like metacall, they might or might not
	EXIT themselves. In fact no regular error handler worked.
Files modified: emu.c newdebug.c
Name:	micha
Date:	22.6.89

---
Number:	204
Name:	micha
Date:	22.6.89
Topic:	get_chtab/2
What:	[sepia]: get_chtab(0, X).

	X = SEPIA Version 2.11, 6.19.89 Copyright ECRC GmbH
	[sepia]: ^D
	bye
	Aborting execution....
	Aborting execution....
	(I thought the problem with the null char was fixed?)
	
Fixed:	introduce null as a new character class
Files modified: lex.c
Name:	bruno
Date:	22.6.89

---
Number:	203
Name:	bruno
Date:	20.6.89
Topic:  if-then-else in dynamic predicates
What:	SEPIA Version 2.11, 6.19.89 Copyright ECRC GmbH
	[sepia]: dynamic a/0.
	yes.
	[sepia]: [user].
	c: a :- b -> c ; d.
	c: Spurious interrupt in protected code!!!
	Trying to abort...
	SEPIA Version 2.11, 6.19.89 Copyright ECRC GmbH
	[sepia]: 

Fixed:	declaration of replaced_goal changed (for new metacall)
Files modified: dynamic.c
Name:	joachim
Date:	20.6.89

---
Number:	202
Name:	joachim
Date:	20.6.89
Topic:	type checks
What:	The module argument of tool bodies is never type checked. 
	Usually this is not necessary because the compiler generates it.
	But for the tool bodies that can be called directly like
	call/2 and block/4 it should be done.
	
Fixed:	added check in call/2
Files modified: emu.c
Name:	joachim
Date:	26.6.89

---
Number:	201
Name:	micha
Date:	19.6.89
Topic:	compiler message
What:	The message about compiling a file cannot be switched off unless
	pcompile/3 is used (local to the kernel).
	
Fixed:	defined event 139 - compiled a file
Files modified: error.c events.pl procedure.c
Name:	micha
Date:	19.6.89

---
Number:	200
Name:	micha
Date:	19.6.89
Topic:	errors
What:	The error for an unknown tag is hard-coded.
	
Fixed:	
Files modified: top.pl error.c events.pl
Name:	micha
Date:	19.6.89

---
Number:	199
Name:	micha
Date:	19.6.89
Topic:	IO
What:	System messages are not flushed.
	
Fixed:	it is difficult to spot all the places, so maybe it's not complete
Files modified: {cn_kernel,debug,environment,events}.pl {lex,procedure}.c
Name:	micha
Date:	19.6.89

---
Number:	198
Name:	bruno
Date:	13.6.89
Topic:	parser
What:	reading dot-eof enters in a loop
	
Fixed:	pligne_ must be incremented before calling in_line()
Files modified: lex.c
Name:	bruno
Date:	13.6.89

---
Number:	197
Name:	martin
Date:	13.6.89	
Topic:	compiler error.	
What: 	with the call:

	>f(X) = X, f(X) == X.
	>Illegal instruction
		and then kicks you out to the shell.
	(This is an overflow of the C stack due to the recursive
	 comparison of two cyclic structures - joachim)
	(This is no compiler error!)
	
Fixed:	added identity check and removed tail recursion in compare_terms()
Files modified: bip_comp.c
Name:	joachim
Date:	26.7.89

---
Number:	196
Name:	bruno
Date:	12.6.89
Topic:	error reporting when compiling
What:	with the file :
	?-
    	    true.

	a.	
	b(.

	the error message is :
	at line 6 (maybe ?)

	        true.

	a.
 	          ^ (here?)
	unexpected fullstop

Fixed:	_parser_print_context rewrited
Files modified: lex.c
Name:	bruno
Date:	14.6.89

---
Number:	195
Name:	bruno
Date:	9.6.89
Topic:	debugging cut
What:	[sepia]: [user].
	c: a :- !, fail.
	c: user compiled 72 bytes in 0.00 seconds
	yes.
	[sepia]: a.
	  (1) 0  CALL   a (dbg)?- creep
	B (2) 1  CALL   fail (dbg)?- creep
	B (2) 1  FAIL   fail (dbg)?- creep
	  (1) 0  FAIL   a (dbg)?- creep
	no.
	<*** this is not a bug, the cut is optimized away from the code ***>

	[sepia]: [user].
	c: e :- (!, fail), true.
	c: user compiled 100 bytes in 0.00 seconds
	yes.
	[sepia]: e.
	  (1) 0  CALL   e (dbg)?- creep
	B (2) 1  CALL   ! , fail (dbg)?- creep
	B (3) 2  CALL   call(!, sepia) (dbg)?- creep
	B (4) 3  CALL   do_cut_to(2382168) (dbg)?- creep
	B (4) 3  EXIT   do_cut_to(2382168) (dbg)?- creep
	B (3) 2  EXIT   call(!, sepia) (dbg)?- creep
	B (5) 2  CALL   call(fail, sepia) (dbg)?- creep
	B (6) 3  CALL   fail (dbg)?- creep
	B (6) 3  FAIL   fail (dbg)?- creep
	B (5) 2  FAIL   call(fail, sepia) (dbg)?- creep
	B (2) 1  FAIL   ! , fail (dbg)?- creep
	  (1) 0  FAIL   e (dbg)?- creep
	no.
	This is the same as the previous bug!!

Fixed:	new compiler
Files modified: all compiler files
Name:	micha
Date:	20.7.89

---
Number:	194
Name:	bruno
Date:	9.6.89
Topic:	! is ignored by the compiler
What:	[sepia]: [user].
	c: a :-
	c:      (!, write('b ')),
	c:      write('c ').
	c: a :-
	c:      write('d ').
	c: user compiled 228 bytes in 0.00 seconds
	yes.
	[sepia]: a.
	b c
	yes.
	[sepia]: a, fail.
	b c d
	no.

	
Fixed:	new compiler
Files modified: all compiler files
Name:	micha
Date:	20.7.89

---
Number:	193
Name:	micha
Date:	8.6.89
Topic:	abort in the debugger
What:	the command 'a' in the debugger makes sometimes an instantiation
	fault in exit_block/1 - it's a conflict of pw1 use in emu.c
	
Fixed:	avoided keeping a value in pw1 while Untrail_Variables
Files modified: emu.c
Name:	micha
Date:	8.6.89

---
Number:	192
Name:	micha
Date:	7.6.89
Topic:	display/2
What:	Part of the output goes to the specified stream, another part to
	the current_output.
	
Fixed:	
Files modified: write.c
Name:	bruno
Date:	14.6.89

---
Number:	191
Name:	micha
Date:	6.6.89
Topic:	parser
What:	Unexpected fullstop is ignored, it is waiting for another one:
	[sepia]: a b.
	a b.
	    ^ (here?)
	!> .
	syntax error: postfix/infix operator expected
	
Fixed:	next token was read before returning error status
Files modified: read.c (21.19)
Name:	bruno
Date:	12.6.89

---
Number:	190
Name:	micha (anna)
Date:	31.5.89
Topic:	error handlers
What:	[sepia]: [user].
	c: my_error_handler(41, erase_array(_), sepia) :- fail.
	c: :- set_error_handler(41, my_error_handler/3).
	c: user compiled 116 bytes in 0.00 seconds

	yes.
	[sepia]: erase_array(a/1).

	no.	(and it hangs)
	If error handler arity 2 is used, there are no problems.

Fixed:	If no module is known, we now pass a free variable as 3rd argument
	(was undefined before)
Files modified: emu.c events.pl
Name:	joachim
Date:	20.6.89

---
Number:	189
Name:	micha (miller)
Date:	30.5.89
Topic:	libraries
What:	sorts is already loaded in the installed version
	
Fixed:	removed lib(sorts) from setof.pl
Files modified: setof.pl
Name:	micha
Date:	30.5.89

---
Number:	188
Name:	alex 
Date:	29.5.89
Topic:	bips set_flag/2
What:	the checking of parameters in set_flag(library_path, ...) is
	missing:
	[sepia]: set_flag(library_path, [test]).

	yes
	[sepia]: lib(test).
	type error in concat_strings .....
Fixed:	added checks
Files modified: environment.pl
Name:	micha
Date:	6.6.89

---
Number:	187
Name:	joachim (for johan)
Date:	25.5.89
Topic:	parser stack overflow
What:	After a parser stack overflow (caused by trying to compile a list
	with about 5500 integers) the system hangs and must be killed.
	
Fixed:	handling of stack overflow error rewritted
Files modified: read.c
Name:	bruno
Date:	16.6.89

---
Number:	186
Name:	periklis
Date:	23.05.89
Topic:	delaying dynamic procedures
What:	the compiler loops or aborts when attempting to compile a
        dynamic and coroutining procedure.
	See notes delay # 5.
	(There seems to be many problems concerning dynamic procedures
	in coroutining mode. We will fix these in the new implementation)
	
Fixed:	
Files modified: dynamic.c bip_db.c dynamic.h emu.c error.c events.pl delay.c database.c bip_module.c
Name:	micha
Date:	22.5.90

---
Number:	185
Name:	bruno
Date:	22.05.89
Topic:	bad definition of flag MACROEXP
What:	
	
Fixed:	the correct one is 0x00000400
Files modified: emu_data.h environment.pl
Name:	bruno
Date:	22.05.89

---
Number:	184
Name:	micha (alan)
Date:	22.5.89
Topic:	io from directories
What:	When reading characters from a directory, the result is wrong.
	
Fixed:	with the new I/O
Files modified: almost all
Name:	micha
Date:	5.6.89

---
Number:	183
Name:	micha
Date:	18.5.89
Topic:	debugger, io
What:	the sflush/1 function does not check whether there is something to
	flush. This results in thousands of system calls when using the debugger
	
Fixed:	check in io_flush_out
Files modified: io.c
Name:	micha
Date:	18.5.89

---
Number:	182
Name:	micha
Date:	16.5.89
Topic:	sepiatool, bsi
What:	bsi/0 makes an error in sepiatool - redefining open/3.
	
Fixed:	importing open/3 and seek/2 into k_env
Files modified: k_env.pl
Name:	micha
Date:	15.6.89

---
Number:	181
Name:	micha
Date:	16.5.89
Topic:	dynamic, coroutining
What:	dynamic clauses are always compiled in non-coroutine mode.
	(see #186)
	
Fixed:	
Files modified: dynamic.c
Name:	micha
Date:	20.7.89

---
Number:	180
Name:	jacques
Date:	14.5.89
Topic:	reader
What:	[sepia]: X is 16'80000000.

	X = -2147483648
	yes.
	[sepia]: X is -2147483648.
	 *** Warning 
	 X is -2147483648.
		 ^ (here?)
	 Integer too large, converted to a float

Fixed:	is a feature (documented in page 169 (3) of sepia manual)
Files modified:
Name:	bruno
Date:	28.7.89

---
*******************************************************************************
VERSION 2.10 INSTALLED HERE, 32 not yet fixed
*******************************************************************************
---
Number:	179
Name:	micha
Date:	28.4.89
Topic:	(\=)/2
What:	in coroutining mode, X \= Y and call(X \= Y) is not the same,
	because the former does not wake any delayed goals, and so
		X ~= a, X = a		fails (ok)
		X ~= a, X \= a		fails (wrong?)
		X ~= a, call(X \= a)	succeeds (ok?)
	The semantics fo combination of negation as failure and
	constructive or sound negation is not clear at all.
	
Fixed:	
Name:	joachim
Date:	in the integrated version

---
Number:	147
Name:	bruno
Date:	31.3.89
Topic:	
What:	[sepia]: [user].
	c: a :- [b].
	c: ^D
	*** syntax error: illegal goal: (a :- [b])
       		before line 1 in the file tty
	<Is fixed in the new compiler>
	
Fixed:	new compiler
Name:	micha
Date:	20.7.89

---
Number:	145
Name:	micha
Date:	31.3.89
Topic:	autoloading libraries, modules
What:	when the user defined his own version of an autoloading
	library predicate and then loads the library, his version
	is overwritten. This will be fixed with the new module concept.
	
Fixed:	Fixed with the new module concept indead.
Name:	emmanuel (for perez)
Date:	08/01/90

---
Number:	132
Name:	joachim
Date:	14.3.89
Topic:	debugger
What:	The instantiations shown at the FAIL port are sometimes different
	from those at the CALL port. Example:
	t :- p(X).
	p(X) :- fail.
	p(a) :- fail.

	(1) 0  CALL   t (dbg)?- creep
	(2) 1  CALL   p(_g32) (dbg)?- jump to: (2)
	(2) 1  NEXT   p(_g32)  (dbg)?- jump to: (2)
	(2) 1  FAIL   p(a)  (dbg)?- 
	(a design problem concerning a fail before a Trust instruction (micha))
Fixed:	Two problem has to be solve:
	1. not reset EB and GB on trust (-> use a different trust_me and
	   trust in dbgcomp.
	2. prevent resenting EB an GB to an older value than the value on
	   call of a ND procedure (on trust) by using a dummy choice point.
Name:   emmanuel
Date:	10.04.89

---
Number:	118
Name:	joachim
Date:	17.2.89
Topic:	builtins & coding conventions
What:	There are a lot of C builtins that overwrite their arguments.
	which is against our coding conventions and leads to trouble with
	the assembler emulator. All occurences of the macro Get_Name(v,t)
	in bip_io.c, bip_misc.c and handlers.c are illegal!
	This macro should be substituted by something like s = GetName(v,t)
	
Fixed:	
Name:	joachim
Date:	17.5.89

---
Number:	95
Name:	micha (for daessler)
Date:	16.1.89
Topic:	comments in #ifdef's
What:	some compilers do not accept anything after the keywords
	#else and #endif. The comments there should be surrounded by /* */
	
Fixed:	
Name:	joachim
Date:	26.6.89

---
Number:	49
Name:	micha
Date:	7.12.88
Topic:	nil vs. atom
What:	Nil is an atom, but in Sepia it has a special tag. This means
	that all the built-ins (and others) that use Check_Atom
	do not work properly, they must as well test nil. See also
	notes bips #16.
	
Fixed:	testing nil everywhere where it could occur
Name:	micha
Date:	23.5.90

---
*******************************************************************************
VERSION 2.01 INSTALLED HERE, 54 not yet fixed
*******************************************************************************
---
Number: 22
Name:	micha
Date:	14.9.88
Topic:	floating point overflow
What:	floating point overflow is handled differently on different
	machines - a signal on the VAX, Infinity on the Sun etc.
	This should be unified to raise an error, if possible.
	
Fixed:	Enabled signals on the sun and defined an interrupt handler for SIGFPE.
	It sets the FP_EXCEPTION flag which must be tested after floating ops.
Name:	joachim
Date:	8.2.90

---
Number: 19
Name:	micha
Date:	8.9.88
Topic:	-s option
What:	When the system fails to execute -s, the message he gives about
	necessary -h option is wrong.
	
Fixed:	in main.c
Name:	paul
Date:	16.10.89

---
Number: 16
Name:	filippos
Date:	7.9.88
Topic:	parser
What:	Wrong handling of overflow in the exponent of a real.
	See notes reader #6
	
Fixed:	returns a lexical error
Name:	bruno
Date:	26.7.89

---
**********************************************************
 VERSION 2.0 INSTALLED HERE
**********************************************************
*							 *
* This is the file with bug and fixes reports for SEPIA. *
*							 *
**********************************************************

Entries in this file are short and describe a bug or a misfeature.
However, give complete information about how to reproduce the bug.
Make sure the bug is not already registered here.

If the bug descriptions is longer than a few lines, then create
a new directory

    /usr/local/eclipse/workdir/sepia/bug/<bug_number>

put the necessary files and descriptions there, and put a reference
to it here so that this file remains readable and concise.

When you fix a bug, fill in the second half of the bug entry.


Number:	<previous+1>
Name:	<who reported the bug (email address)>
Date:	<when did we receive the report>
Topic:	<keyword saying which subsystem is concerned, e.g. compiler>
What:	<how to produce the bug, and why it is wrong, if not obvious>

Fix:	<short description about what you have done to fix it>
Fixed after Release:	<the last release that still has the bug>
Files modified:		<the names of the modified source files>
Name:	<your login name>
Date:	<date you fixed it>


To suggest new features or improved functionality or implementation,
use the 'suggs' file, which is otherwise similar to this one.


**********************************************************

third file created 11.5.89 by micha

@(#)bugs	1.152	11/20/96
