[Oberon] bluebottle parallel compiler bug

Mircea Alexandru Popescu Moscu mircalex at yahoo.com
Fri Sep 16 08:28:38 CEST 2005


Compiling the following module results in the compiler
terminating with a err 40 (compiletest identifier
expected). This is due the timeout expiring and the
scanner being not at the en of the module. 
In fact the compiler blocks on (see following trace):


AosActive.SwitchToNew pc=2238
  new=008F4650H
AosActive.Await pc=9277
  cond=PCT.Scope.Await pc=132  slink=-2073953532
(8461FB04H)  obj=008E7190H
  flags={}  hdr=008E7160H  r=008DE090H  t=00000000H 
id=0
PCT.Scope.Await pc=182
  state=2  @Self=008E7190H
PCV.TypeSize pc=1528
  type=01263640H  size=00000000H  fsize=00000000H 
recsize=00000000H  brecsize=00000000H
  p=00000000H  t=00000000H  redo=FALSE  f=00000000H 
s=00000000H  name="AboutPanel"...
  namef=""...
PCV.TypeSize pc=1373
  type=01261B60H  size=012A6B00H  fsize=00000000H 
recsize=00000000H  brecsize=00000000H
  p=00000000H  t=00000000H  redo=FALSE  f=00000000H 
s=008E7190H  name="AboutPanel"...
  namef=""...
PCV.AllocateTypes pc=3592
  t=008E5130H  v=01D2A4F0H
PCV.Allocate pc=4968
  context=01D29F70H  scope=01D29F70H  proc=00000000H 
madr=01D2A5F0H  globals=00000000H
PCT.ChangeState pc=12382
  scope=01D29F70H  state=2  pos=64514  rec=00000000H 
r=00000000H  int=00000000H
  rscope=00000000H  mth=00000000H  i=0  res=0
PCP.Parser.DeclSeq pc=9156
  @Self=01D2A010H  t=00000000H  name=0  pos=0  res=0
PCP.Parser. at Body pc=24979

And here comes the module:

MODULE compiletest; (** AUTHOR "Alex Popescu"; 
PURPOSE "error in compilation"; PORTABLE *) 

TYPE
	Contained=OBJECT
		VAR
			parent: Container;
	END Contained;

	ContainedDescendent1=OBJECT(Contained)
		
	END ContainedDescendent1;
	
	ContainedDescendent2=OBJECT(Contained)
		
	END ContainedDescendent2;
	
	ContainedDescendent3=OBJECT(Contained)
		
	END ContainedDescendent3;
	
	ContainedDescendent4=OBJECT(Contained)
		
	END ContainedDescendent4;
	
	Container = OBJECT
		VAR
			
			c1: ContainedDescendent1;
			c2: ContainedDescendent2;
			c3: ContainedDescendent3;
			c4: ContainedDescendent4;
			
	END Container;

END compiletest.

Comments:
If compiled like this it doesn't compile. If  the last
three lines in Container are commented out  then it
compiles.

The problem is that the compiler doesn't provide a
good error message, allowing for a idenfication of the
problem; and that sometimes complies and sometimes
doesn't compile: in my opinion: or it never compiles
such code, or always compiles it. 





		
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com



More information about the Oberon mailing list