Consultor Eletrônico



Kbase P104296: Save Cache statement core dumps when connected in multi user mode on 9.1D.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   17/12/2008
Status: Verified

SYMPTOM(s):

Save Cache statement core dumps in multi user mode.

Server crashes with error 6495.

Out of free shared memory. Use -Mxs to increase. (6495)

SYSTEM ERROR: mtlatch <latch-num>, holding <lock>. (3712)

SYSTEM ERROR: mtlatch 2, holding 0xa0. (3712)

Save cache will work in single user mode.

Using mandatory fields.

CAUSE:

Mandatory Fields are not part of the calculation for shared memory allocation. The 4GL statement, SAVE CACHE, causes the database manager to dynamically read all mandatory fields into shared memory. The database manager can experience a situation where it is unable to read the mandatory fields into shared memory because of insufficient shared memory space. This is because the number and size of mandatory fields for the database were not considered during the initial shared memory allocation on startup of the database broker.

CAUSE:

Bug# 20050518-014

FIX:

Use the following 4GL program to determine the number of mandatory fields & the amount to increase -Mxs.

DEFINE VAR mem AS INTEGER INIT 0 NO-UNDO.
DEFINE VARIABLE man-file-count AS INTEGER INIT 0 NO-UNDO.
DEFINE VARIABLE man-field-count AS INTEGER INIT 0 NO-UNDO.
DEFINE VARIABLE mxs100 AS INTEGER NO-UNDO.
mxs100 = (16 * 1024) + (100 * 400).
mem = 480.
/*
Process each mandatory field in the _field table. When _file-recid
changes, add in the memory requirements for an additional table. Add
the memory requirements for each field.
*/
FOR EACH _field where _mandatory = yes BREAK BY _file-recid.
IF FIRST-OF(_file-recid) THEN DO.
mem = mem + 48.
man-file-count = man-file-count + 1.
END.
man-field-count = man-field-count + 1.
mem = mem + 8.
END.
DISPLAY "Mandatory tables" man-file-count WITH NO-LABELS 2 col FRAME a.
DISPLAY "Mandatory fields" man-field-count WITH FRAME a.
DISPLAY "Mandatory field array memory required" mem WITH FRAME a.
DISPLAY "Default -Mxs for 100 users " mxs100 WITH FRAME a.
DISPLAY "Total memory required including default -Mxs" (mem + mxs100) WITH FRAME a.
display "-Mxs value including mandatory field array" int(((mem + mxs100) / 1024)) + 1 with frame a.