[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Tsp-devel] Malloc et free problèmes
From: |
Arquer Stephane |
Subject: |
[Tsp-devel] Malloc et free problèmes |
Date: |
Mon, 12 Nov 2007 17:56:36 +0100 |
Salut,
J'ai rencontré le problème suivant:
la fonction bb_utils_build_sem_name(bb->name) ds posix_bb_sem_get, retourne
une adresse = 0x8 qui n'est pas valide, le free (de rtems) se plante donc car
il ne retrouve pas le bon segment.
// code de bb_core_posix.c (posix rtems !)
static int posix_bb_sem_get(S_BB_T *bb, int create)
{
int32_t retcode;
char* name_sem = NULL;
int oflag = 0;
if (create)
oflag = O_CREAT | O_EXCL;
name_sem = bb_utils_build_sem_name(bb->name);
bb->priv.posix.sem_id = (sem_t *)sem_open(name_sem, oflag |
BB_SEM_ACCESS_RIGHT);
if ( bb->priv.posix.sem_id < 0) {
LOG(BB_LOG_SEVERE, "BlackBoard::bb_create",
"Cannot create semaphore < %s >", name_sem);
goto err;
}
free(name_sem);
return BB_OK;
err:
free(name_sem);
return BB_NOK;
}
Pour éviter cela, j'ai modifié l'appel de sem_open :
bb->priv.posix.sem_id = (sem_t *)sem_open(bb_utils_build_sem_name(bb->name),
oflag | BB_SEM_ACCESS_RIGHT);
Auriez-vous une idée de la provenance de ce type de problème ? (contexte de
fonction ??)
Merci d'avance.
sa
- [Tsp-devel] Malloc et free problèmes,
Arquer Stephane <=