Consultor Eletrônico



Kbase P132143: Access Violation on DB Disconnect in Dynamic Code
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   18/07/2008
Status: Unverified

SYMPTOM(s):

Access Violation on DB Disconnect in Dynamic Code

From Progress stack trace (_progres.exe): pam_get_item

Problem occurs in 10.1B03 but not in 10.1C

Stack Trace from ADPlus: 0x006F2D96 _rnxitn_errchk+0286
0x0068786A _rnwkcln+EA
0x0068D798 _rniproc_entry+07D8
0x006CDD72 _scForEach+0132
0x0054A054 _umeSetFF+0314
0x00A16EA0 _g_cTemporaryBuff+03C0
0x009379D0 _browseEvents+88
0x00750089 _cfg_getword+19
0x00663651 _rnuUpdPrep+0511
0x00A16EA0 _g_cTemporaryBuff+03C0 0x0045525D _smdixfld+0D
0x0041F09A _drmain+037A
0x00463D19 _stDdeStartAppl+59
0x0089D6E1 _smprms+0321
0x0089DB50 _smprms+0790
0x008E4510 __NULL_IMPORT_DESCRIPTOR+0B10
0x0089D59E _smprms+01DE

FACT(s) (Environment):

Windows 32 Intel
OpenEdge 10.1B03 32-bit Service Pack
Using DISABLE-LOAD-TRIGGERS method
Using DISABLE-DUMP-TRIGGERS method

Problem does not occur if -debugalert is specified
Problem does not occur if -clientlog is specified

CAUSE:

Bug# OE00170653

CAUSE:

When disconnecting from a database which was only accessed through dynamic code and triggers have been disabled for the table(s) you interacted with, if the disconnect is in the same scope as the transaction, when the end of the transaction is reached we attempt to address vacated memory. When that occurs one of two things may happen. - Based on the memory map of the current session we may get away with it
- If conditions are just right we may crash

FIX:

To workaround this issue place all code that interacts with the database in an internal procedure or a separate procedure than the one which connects/disconnects the database and call it. Otherwise you could add a single static table/field reference to the code and the problem will go away because we don't de-reference/disconnect the database until the code completes for static code.