Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations bkrike on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

unrecoverable error 1

Status
Not open for further replies.

fbizzell

Programmer
Jul 3, 2000
217
My clipper 5.2 application gives me the following error while writing memory variables to a data file:

(b)ORDLISTADD (0) Unrecoverable error 650: Processor stack fault

The application has been running for years without this error.
 
Any changes of cpu speed and or operating system?

Rob.
 
No changes to cpu speed or operating system. I have made programming changes often and had just made one but I put everything back he way it was before I started getting the error.

 
What OS does the app run on and what linker do you use?

Rob.
 
Try a total rebuild of the indexes.
No re-indexing but build the indexes from scratch.

Rob.
 
Th application runs on both Xp's and win2000 machines as well as windows 98. I have tested it on win98 and win2000 and get the error on both. Have not tried it on xp. I will rebuild the indexes from scratch and see if that solves it.
 
Additional information on Unrecoverable Error 650 problem.
Here is the souce code. It is at the otbr:forcestable() function. (I tried to bold he line but can't do it in here)It is about 30 lines down into the code.

function vwrectmp(crecvno,mrecfile,mpono)

local holdscreen
local lexitrequested := .f.
local mans := " "
local nkey
local mrecords
local mposted
local condition := {| nx | (mrecfile)->recvno = nx}
local otbr := skippingbrowse(6,1,19,77,crecvno,condition)
otbr:addcolumn(setupcol(04,"Line",{|| (mrecfile)->lineno}))
otbr:addcolumn(setupcol(10,"ATCO Part#",{|| (mrecfile)->itemno}))
otbr:addcolumn(setupcol(20,"Description",{|| (mrecfile)->descrip1}))
otbr:addcolumn(setupcol(04,"StkU",{|| (mrecfile)->atcounit}))
otbr:addcolumn(setupcol(11,"Qnty Recvd",{|| (mrecfile)->quantity}))
otbr:addcolumn(setupcol(10,"Vend Part#",{|| substr((mrecfile)->venditem,1,10)}))
otbr:footsep := def_fsep
setcolor(DRKBLUE_COLOR)
select(mrecfile)
mposted := .f.
do while !mposted
@ 4,0 clear to 20,78
@ 4,0 to 20,78
sbshadow(4,0,20,78,1)
header(5,"ITEMS RECEIVED ON RECEIVER # : "+crecvno+" FOR PO #:"+mpono)
footer("F2=Edit Receiver F3=Add line to Receiver F4=Post Receivings Esc=Exit")
otbr:refreshall()
do while !lexitrequested
otbr:forcestable() //unrecoverable error 650 when calling this function
nkey := inkey(0)

do case
case nkey = K_F2
save screen to holdscreen
@ 8,10 clear to 19,65
@ 8,10 to 19,65
mquantity := (mrecfile)->quantity
do while .t.
mans := " "
@ 9,12 say "Line # : " get(mrecfile)->lineno
@ 10,12 say "ATCO Part # : " get(mrecfile)->itemno
@ 10,42 say "Vendor # : " get(mrecfile)->venditem
@ 12,12 say "Description : " get(mrecfile)->descrip1
@ 14,12 say "Stocking Unit: " get(mrecfile)->atcounit
clear gets
@ 16,12 say "Enter quantity received " get mquantity
read
@ 18,12 say "Is quantity received correct? " get mans picture "@!"
read
if mans = "Y"
if reclock()
replace(mrecfile)->quantity with mquantity
replace(mrecfile)->extstdcost with (mrecfile)->stdcost * mquantity
replace(mrecfile)->extpoprice with (mrecfile)->poprice * mquantity
replace(mrecfile)->pricevar with (mrecfile)->extpoprice - (mrecfile)->extstdcost
endif
exit
endif
enddo
restore screen from holdscreen
seek crecvno
otbr:refreshall()
case nkey = K_F3
save screen to holdscreen
vwpoline(mpono,crecvno,mrecfile)
restore screen from holdscreen
select(mrecfile)
seek crecvno
otbr:refreshall()
case nkey = K_F4
postrec(crecvno,mrecfile)
mposted := .t.
return nil
case nkey = K_ESC
lexitrequested := .t.
count to mrecords
if mrecords > 0
mans := " "
@ 10,10 clear to 13,60
@ 11,12 say "You have receivers that have not been posted"
@ 13,12 say "Do you want to post them now? " get mans picture "@!"
read
if mans = "Y"
postrec(crecvno,mrecfile)
mposted := .t.
endif
if mans = "N"
return nil
endif
endif
case directionalkeys(otbr,nkey)
endcase
enddo
enddo
return nil
 
I don't know what linker you use but try to increase the stacksize for the application by small staps...

Rob.
 
I am using Blinker 7.0

Here is the link script. I don't see anything about stack size:

NODEFLIB
BLINKER EXECUTABLE COMPRESS 1
BLINKER MESSAGE WINK LEFT
BLINKER PROCEDURE DEPTH 30
BLINKER INCREMENTAL OFF
BLINKER OVERLAY OPSIZE 24
BLINKER CACHE EMS 0
BLINKER CACHE XMS 512
BLINKER MEMORY PACK 10
#BLINKER EXECUTABLE CLIPPER E0
BLINKER EXECUTABLE CLIPPER //F200 //CPU:50
BEGINAREA
FILE INV2000
FILE INVMOD2
FILE INVMOD3
FILE INVMOD4
FILE INVMOD5A
FILE INVMOD6
FILE INVMOD7
FILE INVMOD9
FILE WDPSTAT2
FILE S2000
FILE INVPASS2
FILE NETLOCKS
FILE DBFNTXAX
ENDAREA
MODULE XPARCHK
LIB AXSCOMM.LIB
SEARCH BLXCLP52
BEGINAREA
ALLOCATE DBFAXS.LIB
ENDAREA
BEGINAREA
SEARCH RQB52
SEARCH RSQLB52
SEARCH HORIZ52
ENDAREA
LIB SUPER
LIB RBAR_C52
LIB CPMI
LIB NANFOR
LIB DEVELOP
@DBFAXS_B.LNK
@CL520MID.LNK
 
Latest information on this problem:

My directory structure where I compile and link the application is: F:\USERS\RJONES\SOURCE

I then copy the executable to W:\APPS\DBASE where I normally call the application from.

For testing purposes I sometimes call the application from the F:\USERS\RJONES\SOURCE directory where I do the compiling and linking. If I do that now I get the unrecoverable eror.

If I copy the executable to the W:\APPS\DBASE directory and call it from there I DO NOT GET THE UNRECOVERABLE ERROR.


 
Probably you don't have the same directory/data structures on the F drive as on the W drive.
That could be the reason for the error while on F and not on W.
The stacksize should be in the blinker 7 helpfile.

Rob.
 
I used to run into this problem all the time and now its gone. Make certain your not running a function after a function. I mean this is bad:

function a()
function a runs function b
function b runs c and c runs d and so on.

Try this a(),b(),c(),d()

The stack seems to need a return. Therefore a() returns then b is called. B returns then c is called. c returns the d is called etc.

I don't know if this is understandable but if not let me know.

Also you should use blinker 7 if your not.

Harvey




 
Also ad to lnk script: stacksize 16500
Heapsize 4096
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top