[osy] Re: Problem s assertem v mallocu

  • From: Lukas Jezek <lukas.jezek@xxxxxxxxx>
  • To: osy@xxxxxxxxxxxxx
  • Date: Fri, 28 Nov 2008 19:24:39 +0100

Zdar,

jsem dmnt :D Chybu jsem si objevil, delala to takova nevinnost (prejmenoval jsem argument funkce). Za odmenu vam dam maly kviz (v dalsim mailu bude odpoved):

int vma_directory_create(vma_directory_t * dirp) {
  vma_directory_t directory = malloc(sizeof(struct vma_directory));
  if (directory == NULL) {
        return ENOMEM;
  }
        
  STRUCT_SET_MAGICS(directory);

  ...

  malloc_check_blocks(); //1

  printk("VMA: directory %u allocated\n", *directory);

  malloc_check_blocks(); //2

  (*dirp) = directory;
  malloc_check_blocks(); //3

  return EOK;
}

Muzete si tipnout, ktera z vyse oznacenych funkci vyvolala assert v tabulkach malloc.

funkce byla volana jako:

vma_directory_t g_adresar; // globalni promenna
...

  vma_director_create(&g_adresar);

Jeste dulezite info:

sizeof(struct vma_directory) == 4128B



Tak kdo je vitez (1, 2 nebo 3)?


Lukas

Lukas Jezek napsal(a):
Zdarec,

jste z tohohle moudri? Resim to uz celkem dlouho a moc si s tim nevim rady. Pridal jsem si informacni vypisy pri kazde alokaci (viz. prilozeny soubor malloc.c).

Vypada to, ze je zkoruptovany druhy blok pameti (4096B stack idle vlakna) coz mi prijde uplne nejdivnejsi, asi nekde neco zapisuju divne do pameti, budu to muset projet, nenapada vas neco?

Lukas


Other related posts: