Page 1 of 1

Strange memory allocation bug

Posted: Thu Jul 03, 2025 3:58 pm
by torii
Hello all!
I am experiencing a strange bug when using the liballoc implementation of malloc.
When first accessing allocated memory, the next write to memory seems to be ignored completely, leaving the memory uninitialised. I have added some example screenshots below:

Code: Select all

    int *n = malloc(sizeof(int));

    *n = 10;
    char buf[10] = {0};
    utos(*n, 10, buf);
    fputs(1, buf);
    fputs(1, "\n");

    *n = 12;
    utos(*n, 10, buf);
    fputs(1, buf);
malloc bug 2.png
malloc bug 2.png (452 Bytes) Viewed 200 times
By moving the declaration of `buf` before assigning to *n:

Code: Select all

    int *n = malloc(sizeof(int));
    char buf[10] = {0};

    *n = 10;
    utos(*n, 10, buf);
    fputs(1, buf);
    fputs(1, "\n");

    *n = 12;
    utos(*n, 10, buf);
    fputs(1, buf);
malloc bug 3.png
malloc bug 3.png (351 Bytes) Viewed 200 times
Edit: forgot to upload the github link https://github.com/Toriiiiiiiiii/Solkern

Re: Strange memory allocation bug

Posted: Thu Jul 03, 2025 7:48 pm
by Octocontrabass
Have you tried disassembling this function? I suspect your code isn't doing what you think it's doing. I'm especially interested in the parameters being passed to utos().