Querying BOE security - getObjectPrincipals() has memory leak?

Hi,
I am querying the BOBJ Enterprise security and noticed that when I introduce the getObjectPrincipals() method in my code, my program consumes a great deal of additional memory, and will eventually fail due to insufficient heap space as the code iterates through the reports.  The issue does seem to be tied to specifically this method, as the memory is handled fine with everything else the same.  Is there a known memory leak with this method?  I am currently testing against XI R2 SP2 and noticed in release notes for SP5 there was a documented memory leak with a similiar method in the COM SDK - getAnyPrincipals(). 
Can anyone shed any light on this?  I can provide code samples too if need be...
Thanks!

Thanks for the responses guys. 
Ruben - I did try to use remove() for both of my iterators in use (the first of which contains all principals who have rights for the given InfoObject, and the 2nd contains all of the explicit security rights for the principal) - this unfortunately didn't have any affect on the memory usage.  What I tried was as follows:
ISecurityInfo objSecurityInfo = boInfoObject.getSecurityInfo();
IObjectPrincipals objPrincipals = objSecurityInfo.getObjectPrincipals();  //THIS I BELIEVE TO HAVE MEMORY LEAK
Iterator objPrincipalIterator = objPrincipals.iterator();
//retrieve rights applied to object
while (objPrincipalIterator.hasNext())
        ...get security Role information for each principal
        //now get explicit rights information
        ISecurityRights objPrincipalExpRights = objPrincipal.getRights();
        Iterator objPrincipalExpRightsIterator = objPrincipalExpRights.iterator();
        while (objPrincipalExpRightsIterator.hasNext()
                   ..process explicit rights
                   objPrincipalExpRightsIterator.remove();
obPrincipalIterator.remove();
Ted,
I was already batching the # of InfoObjects to retrieve security information for, but just to be sure I greatly decreased this number and did not see any improvement in memory usage.  I actually worked a case with SAP on this question, and they confirmed there was a memory leak with the getObjectPrincipals() method.  They confirmed this was fixed for XI R2 in SP5 for the .Net and COM SDKs, but not for Java.  Is there anything else I can try?  Using getObjectPrincipals(1) for only explicit rights works great as far as memory consumption, but only exposes users with custom roles and I need to retrieve principals with any type of role.
Thanks!

Similar Messages

  • Pro*c multithreaded application has memory leak

    Hi there,
    I posted this message a week ago in OCI section, nobody answer me.
    I am really curious if my application has a bug or the pro*c has a bug.
    Anyone can compile the sample code and test it easily.
    I made multithreaded application which queries dynamic SQL, it works.
    But the memory leaks when i query the SQL statement.
    The more memory leaks, the more i query the SQL statement, even same SQL
    statement.
    I check it with top, shell command.
    My machine is SUN E450, Solaris 8. Oracle 9.2.0.1
    Compiler : gcc (GCC) 3.2.2
    I changed source code which is from
    $(ORACLE_HOME)/precomp/demo/proc/sample10.pc
    the sample10 doesn't need to be multithreaded. But i think it has to work
    correctly if i changed it to multithreaded application.
    the make file and source code will be placed below.
    I have to figure out the problem.
    Please help
    Thanks in advance,
    the make file is below
    HOME = /user/jkku
    ORA = $(ORACLE_HOME)
    CC = gcc
    PROC = proc
    LC_INCL = -I$(HOME)/work/dbmss/libs/include
    lc_incl = include=$(HOME)/work/dbmss/libs/include
    SYS_INCL =
    sys_incl =
    ORA_INCL = -I. \
    -I$(ORA)/precomp/public \
    -I$(ORA)/rdbms/public \
    -I$(ORA)/rdbms/demo \
    -I$(ORA)/rdbms/pbsql/public \
    -I$(ORA)/network/public \
    -DSLMXMX_ENABLE -DSLTS_ENABLE -D_SVID_GETTOD
    INCLUDES = $(LC_INCL) $(SYS_INCL) $(ORA_INCL)
    includes = $(lc_incl) $(sys_incl)
    LC_LIBS =
    SYS_LIBS = -lpthread -lsocket -lnsl -lrt
    ORA_LIBS = -L$(ORA)/lib/ -lclntsh
    LIBS = $(LC_LIBS) $(SYS_LIBS) $(ORA_LIBS)
    # Define C Compiler flags
    CFLAGS += -D_Solaris64_ -m64
    CFLAGS += -g -D_REENTRANT
    # Define pro*c Compiler flags
    PROCFLAGS += THREADS=YES
    PROCFLAGS += CPOOL=YES
    # Our object files
    PRECOMPS = sample10.c
    OBJS = sample10.o
    .SUFFIXES: .o .c .pc
    .c.o:
    $(CC) -c $(CFLAGS) $(INCLUDES) $*.c
    .pc.c:
    $(PROC) $(PROCFLAGS) $(includes) $*.pc $*.c
    all: sample10
    sample10: $(PRECOMPS) $(OBJS)
    $(CC) $(CFLAGS) -o sample10 $(OBJS) $(LIBS)
    clean:
    rm -rf *.o sample10 sample10.c
    the source code is below which i changed the oracle sample10.pc to
    multithreaded application.
    Sample Program 10: Dynamic SQL Method 4
    This program connects you to ORACLE using your username and
    password, then prompts you for a SQL statement. You can enter
    any legal SQL statement. Use regular SQL syntax, not embedded SQL.
    Your statement will be processed. If it is a query, the rows
    fetched are displayed.
    You can enter multi-line statements. The limit is 1023 characters.
    This sample program only processes up to MAX_ITEMS bind variables and
    MAX_ITEMS select-list items. MAX_ITEMS is #defined to be 40.
    #include <stdio.h>
    #include <string.h>
    #include <setjmp.h>
    #include <sqlda.h>
    #include <stdlib.h>
    #include <sqlcpr.h>
    /* Maximum number of select-list items or bind variables. */
    #define MAX_ITEMS 40
    /* Maximum lengths of the names of the
    select-list items or indicator variables. */
    #define MAX_VNAME_LEN 30
    #define MAX_INAME_LEN 30
    #ifndef NULL
    #define NULL 0
    #endif
    /* Prototypes */
    #if defined(__STDC__)
    void sql_error(void);
    int oracle_connect(void);
    int alloc_descriptors(int, int, int);
    int get_dyn_statement(void);
    void set_bind_variables(void);
    void process_select_list(void);
    void help(void);
    #else
    void sql_error(/*_ void _*/);
    int oracle_connect(/*_ void _*/);
    int alloc_descriptors(/*_ int, int, int _*/);
    int get_dyn_statement(/* void _*/);
    void set_bind_variables(/*_ void -*/);
    void process_select_list(/*_ void _*/);
    void help(/*_ void _*/);
    #endif
    char *dml_commands[] = {"SELECT", "select", "INSERT", "insert",
    "UPDATE", "update", "DELETE", "delete"};
    EXEC SQL INCLUDE sqlda;
    EXEC SQL INCLUDE sqlca;
    EXEC SQL BEGIN DECLARE SECTION;
    char dyn_statement[1024];
    EXEC SQL VAR dyn_statement IS STRING(1024);
    EXEC SQL END DECLARE SECTION;
    EXEC ORACLE OPTION (ORACA=YES);
    EXEC ORACLE OPTION (RELEASE_CURSOR=YES);
    SQLDA *bind_dp;
    SQLDA *select_dp;
    /* Define a buffer to hold longjmp state info. */
    jmp_buf jmp_continue;
    char *db_uid="dbmuser/dbmuser@dbmdb";
    sql_context ctx;
    int err_sql;
    enum{
    SQL_SUCC=0,
    SQL_ERR,
    SQL_NOTFOUND,
    SQL_UNIQUE,
    SQL_DISCONNECT,
    SQL_NOTNULL
    int main()
    int i;
    EXEC SQL ENABLE THREADS;
    EXEC SQL WHENEVER SQLERROR DO sql_error();
    EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
    /* Connect to the database. */
    if (connect_database() < 0)
    exit(1);
    EXEC SQL CONTEXT USE :ctx;
    /* Process SQL statements. */
    for (;;)
    /* Allocate memory for the select and bind descriptors. */
    if (alloc_descriptors(MAX_ITEMS, MAX_VNAME_LEN, NAME_LEN) != 0)
    exit(1);
    (void) setjmp(jmp_continue);
    /* Get the statement. Break on "exit". */
    if (get_dyn_statement() != 0)
    break;
    EXEC SQL PREPARE S FROM :dyn_statement;
    EXEC SQL DECLARE C CURSOR FOR S;
    /* Set the bind variables for any placeholders in the
    SQL statement. */
    set_bind_variables();
    /* Open the cursor and execute the statement.
    * If the statement is not a query (SELECT), the
    * statement processing is completed after the
    * OPEN.
    EXEC SQL OPEN C USING DESCRIPTOR bind_dp;
    /* Call the function that processes the select-list.
    * If the statement is not a query, this function
    * just returns, doing nothing.
    process_select_list();
    /* Tell user how many rows processed. */
    for (i = 0; i < 8; i++)
    if (strncmp(dyn_statement, dml_commands, 6) == 0)
    printf("\n\n%d row%c processed.\n", sqlca.sqlerrd[2], sqlca.sqlerrd[2] == 1 ? '\0' : 's');
    break;
    /* Close the cursor. */
    EXEC SQL CLOSE C;
    /* When done, free the memory allocated for pointers in the bind and
    select descriptors. */
    for (i = 0; i < MAX_ITEMS; i++)
    if (bind_dp->V != (char *) 0)
    free(bind_dp->V);
    free(bind_dp->I); /* MAX_ITEMS were allocated. */
    if (select_dp->V != (char *) 0)
    free(select_dp->V);
    free(select_dp->I); /* MAX_ITEMS were allocated. */
    /* Free space used by the descriptors themselves. */
    SQLSQLDAFree(ctx, bind_dp);
    SQLSQLDAFree(ctx, select_dp);
    } /* end of for(;;) statement-processing loop */
    disconnect_database();
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    EXEC SQL COMMIT WORK RELEASE;
    puts("\nHave a good day!\n");
    return;
    * Allocate the BIND and SELECT descriptors using sqlald().
    * Also allocate the pointers to indicator variables
    * in each descriptor. The pointers to the actual bind
    * variables and the select-list items are realloc'ed in
    * the set_bind_variables() or process_select_list()
    * routines. This routine allocates 1 byte for select_dp->V
    * and bind_dp->V, so the realloc will work correctly.
    alloc_descriptors(size, max_vname_len, max_iname_len)
    int size;
    int max_vname_len;
    int max_iname_len;
    int i;
    * The first sqlald parameter determines the maximum number of
    * array elements in each variable in the descriptor. In
    * other words, it determines the maximum number of bind
    * variables or select-list items in the SQL statement.
    * The second parameter determines the maximum length of
    * strings used to hold the names of select-list items
    * or placeholders. The maximum length of column
    * names in ORACLE is 30, but you can allocate more or less
    * as needed.
    * The third parameter determines the maximum length of
    * strings used to hold the names of any indicator
    * variables. To follow ORACLE standards, the maximum
    * length of these should be 30. But, you can allocate
    * more or less as needed.
    if ((bind_dp =
    SQLSQLDAAlloc(ctx, size, max_vname_len, max_iname_len)) ==
    (SQLDA *) 0)
    fprintf(stderr,
    "Cannot allocate memory for bind descriptor.");
    return -1; /* Have to exit in this case. */
    if ((select_dp =
    SQLSQLDAAlloc(ctx, size, max_vname_len, max_iname_len)) == (SQLDA *)
    0)
    fprintf(stderr,
    "Cannot allocate memory for select descriptor.");
    return -1;
    select_dp->N = MAX_ITEMS;
    /* Allocate the pointers to the indicator variables, and the
    actual data. */
    for (i = 0; i < MAX_ITEMS; i++) {
    bind_dp->I = (short *) malloc(sizeof (short));
    select_dp->I = (short *) malloc(sizeof(short));
    bind_dp->V = (char *) malloc(1);
    select_dp->V = (char *) malloc(1);
    return 0;
    int get_dyn_statement()
    char *cp, linebuf[256];
    int iter, plsql;
    for (plsql = 0, iter = 1; ;)
    if (iter == 1)
    printf("\nSQL> ");
    dyn_statement[0] = '\0';
    fgets(linebuf, sizeof linebuf, stdin);
    cp = strrchr(linebuf, '\n');
    if (cp && cp != linebuf)
    *cp = ' ';
    else if (cp == linebuf)
    continue;
    if ((strncmp(linebuf, "EXIT", 4) == 0) ||
    (strncmp(linebuf, "exit", 4) == 0))
    return -1;
    else if (linebuf[0] == '?' ||
    (strncmp(linebuf, "HELP", 4) == 0) ||
    (strncmp(linebuf, "help", 4) == 0))
    help();
    iter = 1;
    continue;
    if (strstr(linebuf, "BEGIN") ||
    (strstr(linebuf, "begin")))
    plsql = 1;
    strcat(dyn_statement, linebuf);
    if ((plsql && (cp = strrchr(dyn_statement, '/'))) ||
    (!plsql && (cp = strrchr(dyn_statement, ';'))))
    *cp = '\0';
    break;
    else
    iter++;
    printf("%3d ", iter);
    return 0;
    void set_bind_variables()
    int i, n;
    char bind_var[64];
    /* Describe any bind variables (input host variables) */
    EXEC SQL WHENEVER SQLERROR DO sql_error();
    bind_dp->N = MAX_ITEMS; /* Initialize count of array elements. */
    EXEC SQL DESCRIBE BIND VARIABLES FOR S INTO bind_dp;
    /* If F is negative, there were more bind variables
    than originally allocated by sqlald(). */
    if (bind_dp->F < 0)
    printf ("\nToo many bind variables (%d), maximum is %d\n.",
    -bind_dp->F, MAX_ITEMS);
    return;
    /* Set the maximum number of array elements in the
    descriptor to the number found. */
    bind_dp->N = bind_dp->F;
    /* Get the value of each bind variable as a
    * character string.
    * C contains the length of the bind variable
    * name used in the SQL statement.
    * S contains the actual name of the bind variable
    * used in the SQL statement.
    * L will contain the length of the data value
    * entered.
    * V will contain the address of the data value
    * entered.
    * T is always set to 1 because in this sample program
    * data values for all bind variables are entered
    * as character strings.
    * ORACLE converts to the table value from CHAR.
    * I will point to the indicator value, which is
    * set to -1 when the bind variable value is "null".
    for (i = 0; i < bind_dp->F; i++)
    printf ("\nEnter value for bind variable %.*s: ",
    (int)bind_dp->C, bind_dp->S);
    fgets(bind_var, sizeof bind_var, stdin);
    /* Get length and remove the new line character. */
    n = strlen(bind_var) - 1;
    /* Set it in the descriptor. */
    bind_dp->L = n;
    /* (re-)allocate the buffer for the value.
    sqlald() reserves a pointer location for
    V but does not allocate the full space for
    the pointer. */
    bind_dp->V = (char *) realloc(bind_dp->V, (bind_dp->L + 1));
    /* And copy it in. */
    strncpy(bind_dp->V, bind_var, n);
    /* Set the indicator variable's value. */
    if ((strncmp(bind_dp->V, "NULL", 4) == 0) ||
    (strncmp(bind_dp->V, "null", 4) == 0))
    *bind_dp->I = -1;
    else
    *bind_dp->I = 0;
    /* Set the bind datatype to 1 for CHAR. */
    bind_dp->T = 1;
    return;
    void process_select_list()
    int i, null_ok, precision, scale;
    if ((strncmp(dyn_statement, "SELECT", 6) != 0) &&
    (strncmp(dyn_statement, "select", 6) != 0))
    select_dp->F = 0;
    return;
    /* If the SQL statement is a SELECT, describe the
    select-list items. The DESCRIBE function returns
    their names, datatypes, lengths (including precision
    and scale), and NULL/NOT NULL statuses. */
    select_dp->N = MAX_ITEMS;
    EXEC SQL DESCRIBE SELECT LIST FOR S INTO select_dp;
    /* If F is negative, there were more select-list
    items than originally allocated by sqlald(). */
    if (select_dp->F < 0)
    printf ("\nToo many select-list items (%d), maximum is %d\n",
    -(select_dp->F), MAX_ITEMS);
    return;
    /* Set the maximum number of array elements in the
    descriptor to the number found. */
    select_dp->N = select_dp->F;
    /* Allocate storage for each select-list item.
    sqlprc() is used to extract precision and scale
    from the length (select_dp->L).
    sqlnul() is used to reset the high-order bit of
    the datatype and to check whether the column
    is NOT NULL.
    CHAR datatypes have length, but zero precision and
    scale. The length is defined at CREATE time.
    NUMBER datatypes have precision and scale only if
    defined at CREATE time. If the column
    definition was just NUMBER, the precision
    and scale are zero, and you must allocate
    the required maximum length.
    DATE datatypes return a length of 7 if the default
    format is used. This should be increased to
    9 to store the actual date character string.
    If you use the TO_CHAR function, the maximum
    length could be 75, but will probably be less
    (you can see the effects of this in SQL*Plus).
    ROWID datatype always returns a fixed length of 18 if
    coerced to CHAR.
    LONG and
    LONG RAW datatypes return a length of 0 (zero),
    so you need to set a maximum. In this example,
    it is 240 characters.
    printf ("\n");
    for (i = 0; i < select_dp->F; i++)
    char title[MAX_VNAME_LEN];
    /* Turn off high-order bit of datatype (in this example,
    it does not matter if the column is NOT NULL). */
    sqlnul ((unsigned short *)&(select_dp->T), (unsigned short
    *)&(select_dp->T), &null_ok);
    switch (select_dp->T)
    case 1 : /* CHAR datatype: no change in length
    needed, except possibly for TO_CHAR
    conversions (not handled here). */
    break;
    case 2 : /* NUMBER datatype: use sqlprc() to
    extract precision and scale. */
    sqlprc ((unsigned int *)&(select_dp->L), &precision,
    &scale);
    /* Allow for maximum size of NUMBER. */
    if (precision == 0) precision = 40;
    /* Also allow for decimal point and
    possible sign. */
    /* convert NUMBER datatype to FLOAT if scale > 0,
    INT otherwise. */
    if (scale > 0)
    select_dp->L = sizeof(float);
    else
    select_dp->L = sizeof(int);
    break;
    case 8 : /* LONG datatype */
    select_dp->L = 240;
    break;
    case 11 : /* ROWID datatype */
    case 104 : /* Universal ROWID datatype */
    select_dp->L = 18;
    break;
    case 12 : /* DATE datatype */
    select_dp->L = 9;
    break;
    case 23 : /* RAW datatype */
    break;
    case 24 : /* LONG RAW datatype */
    select_dp->L = 240;
    break;
    /* Allocate space for the select-list data values.
    sqlald() reserves a pointer location for
    V but does not allocate the full space for
    the pointer. */
    if (select_dp->T != 2)
    select_dp->V = (char *) realloc(select_dp->V,
    select_dp->L + 1);
    else
    select_dp->V = (char *) realloc(select_dp->V,
    select_dp->L);
    /* Print column headings, right-justifying number
    column headings. */
    /* Copy to temporary buffer in case name is null-terminated */
    memset(title, ' ', MAX_VNAME_LEN);
    strncpy(title, select_dp->S, select_dp->C);
    if (select_dp->T == 2)
    if (scale > 0)
    printf ("%.*s ", select_dp->L+3, title);
    else
    printf ("%.*s ", select_dp->L, title);
    else
    printf("%-.*s ", select_dp->L, title);
    /* Coerce ALL datatypes except for LONG RAW and NUMBER to
    character. */
    if (select_dp->T != 24 && select_dp->T != 2)
    select_dp->T = 1;
    /* Coerce the datatypes of NUMBERs to float or int depending on
    the scale. */
    if (select_dp->T == 2)
    if (scale > 0)
    select_dp->T = 4; /* float */
    else
    select_dp->T = 3; /* int */
    printf ("\n\n");
    /* FETCH each row selected and print the column values. */
    EXEC SQL WHENEVER NOT FOUND GOTO end_select_loop;
    for (;;)
    EXEC SQL FETCH C USING DESCRIPTOR select_dp;
    /* Since each variable returned has been coerced to a
    character string, int, or float very little processing
    is required here. This routine just prints out the
    values on the terminal. */
    for (i = 0; i < select_dp->F; i++)
    if (*select_dp->I < 0)
    if (select_dp->T == 4)
    printf ("%-*c ",(int)select_dp->L+3, ' ');
    else
    printf ("%-*c ",(int)select_dp->L, ' ');
    else
    if (select_dp->T == 3) /* int datatype */
    printf ("%*d ", (int)select_dp->L,
    *(int *)select_dp->V);
    else if (select_dp->T == 4) /* float datatype */
    printf ("%*.2f ", (int)select_dp->L,
    *(float *)select_dp->V);
    else /* character string */
    printf ("%-*.*s ", (int)select_dp->L,
    (int)select_dp->L, select_dp->V);
    printf ("\n");
    end_select_loop:
    return;
    void help()
    puts("\n\nEnter a SQL statement or a PL/SQL block at the SQL> prompt.");
    puts("Statements can be continued over several lines, except");
    puts("within string literals.");
    puts("Terminate a SQL statement with a semicolon.");
    puts("Terminate a PL/SQL block (which can contain embedded
    semicolons)");
    puts("with a slash (/).");
    puts("Typing \"exit\" (no semicolon needed) exits the program.");
    puts("You typed \"?\" or \"help\" to get this message.\n\n");
    int connect_database()
    err_sql = SQL_SUCC;
    EXEC SQL WHENEVER SQLERROR DO sql_error();
    EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
    EXEC SQL CONTEXT ALLOCATE :ctx;
    EXEC SQL CONTEXT USE :ctx;
    EXEC SQL CONNECT :db_uid;
    if(err_sql != SQL_SUCC){
    printf("err => connect database(ctx:%ld, uid:%s) failed!\n", ctx, db_uid);
    return -1;
    return 1;
    int disconnect_database()
    err_sql = SQL_SUCC;
    EXEC SQL WHENEVER SQLERROR DO sql_error();
    EXEC SQL WHENEVER NOT FOUND DO sql_not_found();
    EXEC SQL CONTEXT USE :ctx;
    EXEC SQL COMMIT WORK RELEASE;
    EXEC SQL CONTEXT FREE:ctx;
    return 1;
    void sql_error()
    printf("err => %.*s", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);
    printf("in \"%.*s...\'\n", oraca.orastxt.orastxtl, oraca.orastxt.orastxtc);
    printf("on line %d of %.*s.\n\n", oraca.oraslnr, oraca.orasfnm.orasfnml,
    oraca.orasfnm.orasfnmc);
    switch(sqlca.sqlcode) {
    case -1: /* unique constraint violated */
    err_sql = SQL_UNIQUE;
    break;
    case -1012: /* not logged on */
    case -1089:
    case -3133:
    case -1041:
    case -3114:
    case -3113:
    /* �6�Ŭ�� shutdown�ǰų� �α��� ���°� �ƴҶ� ��b�� �õ� */
    /* immediate shutdown in progress - no operations are permitted */
    /* end-of-file on communication channel */
    /* internal error. hostdef extension doesn't exist */
    err_sql = SQL_DISCONNECT;
    break;
    case -1400:
    err_sql = SQL_NOTNULL;
    break;
    default:
    err_sql = SQL_ERR;
    break;
    EXEC SQL CONTEXT USE :ctx;
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    EXEC SQL ROLLBACK WORK;
    void sql_not_found()
    err_sql = SQL_NOTFOUND;

    Hi Jane,
    What version of Berkeley DB XML are you using?
    What is your operating system and your hardware platform?
    For how long have been the application running?
    What is your current container size?
    What's set for EnvironmentConfig.setThreaded?
    Do you know if containers have previously not been closed correctly?
    Can you please post the entire error output?
    What's the JDK version, 1.4 or 1.5?
    Thanks,
    Bogdan

  • Firefox 6.0 has memory leak

    Firefox 6.0 (release) has a memory leak.
    Tested with 5 windows and 43 pages loaded and left overnight, it crashed after several hours. Able to fully repro this every time.
    I left it for 10 mins after all pages loaded. I opened Task Manager and I can see the Memory (Private Working Set) increasing every few seconds.

    Well I'm using 7 beta and my memory usage is just short of 600,000k with plugin container using another 220,000k. There is a massive problem with this!

  • Word 2011 has memory leak after applying 10.8.1 update

    Word started crashing on me recently, it occurs every 8 to 10 minutes when i am working with a large documents.  I looked around at the forums and tried all the "Verify Disk Permissions", re-installing, removing normal.dot and word preferences and creating new users.  None of these work.  I opened Activity monitor and witnessed the memory grow rapidly without any activity in word (The larger the document, the quicker it would rise) from 0-1.5 Gb in around 10 minutes - High CPU is also presentduring this memory leak.  When the memory reaches the limit of the available system memory (usually around 1.6G), word crashes.
    I tested the same documents on a few other similar computers (macbook and another imac) they did not have the issue, memory remained steady for long periods of time.  I check the software versions of the computers and Word was all the same (14.2.3) however OS X was only 10.8 on the working computers where as the failing computer was 10.8.1. 
    I confirmed the error by updating both of the other computers to 10.8.1, now all computers exhibit the memory leak.
    Anyone got any ideas?

    Update Soundflower to the most recent version. You have an unsupported edition. http://code.google.com/p/soundflower/downloads/detail?name=Soundflower-1.6.6b.dm g&can=2&q=

  • Flash Builder 4.7 Freezing and It appears that Flash Builder 4.7 has memory leaks so please suggest asap

    Hi,
    We are facing this issue in 4.7 as 4.6 version is working absolutely fine, so please look into this asap

    Figured it out. Don´t know where the egit installation came from but it was incompatible with fb 4.7.
    Added http://download.eclipse.org/egit/updates
    to update sites, installed an update, now it works properly.

  • The Security ID is not valid causes memory leak in Ldap

    Hi, all:
    We are using the Novell LDAP Provider to allow our server application
    be configured in LDAP mode. One of our clients is experiencing a memory
    leak and we believe that the problem could be related to a "The Security
    ID is not valid" error. When he changes to native Active Directory mode
    the memory leak dissapears (he still gets the "Security ID" error, but
    all works fine). So, we think that the problem caused by the "Security
    ID" error is affecting the Novell Ldap Provider library. He is using a
    Windows 2008 R2 platform.
    My question is: Do you know if these kind of errors are properly
    handled so that resources are released?
    We are using the 2.1.10.1 version of the library.
    Many thanks for you help,
    Luis
    luixrodix
    luixrodix's Profile: http://forums.novell.com/member.php?userid=107647
    View this thread: http://forums.novell.com/showthread.php?t=435894

    ab;2091346 Wrote:
    > -----BEGIN PGP SIGNED MESSAGE-----
    > Hash: SHA1
    >
    > Have the exact error message? Is it safe to assume you are querying
    > MAD
    > and not eDirectory? I make that assumption because you mentioned
    > SIDs.
    >
    > Good luck.
    >
    > Yes the message is: "The Security ID structure is invalid". It is the
    > error 1337 of Windows and cannot be fixed manually since SIDs cannot be
    > modified manually.
    >
    >
    > When the client has configured our tool as Active Directory via LDAP
    > (using the Novell Ldap library) the error is not logged anywhere (that's
    > another reason for thinking that the library is not handling the error
    > correctly) and the application has memory leaks everytime the AD server
    > is queried, but when they use the same Active Directory but in a pure AD
    > configuration (using System.DirectoryServices and Windows API directly)
    > the error is logged and the memory of the application remains stable.
    >
    > I asked the client to fix the Security ID problem, trying to find the
    > user(s) whose SID are wrong and re-creating them, but if the Novell.Ldap
    > library is not handling this error correctly the potential problem is
    > still there.
    >
    >
    >
    >
    >
    > On 03/30/2011 08:36 AM, luixrodix wrote:
    > >
    > > I mean, everytime a query is sent to the LDAP server an Invalid SID
    > is
    > > reported, and some resources are not released. We think that the
    > problem
    > > could be in the LDAP Novell library.
    > >
    > >
    > -----BEGIN PGP SIGNATURE-----
    > Version: GnuPG v2.0.15 (GNU/Linux)
    > Comment: Using GnuPG with Mozilla - 'Enigmail: A simple interface for
    > OpenPGP email security' (http://enigmail.mozdev.org/)
    >
    > iQIcBAEBAgAGBQJNk2bcAAoJEF+XTK08PnB5K1oP/RB5AUOUtXi13jS/3bSG0wVC
    > uErEfdqBj6R7yliZ8oqkLApQXzEomMwmSRwa4K6v+Rj1MDFBW+ nBFTOv4aHVgq53
    > ANslfM0inboZIxuQxBEhB/5HD062s4yGHTgL81LgeKdYyZvx0np6zmgDOVA/Ogx5
    > GS0nQfAhUZ+tAlgrhzRj3FB9WaamSQsdmEbXCTLjIrhy2FjH14 RidAmY0civvAsw
    > 5EoAlPe56JzQWhdzyIMhodVB2lIa2b+ttoKY7+Q35PsW2KJ3zl +O2MgHBdBtGUOQ
    > DekIR3h5kOjsRGAia8Td1eqSjziNB04fBcjR++B1vLuzE7YSGR mfRVAofOdjtlsR
    > lQ7sRX5Wg9cKN0KniMmvgrKaMqYcnl3wGgvhbVDA+vgriOxnRt PRssrTckrRaOcU
    > KvE3efwvgbdWeRNdfVAwU2qMPrsEA051XBtRKCclv5Ebi6AgwZ uuT3rYRm2Ycusy
    > TebrcX+YkiCZE+GYfULzN2KDUoxCbB85xBGwsg9Iz2/nTt6mkHT0+KqNM713uNJX
    > OqtJJP1fvfw6JMeQW5rS0VrTl2yGncJHf+cvrp0cXx8l+CJkB3 X7phZ5N0c1ttTc
    > 9cPCT+WuC7lCn4QviC8QlmZUYfbGDZmYbxm4ewUalB4J6uoBgy HPSbDITHXIeTz9
    > ISovMI9iFXzrS+Cjd7dk
    > =HEVD
    > -----END PGP SIGNATURE-----
    luixrodix
    luixrodix's Profile: http://forums.novell.com/member.php?userid=107647
    View this thread: http://forums.novell.com/showthread.php?t=435894

  • Memory Leak Issue in OBIEE 11g

    Hi,
    We have OBIEE 11.1.1.5 installed on a 32-bit Windows Server. We had almost 10GB of free space yesterday, but after a few users logged in, the free space started coming down until we were left with no space at all.
    Since then we have removed all the files that we could and created more and more space, but OBIEE seems to be eating it all up. I have seen a few posts for such issues with the Linux Systems. Has anyone faced this with windows? Also, is there any solution for this.
    Thanks,
    Naman

    Hi Naman,
    Oracle has provided set of patches to avoid memory leaks.
    1) For memory leak with OPMN, apply the following patches:
    Patch:12920592: OPMN HAS MEMORY LEAK
    Patch:12989751: OPMN MEMORY STILL GAINS AFTER APPLYING PATCH#12920592
    2) For the Presentation Server (sawserver) issue, apply the patch:
    Patch:13102881: DATALAYOUT METADATA IMPLEMENTATION HEAP INTENSIVE
    Rgds,
    Dpka

  • Memory Leak Issue for Adobe Access iOS API

    Hi,
    We are trying to develop an iOS app (with ARC enabled) using Adobe Acces API 4.0 and we have identified that the function [drmManager createDRMSession] has memory leak.
    DRMSESSION = [drmManager createDRMSession:METADATA playlist:PLAYLIST error:nil complete:^() {}];
    We are using:
    DRMSESSION  -> weak
    METADATA    ->strong  (as need to share within object)
    PLAYLIST       ->strong  (as need to share within object)
    After calling this function, the object is unable to dealloc and most of the leaking object related to networking (such as CFNetwork...)
    Is this a known issue for the Adobe Access iOS API or we are missing some key steps.
    Any suggestions is appreciated. Thanks in advance.

    ans0600, sorry about that, I read Hiroshi's forward too quickly.  I've done a little digging and have come up with two work-arounds:
    Create a file with ARC disabled to translate the returned object to be an autorelease
    declare the returned DRMSession as __unsafe_unretained and use CFRelease, as noted on stackexchange
    In the future we may change this method to return an autoreleased object to avoid this issue.  Let us know if you have any further questions!

  • Memory leak with File Write.vi

    Hi All,
    I am trying to save a big data cluster, which includes images, into a data log file. The vis I use are: New File.vi, Write File.vi, Close File.vi.
    The problem is Write File.vi has memory leak  when the data cluster includes images .
    Anyone sees similar case?  Any solution?
    Thanks.
    Aiqiu

    Aiqiu,
    I am glad you found out about flattening your image to a string.  I was about to post and say that you probably didn't want to save the IMAQ image reference to a file, because after you closed the image in memory, there wouldn't be anything for the IMAQ image reference to point to.  You are correct to flatten the image to a string.  Below is a link to a document which discusses doing this to communicate over datasocket, but the processes of flattening the image to a string is the same regardless of whether or not you are sending the image across a datasocket connection or saving to a file.
    Transfering Images with DataSocket
    As for the memory leak.  I am pretty sure that if you passed all of the IMAQ Image references created in the "Image Init Buffer.vi" subVI and then closed each reference individually, that the memory leak would probably go away.
    Lorne Hengst
    Application Engineer
    National Instruments

  • SQL Server 2012- Memory Leak Issue

    Team,
    We are running a Mission Critical Application on SQL Server 2012 SP2(11.0.5058) which is configured on Always ON Synchronous mode. Offlate due to heavy development work, Application team have come up with stating memory issues. I have analysed all the areas
    and everything looks normal. Please suggest if we have to patch the latest CU4 for SQL Server 2012 SP2. 
    The checks were performed on the below areas:
    - Errorlog, System Logs - No errors reported.
    - There are close to 8 Databases hosted on the instances which are all configured for AlwaysON. SQL Server is running on VM Infrastructure and the total physical memory allocated is 96GB out of which SQL is capped for 92GB. 
    -The Page Life Expectancy is healthy and is showing a greater number. There are no Signal waits either or pending memory grants. 
    - The writes are more than reads for one of the databases which is flagged with application team. There are no blockings & Deadlocks.
    Please suggest me the future course of action and your inputs are much appreciated.
    Best Regards,
    Sharath 

    Actual issue is- Application team have reported a memory leak and their builds have significantly slowed down. They suspect that its Database memory leak. However I have verified from database end and gave the above inputs. 
    The AOAGs are good. I was looking for any pointers whether there are any bugs which is related to memory leaks in SQL Server 2012.  I know all of them are addressed with SQL Server 2012 SP2. 
    Application team has NO idea about SQL Server do they ? And to say SQL Server has memory leak you have to actually prove it did they showed any proof. Its common for application team to say SQL Server is leaking memory because they are unaware about fact
    by default SQL Server would take as much memory as possible and would release when SQLOS asks it to do so. This might give sign that it is leaking memory BUT IT IS NOT.
    As you already said AOAG is working fine so I am presuming there is nothing much to worry. To monitor memory usage in SQL Server 2012 you can use below counters
    SQL Server: Memory Manager-- Target Server Memory (KB)
    SQL Server: Memory Manager--Total Server Memory (KB)
    SQL Server: Memory Manager- Free Memory (KB)
    SQL Server: Memory Manager--Database Cache Memory (KB)
    Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it
    My Technet Wiki Article
    MVP

  • Shared memory problem - memory leak?

    I've got the following error after calling a stored procedure about 26000 times. Does this mean Oracle 8.1.6 Thin Driver has memory leak in CallableStatement? Thanks.
    ORA-04031: unable to allocate 4096 bytes of shared memory ("shared pool","BEGIN checktstn(:1, :2); END;","PL/SQL MPCODE","BAMIMA: Bam Buffer")

    Me Too!
    java.sql.SQLException: ORA-04031: unable to allocate 744 bytes of shared memory ("unknown object","sga heap","library cache")
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:595)
    at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1600)
    at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:1758)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1805)
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:410)
    Does this error pertain to memory leaks?

  • Tool to check memory leak

    One of tmy applications has memory leak sometimes, not always. I find most tools to check the memory leak needs to reproduce the leak, but now I can not reproduce this issue, is there any tool to analyze the source code to find the memory leak?

    Don't know about source code analyzer, but dbx, the Sun Studio debugger, is capable of detecting memory leaks at run time. You can use bcheck script on your application or start dbx, issue "check -leaks" and then run your app under dbx.

  • Firefox 27 memory leak (/questions/978195)

    I already did this, sorry , but now I include the automated information.....
    More than 6GB in 3 hours (MacOSX 10.7.5, 16Gb RAM)
    (No time personally to look at this but, I have tagged it as escalate)

    I will make a quick comment, but am unlikely to get back to this again before the weekend.
    First do not think we are ignoring this or saying it is not a problem. It is a case of it is something often difficult to pin down and must initially be checked and compared with Firefox in a clean configuration, and using memory figures from the Firefox's reporter about:memory.
    If you can ramp up memory usage to 6GB in only 3 hours at least it should be relatively easy to demonstrate whether or not something prevents that from happening.
    As a test please
    *Make an new additional Firefox Profile,
    *Run Firefox in Firefox's safe mode
    *With all plugins disabled
    * Look at memory use by using ''about:memory''
    * Browse for a few hours, has the problem now disappeared ?
    Instructions and discussions about this can be seen in thread
    * ''Firefox 26 on OS X 10.9.1 still has huge memory usuage (leak) which leads to crash'' [/questions/981674]
    *Thread mentioned in tile is <br />''Firefox 25 still has memory leaks'' [/questions/978195]

  • Memory leak checking doesn't work: SEGV problem while debugging with dbx

    I am debugging a program which has memory leaks.
    When I do the following:
    dbx <program>
    (dbx) run <input parameters>
    everything runs fine, but as I didn't use RTC leaks checking, this is of no use. Therefore I do the following:
    dbx <program>
    (dbx) check -memuse
    memuse checking - ON
    (dbx) check -leaks -frames 8
    leaks checking - ON
    (dbx) run <input parameters>
    which gives the following result:
    Running: <program> <input parameters>
    (process id 17075)
    Reading rtcapihook.so
    Reading rtcaudit.so
    Reading libmapmalloc.so.1
    Reading rtcboot.so
    Reading librtc.so
    RTC: Enabling Error Checking...
    t@1 (l@1) signal SEGV (no mapping at the fault address) in __rtc_memcpy at 0xffffffff7312ed90
    0xffffffff7312ed90: __rtc_memcpy+0x0014: st %o4, [%o0 + %o3]
    dbx: Stopped within call to '__rtc_suppress_always'. Starting new command interpreter
    (dbx) where -l
    current thread: t@1
    [1] libaio.so.1:_init(0xfffffffe52000058, 0x0, 0xffdfffff, 0xfffffffe52000030, 0x400000, 0x80000), at 0xfffffffe55907a90
    [2] ld.so.1[L]:setup(0xffffffff7ffff250, 0x0, 0xffffffff7f72c2b0, 0x10000, 0x0, 0x0), at 0xffffffff7f610ba4
    [3] ld.so.1[L]:_setup(0xffffffff7fffffab, 0x1f, 0xffffffff7ffff640, 0xffffffff7fffffbe, 0xffffffff7ffff628, 0xffffffff7f72dde8), at 0xffffffff7f61f24c
    [4] ld.so.1[L]:_rt_boot(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xffffffff7f6052d4
    I think this means that there is a problem within my 'RTC' libraries.
    When I run the "version" command within my dbx session, I get following results:
    (dbx) version
    Machine hardware: sun4u
    OS version: 5.9
    Processor type: sparc
    Hardware: SUNW,Sun-Fire-480R
    The following components are installed on your system:
    Sun Studio 9
    Sun Studio 9 C Compiler
    Sun Studio 9 C++ Compiler
    Sun Studio 9 Tools.h++ 7.1
    Sun Studio 9 C++ Standard 64-bit Class Library
    Sun Studio 9 Garbage Collector
    Sun Studio 9 Fortran 95
    Sun Studio 9 Debugging Tools (including dbx)
    Sun Studio 9 Debugger GUI
    Sun Studio 9 Performance Tools (including collect, ...)
    Sun Studio 9 X-Designer
    Sun Studio 9 VIM editor
    Sun Studio 9 XEmacs editor
    Sun Studio 9 Native Connector Tool
    Sun Studio 9 LockLint
    Sun Studio 9 Building Software (including dmake)
    Sun Studio 9 Documentation Set
    version of "/opt/SUNWspro/bin/../prod/bin/../../bin/cc": Sun C 5.6 2004/07/15
    version of "/opt/SUNWspro/bin/../prod/bin/../../bin/CC": Sun C++ 5.6 2004/07/15
    version of "/opt/SUNWspro/bin/../prod/bin/../../bin/f90": Sun Fortran 95 8.0 2004/07/15
    version of "/opt/SUNWspro/bin/../prod/bin/../../bin/dbx": Sun Dbx Debugger 7.3 2004/07/15
    version of "/opt/SUNWspro/bin/../prod/bin/../../bin/analyzer": Sun Performance Analyzer 7.3 2004/07/15
    version of "/opt/SUNWspro/bin/../prod/bin/../../bin/dmake": Sun Distributed Make 7.5 2004/07/15
    Can anybody help me out?
    Which additional information do I need to provide in order to solve this issue?
    Message was edited by: B.V. (the "where -l" command has been added
    B.V.

    Hello Maxim,
    As you said, it was worth to try, but unfortunately, it was not a very good investment :-(
    The patch 117564-06 has been installed, and I have retried the same procedure, but the same problem occurs.
    As you have mentioned in a previous reply, I have flagged the "rtc_error_stack" before launching the "where" command.
    The result is the following:
    Running: <program> <input parameters>
    (process id 21873)
    Reading rtcapihook.so
    Reading rtcaudit.so
    Reading libmapmalloc.so.1
    Reading rtcboot.so
    Reading librtc.so
    RTC: Enabling Error Checking...
    t@1 (l@1) signal SEGV (no mapping at the fault address) in __rtc_memcpy at 0xffffffff7312f068
    0xffffffff7312f068: __rtc_memcpy+0x0014: st %o4, [%o0 + %o3]
    dbx: Stopped within call to '__rtc_suppress_always'. Starting new command interpreter
    (dbx) dbxenv rtc_error_stack on
    (dbx) where -l
    current thread: t@1
    =>[1] librtc.so[0xffffffff7de01778]:__rtc_memcpy(0xfffffffe5013fff0, 0xfffffffe50220040, 0x8, 0x
    10, 0x803, 0x64a3c338), at 0xffffffff7312f068
    [2] librtc.so[0xffffffff7de01778]:change_masks_work(0xfffffffeff90e878, 0xfffffffeff90e878, 0x
    803, 0x2, 0x0, 0xffffffff73243608), at 0xffffffff7312e618
    ---------- called from debugger ----------
    [3] libmd5.so.1:_init(0xfffffffe50b00228, 0x0, 0xffdfffff, 0xfffffffe50b00208, 0x400000, 0x800
    00), at 0xfffffffe531016e0
    [4] ld.so.1[L]:setup(0xffffffff7ffff260, 0x0, 0xffffffff7f72c2b0, 0x10000, 0x0, 0x0), at 0xfff
    fffff7f610ba4
    [5] ld.so.1[L]:_setup(0xffffffff7fffffa6, 0x1f, 0xffffffff7ffff650, 0xffffffff7fffffb9, 0xffff
    ffff7ffff638, 0xffffffff7f72dde8), at 0xffffffff7f61f24c
    [6] ld.so.1[L]:_rt_boot(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xffffffff7f6052d4
    (dbx)
    Any ideas?
    Thanks
    Dominique

  • Memory Leak - select for update

    Hi All.
    Doing an application using OCI 8.1.7 I faced with a memory leak. (or it seems to). The leak is caused by OCIStmtExecute with SELECT FOR UPDATE statement when the iters parameter of that function is 0. In all other cases it works Ok. Below you can find a code causes a leak:
    const char* sqlStatement = "select integercol from test_types for update";
    OCIStmt* ociStatementHandle = 0;
    OCIHandleAlloc(ociEnvHandle,(dvoid **)&ociStatementHandle,
    OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0));
    OCIStmtPrepare(ociStatementHandle, ociErrorHandle,
    (text*)sqlStatement, strlen(sqlStatement), OCI_NTV_SYNTAX, OCI_DEFAULT));
    int int_test;
    OCIDefine* ociDefineHandle = 0;
    OCIDefineByPos(ociStatementHandle, &ociDefineHandle, ociErrorHandle,
    1, (dvoid *)&int_test, (sword) sizeof(int), SQLT_INT, (dvoid *) 0, (ub2 *)0,
    (ub2 *)0, OCI_DEFAULT));
    ub4 iters = 0; // (0 causes a leak)
    for( int i=0; i < 100000; i++ )
    OCIStmtExecute(ociServiceHandle, ociStatementHandle, ociErrorHandle, iters, (ub4) 0, (CONST OCISnapshot *) NULL, (OCISnapshot *) NULL, OCI_DEFAULT));
    If I change iter to 1 the leak disappears, but it is not suitable of course. Oracle documentation says following:
    iters (IN)
    For non-SELECT statements, the number of times this statement is executed is equal to iters - rowoff.
    For SELECT statements, if iters is non-zero, then defines must have been done for the statement handle. The execution fetches iters rows into these predefined buffers and prefetches more rows depending upon the prefetch row count. If you do not know how many rows the SELECT statement will retrieve, set iters to zero.
    This function returns an error if iters=0 for non-SELECT statements.
    Did somebody face the problem? Do you know how to fix it?
    null

    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by Bjorn Engsig ([email protected]):
    Are you saying, that the memory leak disappears if you don't do 'for update' in the query?
    Also, is the memory leak on the client or server side?<HR></BLOCKQUOTE>
    Yes, the leak appeares ONLY for 'select ... for update' statements.
    It is a client side leak, the client is Win2000.
    null

Maybe you are looking for

  • Photoshop Elements 10 not responding Win 7

    I've tried re-installing, cleaning temporary files, reseting to Win 7 compatability and running updates - but as soon as I open the organizer or editor is stops working and says Photoshop Elements is not respondng.  Any suggestions before I scrap ado

  • Can i stream movies from my mifi to firestick?

    I just got a Amazon Fire stick for Christmas and would like to know if I can stream movies to the Fire stick from my MYFI 4620L

  • Problem in Printing Euro Symbol in SMARTFORM

    Hi, I need to print EURO Symbol in my SMARTFORM. I am using "ALT+0128"  to get that value. In global data, I am taking one constant, and giving the valuw using this KEY. The symbol is coming....but, when I say save, It is giving syntax error as "The

  • Is anyone else having issues with music randomly starting on iOS 7.1?

    I've had this issue since  I downloaded iOS 7.1.  My music will just randomly start playing without me clicking play and sometimes without any of my music apps even open.  I catch it the most when I get into my car and connect to my Bluetooth.  It co

  • Phone acting up?!?!

    Samsung S4 Randomly a website will open up on my phone; today it took me to a surveysandpromotions website, yesterday it was admin.next.com . Any ideas? I deleted a new app installed on Saturday, but this started before that. Before Saturday words wo