Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10 5/3/83; site hp-pcd.UUCP
Path: utzoo!linus!decvax!harpo!seismo!hao!hplabs!hp-pcd!orstcs!rand
From: rand@orstcs.UUCP
Newsgroups: net.bugs.2bsd
Subject: stack growth with floating point - (nf)
Message-ID: <1449@hp-pcd.UUCP>
Date: Wed, 3-Aug-83 03:24:38 EDT
Article-I.D.: hp-pcd.1449
Posted: Wed Aug  3 03:24:38 1983
Date-Received: Fri, 5-Aug-83 17:12:22 EDT
Sender: netnews@hp-pcd.UUCP
Organization: Hewlett-Packard, Corvallis OR
Lines: 39

#N:orstcs:3300002:000:1135
orstcs!rand    Aug  1 17:35:00 1983

Subject: 2.8bsd, bug in stack growth with floating point

Applies to 2.8 on 11/23, 2.9 should be checked.  Sorry if this
has been reported years ago.

When the stack is expanded, routine `backup' (file mch.s)
is executed to take care of instruction restart.  A flag
called `fflg' is incremented when the instruction is a
floating point instruction.  Unfortunately this flag is NEVER
cleared so subsequent stack expands may not be executed correctly.
This remains like that until the system is rebooted.  The single
instruction fix follows:  file mch.s (or mch.c)

	.
	.
/* hard part
 * simulate the ssr2 register missing on 11/40
 */
backup:
	clr	r2		/ backup register ssr1
	mov	$1,bflg		/ clrs jflg
	clrb	fflg		/ INSERTED INSTRUCTION ****
	mov	ssr+4,r0
	jsr	pc,fetch
	.
	.

Manifestation of bug:  We are running a VERY large group of programs
which do a lot of floating point and allocate large arrays on the stack.
After running the program group we get a few very bizzare system errors.

Dale Mosby, Rand Dow:  rand.orstcs@RAND-RELAY

P.S. Rand's new address after Aug 8 will be: rand.sequel@RAND-RELAY
     or ogcvax!sequel!rand.