| Title: | DEC BASIC Conference |
| Notice: | SSB Kit Now available - Note 2.29 |
| Moderator: | TLE::HAYNES |
| Created: | Wed Sep 15 1993 |
| Last Modified: | Thu Jun 05 1997 |
| Last Successful Update: | Fri Jun 06 1997 |
| Number of topics: | 210 |
| Total number of notes: | 976 |
| T.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 198.1 | Internal data corrupted in Open VMS RTL | TLE::HAYNES | Thu Jan 23 1997 06:25 | 23 | |
| 198.2 | VIRGIN::PFISTERR | Carpe Diem, Memento Mori | Thu Jan 23 1997 08:50 | 19 | |
| 198.3 | D-float on VAX and Alpha not the same | TLE::HAYNES | Fri Jan 24 1997 06:34 | 28 | |
Yes, the better way to specify the floating-point representation to use is with the /REAL_SIZE qualifier. Saying /REAL_SIZE=DOUBLE on the Alpha is NOT the same as saying it on the VAX. On the VAX the memory storage and the calculations are both done in D-floating representation. On the Alpha only the memory storage is done in D-floating representation. The Alpha has NO D-floating arithmetic hardware. What happens is this. The D-floating data is converted to G-floating representation, the arithmetic operation is performed using G-floating arithmetic, and then the result is converted back to D-floating representation. Since G-floating representation is 3 bits less precise than D-floating representation, converting to G-floating representation to do the arithmetic may change the data slightly. The way to determine if this a problem, is to see if the same results are gotten when using the same representation on both platforms. The common representations between VAX and Alpha are F-floating representation and G-floating representation. D-floating representation is NOT a common representation. If the Alpha and VAX behave differently when a common representation is used, then I think it is safe to say the problem lies else where. However if they behave the same, then the problem is most likely with the differing numeric representations and must be dealt with by the application. Peter | |||||
| 198.4 | VIRGIN::PFISTERR | Carpe Diem, Memento Mori | Wed Jan 29 1997 04:11 | 83 | |
Thank You for Your answer!
The customer told me now, that it occurs also on the VAX. He also told
me, that he can't remember, that he uses
double-floatingpoint-variables. He thinks, that he uses only integers.
He mailed me the traceback (below).
Can You tell me how to go further, please?
Rene
Traceback:
%OTS-F-INTDATCOR, internal data corrupted in Run-Time Library
%TRACE-F-TRACEBACK, symbolic stack dump follows
Image Name Module Name Routine Name Line Number rel PC
abs PC
0 804417F4
804417F4
DEC$BASRTL 0 0000E7C0
004D27C0
----- above condition handler called with exception 0017801C:
%OTS-F-INTDATCOR, internal data corrupted in Run-Time Library
----- end of exception message
0 842682BC
842682BC
DEC$BASRTL 0 0003A730
004FE730
DEC$BASRTL 0 00035DA4
004F9DA4
DEC$BASRTL 0 0000D3B8
004D13B8
----- above condition handler called with exception 001A84DC:
%BAS-F-RECNOTFOU, Record not found
-BAS-I-ON_CHAFIL, on channel 12 for file
DISK$SIMS:[SIMS.DAT]PATIENTEN.DAT;4 at
user PC 00000000
-RMS-E-RNF, record not found
----- end of exception message
0 842682BC
842682BC
DEC$BASRTL 0 0004A9F8
0050E9F8
DEC$BASRTL 0 0003D4F0
005014F0
DEC$BASRTL 0 00046684
0050A684
PROSP SP_EINTRITT GETDATA 1549 000013C8
00082BC8
PROSP SP_EINTRITT TESTING 1608 00001C30
00083430
PROSP SP_EINTRITT SP_EINTRITT 2111 0000044C
00081C4C
PROSP AST_HANDLER_EIN AST_HANDLER_EIN 540 000007E0
00060100
0 800825A4
800825A4
DEC$BASRTL 0 0003ADA0
004FEDA0
DEC$BASRTL 0 0003A52C
004FE52C
DEC$BASRTL 0 00035548
004F9548
DEC$BASRTL 0 00035320
004F9320
PROSP PROSP PRTLOG 2260 000014AC
000514AC
PROSP PROSP DO_WHOLE_STACK 3475 0000EE0C
0005EE0C
PROSP PROSP PROSP 3616 00000F38
00050F38
0 84366170
84366170
SIMS job terminated at 27-JAN-1997 09:26:48.10
<CR><LF> Accounting information:
Buffered I/O count: 6919 Peak working set size:
8336
Direct I/O count: 25600 Peak page file size:
53312
Page faults: 453 Mounted volumes:
0
Charged CPU time: 0 00:00:41.59 Elapsed time: 0
18:28:59.82
| |||||
| 198.5 | What's happening on the disk? | TLE::HAYNES | Wed Jan 29 1997 12:26 | 23 | |
Rene, If the same thing happens on the VAX as well as Alpha, then you can forget about the floating point discussion. That's just the most frequent cause when the two don't behave the same. It's pretty hard to determine much with just a stack dump, but here are some ideas and questions. It appears that the DEC BASIC RTL is in the midst of reporting a Record Not Found error on channel 12 for the file DISK$SIMS:[SIMS.DAT]PATIENEN.DAT;4. Since the program runs for days/weeks (re .0) before failing randomly, I wonder what else is happening on the disk. Is it possible that the file gets physically moved say by a disk compression utility? I looks like something happens to the file which invalidates the information which the RTL has in its control blocks. Because the VAX and DEC BASIC RTLs are very different, I would suspect that application program is doing something strange since it is the common denominator. Without more information and a clearly reproducable problem, I can't tell much more. Peter | |||||
| 198.6 | VIRGIN::PFISTERR | Carpe Diem, Memento Mori | Thu Feb 06 1997 05:51 | 550 | |
Thanks for Your answer!
In the meantime, I asked the customer 3 questions and receives his
answers:
1. Q: Did the program crashes also in other places?
A: Yes. ->appendix 1 (all tracebacks are from an Alpha)
2. Q: Can You extract me the useful output of BASIC/LIST?
A: ->appendix 2
3. Q: Do You use 'blank Basic'? (no system routines, library routines
or routines of an other language?)
A: I use only BASIC and RTL functions.
Appendix 1:
============================================================================
%OTS-F-INTDATCOR, internal data corrupted in Run-Time Library
%TRACE-F-TRACEBACK, symbolic stack dump follows
Image Name Module Name Routine Name Line Number rel PC
abs PC
0 804417F4
804417F4
DEC$BASRTL 0 0000E7C0
004D27C0
----- above condition handler called with exception 0017801C:
%OTS-F-INTDATCOR, internal data corrupted in Run-Time Library
----- end of exception message
0 842682BC
842682BC
DEC$BASRTL 0 0003A730
004FE730
DEC$BASRTL 0 00035DA4
004F9DA4
DEC$BASRTL 0 0000D3B8
004D13B8
----- above condition handler called with exception 001A805C:
%BAS-F-ENDFILDEV, End of file on device
-BAS-I-ON_CHAFIL, on channel 116 for file DISK$SIMS:[SIMS.DAT]SP.DAT;1
at user
-RMS-E-EOF, end of file detected
----- end of exception message
0 842682BC
842682BC
DEC$BASRTL 0 0004A9F8
0050E9F8
DEC$BASRTL 0 0003D124
00501124
DEC$BASRTL 0 000462FC
0050A2FC
PROSP AST_HANDLER_EIN AST_HANDLER_EIN 535 00000610
0005FF30
0 800825A4
800825A4
DEC$BASRTL 0 0003AD94
004FED94
DEC$BASRTL 0 0003A52C
004FE52C
DEC$BASRTL 0 00035548
004F9548
DEC$BASRTL 0 00035320
004F9320
PROSP PROSP PRTLOG 2260 000014AC
000514AC
PROSP PROSP DO_WHOLE_STACK 3423 0000E53C
0005E53C
PROSP PROSP PROSP 3616 00000F38
00050F38
0 84366170
84366170
SIMS job terminated at 6-FEB-1997 00:46:42.83
<CR><LF> Accounting information:
Buffered I/O count: 67326 Peak working set size:
8128
Direct I/O count: 314503 Peak page file size:
55104
Page faults: 3265 Mounted volumes:
0
Charged CPU time: 0 00:07:41.28 Elapsed time: 2
14:52:08.46
----------------------------------------------------------------------------
%OTS-F-INTDATCOR, internal data corrupted in Run-Time Library
%TRACE-F-TRACEBACK, symbolic stack dump follows
Image Name Module Name Routine Name Line Number rel PC
abs PC
0 804417F4
804417F4
DEC$BASRTL 0 0000E7C0
004D27C0
----- above condition handler called with exception 0017801C:
%OTS-F-INTDATCOR, internal data corrupted in Run-Time Library
----- end of exception message
0 842682BC
842682BC
DEC$BASRTL 0 0003A730
004FE730
DEC$BASRTL 0 00035DA4
004F9DA4
DEC$BASRTL 0 0000D3B8
004D13B8
----- above condition handler called with exception 001A84DC:
%BAS-F-RECNOTFOU, Record not found
-BAS-I-ON_CHAFIL, on channel 12 for file
DISK$SIMS:[SIMS.DAT]PATIENTEN.DAT;4
at
-RMS-E-RNF, record not found
----- end of exception message
0 842682BC
842682BC
DEC$BASRTL 0 0004A9F8
0050E9F8
DEC$BASRTL 0 0003D4F0
005014F0
DEC$BASRTL 0 00046684
0050A684
PROSP SP_EINTRITT GETDATA 1549 000013C8
00082BC8
PROSP SP_EINTRITT TESTING 1608 00001C30
00083430
PROSP SP_EINTRITT SP_EINTRITT 2111 0000044C
00081C4C
PROSP AST_HANDLER_EIN AST_HANDLER_EIN 540 000007E0
00060100
0 800825A4
800825A4
DEC$BASRTL 0 0003AD8C
004FED8C
DEC$BASRTL 0 0003A52C
004FE52C
DEC$BASRTL 0 00035548
004F9548
DEC$BASRTL 0 00035320
004F9320
PROSP PROSP PRTLOG 2260 000014AC
000514AC
PROSP PROSP DO_WHOLE_STACK 3475 0000EE0C
0005EE0C
PROSP PROSP PROSP 3616 00000F38
00050F38
0 84366170
84366170
SIMS job terminated at 3-FEB-1997 09:53:32.09
<CR><LF> Accounting information:
Buffered I/O count: 69276 Peak working set size:
8496
Direct I/O count: 336666 Peak page file size:
55488
Page faults: 1401 Mounted volumes:
0
Charged CPU time: 0 00:08:34.92 Elapsed time: 4
16:52:53.57
----------------------------------------------------------------------------
%OTS-F-INTDATCOR, internal data corrupted in Run-Time Library
%TRACE-F-TRACEBACK, symbolic stack dump follows
Image Name Module Name Routine Name Line Number rel PC
abs PC
0 804417F4
804417F4
DEC$BASRTL 0 0000E7C0
004D27C0
----- above condition handler called with exception 0017801C:
%OTS-F-INTDATCOR, internal data corrupted in Run-Time Library
----- end of exception message
0 842682BC
842682BC
DEC$BASRTL 0 0003A730
004FE730
DEC$BASRTL 0 00035DA4
004F9DA4
DEC$BASRTL 0 0000D3B8
004D13B8
----- above condition handler called with exception 001A84DC:
%BAS-F-RECNOTFOU, Record not found
-BAS-I-ON_CHAFIL, on channel 12 for file
DISK$SIMS:[SIMS.DAT]PATIENTEN.DAT;4
at
-RMS-E-RNF, record not found
----- end of exception message
0 842682BC
842682BC
DEC$BASRTL 0 0004A9F8
0050E9F8
DEC$BASRTL 0 0003D4F0
005014F0
DEC$BASRTL 0 00046684
0050A684
PROSP SP_EINTRITT GETDATA 1549 000013C8
00082BC8
PROSP SP_EINTRITT TESTING 1608 00001C30
00083430
PROSP SP_EINTRITT SP_EINTRITT 2111 0000044C
00081C4C
PROSP AST_HANDLER_EIN AST_HANDLER_EIN 540 000007E0
00060100
0 800825A4
800825A4
DEC$BASRTL 0 0003ADA0
004FEDA0
DEC$BASRTL 0 0003A52C
004FE52C
DEC$BASRTL 0 00035548
004F9548
DEC$BASRTL 0 00035320
004F9320
PROSP PROSP PRTLOG 2260 000014AC
000514AC
PROSP PROSP DO_WHOLE_STACK 3475 0000EE0C
0005EE0C
PROSP PROSP PROSP 3616 00000F38
00050F38
0 84366170
84366170
SIMS job terminated at 29-JAN-1997 17:00:02.21
<CR><LF> Accounting information:
Buffered I/O count: 46552 Peak working set size:
7536
Direct I/O count: 173026 Peak page file size:
54592
Page faults: 1666 Mounted volumes:
0
Charged CPU time: 0 00:04:40.91 Elapsed time: 2
02:04:06.32
============================================================================
Appendix 2:
============================================================================
1538 DEF BYTE GETDATA( LONG keynum, STRING keystr)
1539
1540 WHEN ERROR IN
1541 GETDATA = TRUE
1542 GET #CHNPAT, KEY #keynum EQ keystr ,REGARDLESS
1543 USE
1544 SELECT ERR
1545 CASE 155%
1546 GETDATA = FALSE
1547 CASE ELSE
1548 EXIT HANDLER
1549 END SELECT
1550 END WHEN
1551
1552 END DEF
.
.
.
.
1592 DEF INTEGER TESTING
1593
1594 DECLARE BYTE record_found
1595
1596 TESTING = SS$_NORMAL
1597
1598 IF SP$EDIFACT_MASK > 0% AND SPS::USERNAME =
"EDIFACT"
THEN
1599
1600 SELECT SPS::COMMAND_ID ! what
command
1601 CASE SP$EINTRITT !
Admission
1602 IF GETDATA( PAT$K_NUMMER, SPS::ID +
SPS::PATIENT_NUMBER) THEN ! check patient number
1603 IF NOT SPS::REENTRY THEN
1604 RETURN_VALUE = SPS::PATIENT_NUMBER
1605 TESTING = SIMS$MSG_PATNUM_USED ! This
patient
number is occupied
1606 ELSE
1607 IF SPS::ID = SP$ID_MIETER THEN
1608 CALL DBG_MSG( DBG$ERROR,
SPS::SP$NODE, "SP",
"SP_EINTRITT/CLEAR_OLD_PID" &
1609 ,"Reentry of Tendant with contract
Nr. " +
sps::patient_number,"")
1610 ELSE
1611 CALL DBG_MSG( DBG$ERROR,
SPS::SP$NODE, "SP",
"SP_EINTRITT/CLEAR_OLD_PID" &
1612 ,"Reentry of Patient with Patient
Nr. " +
sps::patient_number,"")
1613 END IF
1614 END IF
1615 ELSE !
number not
used
1616 IF SPS::CARD_CODE <> "0" AND SPS::PHONE
THEN
1617 IF GETDATA( PAT$K_CODE, SPS::CARD_CODE)
THEN
1618 TESTING = Check_Card !
check, is
card free
1619 END IF
1620 END IF
1621 END IF
1622 CASE SP$CHANGE_CARD !
Change Card
1623 IF GETDATA( PAT$K_NUMMER, SPS::ID +
SPS::PATIENT_NUMBER) THEN
1624 SPS::OLD_CODE = pat::code
1625 END IF
1626 IF GETDATA( PAT$K_CODE, SPS::CARD_CODE)
THEN
1627 TESTING = Check_Card !
check, card
is free
1628 END IF
1629 END SELECT
1630 END IF
1631
1632 END DEF ! testing
.
.
.
2089 ! Main Program
*********************************************************************
2090
2091 WHEN ERROR USE Error_Handler
2092
2093 ZEROTIME::HL, ZEROTIME::LL = 0%
2094 SYS_STATUS = SYS$BINTIM( SP$LOCK_CARD + "
00:00:00.01",
LOCK_CARD)
2095
2096 RSET SPS::CARD_CODE = NUM1$( INTEGER(
SPS::CARD_CODE))
2097 SPS::DWDN = FORMAT$( INTEGER( SPS::DWDN),
"<0>######")
2098
2099 CALL DBG_MSG( DBG$INFO, SPS::SP$NODE,
"SP","SP_EINTRITT"
&
2100 ,GETMSG( SIMS$DBG_EINTRITT,
SPS::CARD_CODE)
,"")
2101
2102 LOCKED% = FALSE
2103 MARKED = FALSE
2104
2105 RETURN_STATUS = TESTING
2106
2107 IF RETURN_STATUS = SS$_NORMAL THEN
2108
2109 WHEN ERROR IN
2110 PAT_STATUS = RMS$_NORMAL
2111 RETURN_VALUE = SPS::CARD_CODE
2112 RETURN_STATUS = SS$_NORMAL
2113 GET #CHNPAT , KEY #PAT$K_CODE EQ SPS::CARD_CODE
!
2114 USE
2115 SELECT ERR
2116 CASE 155%
! new
patient code
2117 PAT_STATUS = VMSSTATUS
2118 CASE ELSE
2119 RETURN_STATUS = VMSSTATUS
2120 END SELECT
2121 END WHEN
2122
2123 IF RETURN_STATUS = SS$_NORMAL THEN
! ok
2124 RETURN_STATUS = LOCK_FREE_DWDN
2125 IF RETURN_STATUS = SS$_NORMAL THEN
! ok
2126
2127 SELECT SP$MODE
2128 CASE "1"
2129 SUB_STATUS = GET_SUBLEVEL_MODE1
2130 CASE "2"
2131 IF NOT SPS::REENTRY THEN
2132 SUB_STATUS = GET_SUBLEVEL_MODE2
2133 ELSE
2134 SUB_STATUS = GET_TBI_RECORD_FOR_REENTRY
2135 END IF
2136 END SELECT
2137
2138 SELECT SUB_STATUS
2139 CASE RMS$_NORMAL
! dn
expired
2140 CALL DBG_MSG( DBG$INFO, SPS::SP$NODE,
"SP"
&
2141 ,"SP_EINTRITT/GET_SUBLEVEL"
&
2142 ,"Sublevel " + NUM1$( TBI::SUBLEVEL)
+ "
expired","")
2143
2144 return_status = send_to_tax
2145 IF return_status = SS$_NORMAL THEN
2146 Y = UPDATE_DN_BUFFER
! get
the values
2147 UPDATE #CHNTEI
!
overwritte the old dn
2148 Y = UPDATE_FREE_DWDN( EIN)
2149 Y = HANDLE_PATIENT
2150 Y = MIETER
2151 END IF
2152 CASE RMS$_RNF
2153 CALL DBG_MSG( DBG$INFO, SPS::SP$NODE,
"SP"
&
2154 ,"SP_EINTRITT/GET_SUBLEVEL"
&
2155 ,"Create new Sublevel " + NUM1$(
TBI::SUBLEVEL),"")
2156
2157 return_status = send_to_tax
2158 IF return_status = SS$_NORMAL THEN
2159 Y = UPDATE_DN_BUFFER
! get
the values
2160 PUT #CHNTEI
! put
a new record
2161 Y = UPDATE_FREE_DWDN( EIN)
2162 Y = HANDLE_PATIENT
2163 Y = MIETER
2164 END IF
2165 CASE ELSE
!
unexpected error
2166 RETURN_STATUS = SUB_STATUS
2167 END SELECT
2168 y = Clear_Old_PID
2169 END IF
2170 END IF
2171 END IF
2172
2173 IF RETURN_STATUS = SS$_NORMAL THEN
2174 CALL DBG_MSG( DBG$INFO, SPS::SP$NODE,
"SP","SP_EINTRITT"
&
2175 , GETMSG3( RETURN_STATUS,
RETURN_VALUE), "")
2176
2177 CALL DBG_MSG( DBG$ALWAYS, SPS::SP$NODE, "SM",""
&
2178 , "Eintritt "
&
2179 + "Patnr : " + SPS::CARD_CODE
&
2180 + " Name : " + NEW_PANAM
&
2181 + " Dwdn : " + NEW_PANUM, "")
2182
2183 ELSE
2184
2185 SAV_RETURN_VALUE = RETURN_VALUE
2186 Y = UPDATE_FREE_DWDN( AUS)
2187 RETURN_VALUE = SAV_RETURN_VALUE
2188
2189 CALL DBG_MSG( DBG$ERROR, SPS::SP$NODE,
"SP","SP_EINTRITT" &
2190 , GETMSG3( RETURN_STATUS,
RETURN_VALUE ),
"")
2191
2192 EDI::BUFF = ""
2193 SYS_STATUS = PRTMSG( EDI$PRINTER, RETURN_STATUS,
RETURN_VALUE, SPS::USERNAME &
2194 , EDI::BUFF BY REF, SPS::BUFF BY
REF, "",
0%)
2195
2196 END IF
2197 SP_EINTRITT = RETURN_STATUS ! return status
to
caller
2198
2199 END WHEN
2200
2201 HANDLER Error_Handler
2202
2203 CALL DBG_MSG( DBG$ERROR, "0", "SP",
"SP_EINTRIT/ERROR_HANDLER" &
2204 ," Vmsstatus : " + GETMSG(
VMSSTATUS, ),
"")
2205
2206 SP_EINTRITT = VMSSTATUS
2207
2208 END HANDLER
2209
2210 UNLOCK #CHNTEI
2211 UNLOCK #CHNPAT
2212 UNLOCK #CHNFDN
2213
2214 IF SP$EDIFACT_MASK > 0% AND SP$MODE = "1" AND
SPS::USERNAME = "EDIFACT" THEN
2215
2216 ! unlock resource "get_free_dwdn"
2217 SYS_STATUS = SYS$ENQW(,LCK$K_NLMODE BY VALUE
!
lock mode &
2218 ,FDN$LKSB
! lock
id & status &
2219 ,LCK$M_CONVERT BY VALUE
!
convert lock &
2220 ,,,,,,,)
2221
2222 CALL LIB$STOP( SYS_STATUS BY VALUE) IF
(SYS_STATUS AND
1%) = 0%
2223 CALL LIB$STOP( FDN$LKSB::VMS_STATUS BY VALUE) IF
(FDN$LKSB::VMS_STATUS AND 1%) = 0%
2224
2225 END IF
2226
2227 END FUNCTION ! End of FUNCTION SP_EINTRITT
Allocation information for DEF GETDATA Offset based on (R10)
Name Offset Size Type
Parameters:
KEYNUM 115 4 Long
KEYSTR 111 8 Dynamic string
Result:
GETDATA 126 1 Byte
Allocation information for DEF TESTING Offset based on (R10)
Name Offset Size Type
Result:
TESTING 123 4 Long
============================================================================
| |||||
| 198.7 | VIRGIN::PFISTERR | Carpe Diem, Memento Mori | Thu Feb 06 1997 05:54 | 5 | |
answer to .5:
No datas are moved physically by a tool like compression utility (even
backup of course).
Rene
| |||||