OIEngine shutdown during Data Upload (OpenInsight Specific)
At 17 APR 2001 05:09:07AM Kendal Hulbert wrote:
I have a recurring problem and cannot see the cause of it.
I am uploading or deleting data from 2 files - a lookup and it's related data file. Trouble is that when the upload/delete reaches a certain point, an OI error is displayed on the screen, when I close that, a Windows GPF window is displayed. The OI Engine is also shutdown. This means I have to reboot my machine and restart the process. Deleting from the origin file as I am uploading means I can restart the process from the point of breakdown, but once the data reaches around the same number of records processed, it falls over again. Same error messages, etc.
Is this a windows problem? Or is there a buffer somewhere that is being overused? I clear the OI buffers regularly within the programs with "FLUSH" & "GARBAGECOLLECT".
But +/- 60000 records is the max I can run and then I crash. I can only think that windows and OI clash somwhere.
Any assistance would be greatly appreciated.
At 17 APR 2001 06:15AM [url=http://www.sprezzatura.com]The Sprezzatura Group[/url] wrote:
What operating system (Windows version) are you using?
If you post the code we may be able to suggest some options.
World Leaders in all things RevSoft
At 17 APR 2001 08:24AM Kendal Hulbert wrote:
The machines I run the system on are a mixture of '95 & '98 machines connected to an NT-Server.
Sample of Code:
This is a stored procedure. Information is retrieved from the screen, relevant tables are opened and then the data is retrieved:
*——————————————————————-
GET_RECORDS:
FLUSHGARBAGECOLLECTClearSelectSearch='call UTL_SELECT_ROWS('MAILING_DUPS2',Search,'','','')RecCount=@RecCount*print function, for a hardcopy report
Stage=MAILINGS 'Recs=Selected: ':@RecCountgosub PRINT_LINE*screen display for monitoring progress
MsgTxt=De-duplicating Mailings'RetVal=Set_Property(@Window:'.MESSAGES','TEXT',MsgTxt)gosub READ_DUP_RECORDSRETURN
*——————————————————————–
READ_DUP_RECORDS:
MastID = ''DupID = ''lCounter = 0FCount = 0Done = 0LoopReadNext ID thenMailDupRow=obj_xlate_row('MAILING_DUPS2',ID,'','X')lcounter += 1RecCount -= 1IDRec='MsgTxt=Records left: ': RECCOUNTRetVal=Set_Property(@Window:'.MESSAGES3','TEXT',MsgTxt)If MailDupRow thenNoDups=Count(MailDupRow,@VM) + 1ErrFlag='If NoDups ] 1 thenFor DupCount=1 to NoDupsChkID=MailDupRowCustLookRow=obj_xlate_row('CUSTOMER_LOOKUP',ChkID,'','X')Table=CustLookRowIf Table=CAMPAIGN_MAILINGS" elseIdRec=DupCountDupCount=NoDups + 1Endnext DupCountIF IdRec=' thenIdRec=1EndendendIf MailDupRow thenMastID=MailDupRowNoDups=Count(MailDupRow,@VM) + 1If NoDups ] 1 thenFor DupCount=1 to NoDupsIf DupCount=IDRec elseDupID=MailDupRowErrFlag='gosub UPDATE_FILESdCount += 1MsgTxt=dCountRetVal=Set_Property(@Window:'.MESSAGES2','TEXT',MsgTxt)endNext DupCountEndif ErrFlag else@File_Error='Delete MailDupTable, ID elsecall OBJ_FILE_ERROR(FileError)call UTL_MSG_DISP(FileError:' - Cannot delete row : ':ID)endendend
check counterif DupTot thenif lCounter=DupTot thenIf Recur thengosub GET_RECORDSend elseDone=1endendend
check flushFCount += 1if FCount=1000 thenFLUSHGARBAGECOLLECTFCount=0endend elseDone=1endUntil Done RepeatRetVal=Utility('CURSOR','A')MsgTxt=Completed : ': @RECCOUNT:' Records'RetVal=Set_Property(@Window:'.MESSAGES','TEXT',MsgTxt)Stage=Stage 2 COMPLETE'Recs =Updated : ':lCountergosub PRINT_LINERETURN
*————————————————————————-*
UPDATE_FILES:
CT=Count(MailDupRow,@vm) + 1for cx=1 to CTif LEN(MailDupRow) thenCampCode=MailDupRowgosub CAMPAIGN_MAILINGSendnext cxgosub CUSTOMER_LOOKUPRETURN
*————————————————————————-*
CAMPAIGN_MAILINGS:
CTempID='TempRow='OldKey=CampCode:'*':DupIDCampOK=RowExists("CAMPAIGN_MAILINGS",OldKey)if CampOK thenRead CampRow from CampMailTable, OldKey thenCTempID=CampRowIf CTempID thenTempRow=MastID@File_Error='Write TempRow on TempIDTable, CTempID elsecall OBJ_WRITE_ERROR('TEMP_ID',CTempID)ErrFlag=1'endend@File_Error='Delete CampMailTable, OldKey elsecall OBJ_FILE_ERROR(FileError)call UTL_MSG_DISP(FileError:' - Cannot delete row : ':OldKey)ErrFlag=1'endendendRETURN
*————————————————————————-*
CUSTOMER_LOOKUP:
OldKey=DupIDRead CLookRow from CustLookTable, OldKey thenTable=CLookRowIf Table=CAMPAIGN_MAILINGS' then@File_Error='Delete CustLookTable, OldKey elsecall OBJ_FILE_ERROR(FileError)call UTL_MSG_DISP(FileError:' - Cannot delete row : ':OldKey)ErrFlag=1'endendendRETURN
*——————————————————————-
The Windows erro reads like this:
"OENGINE caused a general protection fault in module OENGINE.EXE at 0003:000c308."
Of any help?
At 18 APR 2001 03:55AM [url=http://www.sprezzatura.com]The Sprezzatura Group[/url] wrote:
OK - educated guesswork time - using a process of
elimination. Faced with this code and your unusual
problem we might try the following steps…
Make a copy of this program and edit the copy like this…
First, change the XLATE code to OPEN…READ….CLOSE
statements.
Second, remove all the window progress displays.
Third - comment out the the print_line functionality
(just to see what happens).
Fourth, bring any external routine code into this
one program (minimize the external calls).
Fifth, adjust the operating system parameters:-
attach a different printer, log in as administrator,
run the program from a local disk, drop screen
resolution to bare minimum (amazing how many dodgy
video drivers cause Windows conflicts), change file
handles settings, etc.
If the process runs for a long time you might want
to modify the select to only gather enough records
to display the fault.
Incremental faults have sometimes occurred when a
hardware resource runs out, usually memory, disk or
file handles.
Avoiding symbolics, XLATES, deeply nested programs and
printer functions (even as a temporary step) can
sometimes highlight the culprit. Sometimes changing the
report sequence will highlight corrupt record keys
which foul the select processor.
Another favourite technique is to test the file
by selecting it using a different (unindexed)
field to reveal any lurking GFEs.
Thanks for posting the code. We'll give it some
further inspection for structure during a quiet(er)
moment
World Leaders in all things RevSoft