home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Neueste VersionenFixList
15.0.xC1.2 FixList
14.10.xC13.3 FixList
12.10.xC16.X5 FixList
11.70.xC9.XB FixList
11.50.xC9.X2 FixList
11.10.xC3.W5 FixList
Haben Sie Probleme? - Kontaktieren Sie uns.
Kostenlos registrieren anmeldung-x26
Kontaktformular kontakt-x26

Informix - Problembeschreibung

Problem IT03924 Status: Geschlossen

MEMORY ALLOCATION ERROR -208 ON OPEN CURSOR WHEN LOOPING
PREPARE/DECLARE/OPEN/CLOSE WITH NO FREE

Produkt:
INFORMIX SERVER / 5725A3900 / C10 - IDS 12.10
Problembeschreibung:
The ESQL/C program reproduces the problem when compiled on 
redhat with both 
 
  ESQL/C 3.50.UC3 (esql -m32 -static repro.ec -o repro) and 
  ESQL/C 3.50.FC7 (esql -m64 -static repro.ec -o repro) 
 
The problem reproduces against IDS 12.10.FC3 on linux x86_64, 
but does not repro against 11.50.FC9 on same platform. 
 
The problem does not reproduce if the client sets env variable 
IFX_AUTOFREE=1 
 
Given the repro.ec file below, the problem reproduces on the 4th 
call to do_cursor() in the $open.  It does not reproduce 
when the second occurrence of "$EXECUTE Temp_Slot_del;" just 
before the return from do_cursor() is commented out. 
 
In my test, I created stores_demo via 
 
  $ ifx dbaccessdemo7 stores_demo 
 
Here is the contents of the file repro.ec: 
*************************************** 
 
#include <stdio.h> 
 
void 
do_cursor() 
{ 
    $char demoquery[80]; 
    $char workbuf[256]; 
    $char queryvalue[2]; 
 
    $CREATE TEMP TABLE TEMP_SLOT(c1 integer, c2 integer); 
    sprintf(workbuf,"insert into temp_slot values(1,1)"); 
    $PREPARE Temp_Slot_ins FROM :workbuf; 
    $EXECUTE Temp_Slot_ins; 
 
    sprintf(demoquery, "%s %s", "select fname, lname from 
customer", "where lname < ? "); 
 
    EXEC SQL prepare demo2id from :demoquery; 
    if (sqlca.sqlcode != 0) 
        { 
        printf("PREPARE error %d\n",sqlca.sqlcode); 
        exit(4); 
        } 
    EXEC SQL declare demo2cursor cursor for demo2id; 
    if (sqlca.sqlcode != 0) 
        { 
        printf("DECLARE error %d\n",sqlca.sqlcode); 
        exit(4); 
        } 
    sprintf(queryvalue, "C"); 
    EXEC SQL open demo2cursor using :queryvalue; 
    if (sqlca.sqlcode != 0) 
        { 
        printf("OPEN error %d\n",sqlca.sqlcode); 
        exit(4); 
        } 
 
    EXEC SQL close demo2cursor; 
 
    sprintf(workbuf,"DELETE FROM TEMP_SLOT"); 
    $PREPARE Temp_Slot_del FROM :workbuf; 
    $EXECUTE Temp_Slot_del; 
    $DROP TABLE TEMP_SLOT; 
 
    $EXECUTE Temp_Slot_del; 
    printf("Exeute Temp_Slot_del %d\n",sqlca.sqlcode); 
    return; 
} 
 
main() 
{ 
    printf("DEMO2 Sample ESQL Program running.\n\n"); 
    EXEC SQL WHENEVER ERROR STOP; 
    EXEC SQL connect to 'stores_demo'; 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
    do_cursor(); 
};
Problem-Zusammenfassung:
**************************************************************** 
* USERS AFFECTED:                                              * 
* Those not explicitly freeing statements                      * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* See Error Description                                        * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Update to IDS-12.10.xC5                                      * 
****************************************************************
Local-Fix:
Lösung
Problem Fixed In IDS-12.10.xC5
Workaround
keiner bekannt / siehe Local-Fix
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
21.08.2014
16.10.2015
16.10.2015
Problem behoben ab folgender Versionen (IBM BugInfos)
Problem behoben lt. FixList in der Version
12.10.xC5 FixList
12.10.xC5.W1 FixList