[osy] Re: Problem s assertem v mallocu

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

Odpoved prijde dole, abyste nebyli osizeni, pokud vam to chodi mailem :D

Lukas Jezek napsal(a):
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)?


Vitezem je //2, protoze jsem o radek vyse zapomnel hvezdicku a tak se misto 4B na stacku predavaly 4kB, coz ho trochu rozesralo :D

At zijou ladici vypisy (zvlast ty, ktere vas zdrzi asi tak na 3 hodiny od prace).


Lukas

Other related posts: