You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Sander Striker <s....@striker.nl> on 2001/05/10 12:57:53 UTC

RE: cvs commit: apr/test testmem.c

I'll look into it and see what the problem is.

Sander


> -----Original Message-----
> From: dreid@apache.org [mailto:dreid@apache.org]
> Sent: 10 May 2001 12:45
> To: apr-cvs@apache.org
> Subject: cvs commit: apr/test testmem.c
>
>
> dreid       01/05/10 03:45:04
>
>   Modified:    test     testmem.c
>   Log:
>   This adds Sanders suggestion of testing the reset for the
> tracking memory
>   system.  This also exposes a problem in that code where free is
> called twice
>   for the same piece of memory, generating a segfault.  Using
> some extra debugging
>   This is what I see...
>
>   Tracking Memory
>           Creating the memory area............................OK
>           Creating 10 lumps of memory, each 1024 bytes........OK
>           Writing to the lumps of memory......................OK
>           Check what we wrote.................................OK
>           About to reset the tracking memory..................
>   calling free on 800259a8
>   calling free on 80025598
>   calling free on 80025598
>
>   I don't have tim to investigate in more detail at the moment.
>
>   NB this will segfault, but it's being committed to allow people to
>   see the problem themselves :)
>
>   Submitted by:	Sander Striker <st...@samba-tng.org>
>   Reviewed by:	David Reid <dr...@apache.org>
>
>   Revision  Changes    Path
>   1.2       +18 -4     apr/test/testmem.c
>
>   Index: testmem.c
>   ===================================================================
>   RCS file: /home/cvs/apr/test/testmem.c,v
>   retrieving revision 1.1
>   retrieving revision 1.2
>   diff -u -r1.1 -r1.2
>   --- testmem.c	2001/05/09 17:46:18	1.1
>   +++ testmem.c	2001/05/10 10:45:00	1.2
>   @@ -68,11 +68,11 @@
>
>    #define LUMPS 10
>    #define LUMP_SIZE 1024
>   +char *ptrs[LUMPS];
>
>    static void do_test(apr_memory_system_t *ams)
>    {
>        int cntr,cntr2;
>   -    char *ptrs[LUMPS];
>
>        printf("\tCreating %d lumps of memory, each %d bytes........",
>               LUMPS, LUMP_SIZE);
>   @@ -104,7 +104,12 @@
>                }
>            }
>        }
>   -    printf("OK\n");
>   +    printf("OK\n");
>   +}
>   +
>   +static void do_free(apr_memory_system_t *ams)
>   +{
>   +    int cntr;
>
>        printf("\tFreeing the memory we created.......................");
>        for (cntr = 0;cntr < LUMPS;cntr ++){
>   @@ -133,7 +138,8 @@
>        printf("OK\n");
>
>        do_test(ams);
>   -
>   +    do_free(ams);
>   +
>        printf("Tracking Memory\n");
>        printf("\tCreating the memory area............................");
>        if (apr_tracking_memory_system_create(&ams2, ams) != APR_SUCCESS){
>   @@ -143,7 +149,15 @@
>        printf("OK\n");
>
>        do_test(ams2);
>   -
>   +    printf("\tAbout to reset the tracking memory..................\n");
>   +    if (apr_memory_system_reset(ams2) != APR_SUCCESS){
>   +        printf("Failed.\n");
>   +        exit(-1);
>   +    }
>   +    printf("OK\n");
>   +    do_test(ams2);
>   +    do_free(ams2);
>   +
>        printf("Trying to destroy the tracking memory
> segment...............");
>        if (apr_memory_system_destroy(ams2) != APR_SUCCESS){
>            printf("Failed.\n");
>
>
>
>
>