Maak genestelde pthread

Ik heb C lange tijd niet gebruikt en ik weet niet meer of het mogelijk is om een ​​thread uit een andere thread te maken. Als ik het probeer, krijg ik de volgende foutmelding:

sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.

Aborted

Is er een oplossing om een ​​thread van een andere te lunchen? Is er iets speciaals dat ik in attributen moet zetten om het te laten werken?

Bedankt

PS: ik zou alleen pthread en niet fork() moeten gebruiken zoals vereist door een universiteitsproject

0
Ik zal het een beetje vereenvoudigen en als ik het probleem niet kan oplossen, zal ik het posten.
toegevoegd de auteur fra, de bron
het zou mogelijk moeten zijn, maar waar is dan je code ...
toegevoegd de auteur Antti Haapala, de bron

1 antwoord

Deze fout heeft niets met threads te maken. Het is een aanwijzing dat je het geheugen dat gebruikt wordt door malloc voor boekhouddoeleinden corrumpeert, waarschijnlijk door een buffer over te slaan in een blok dat je uit malloc hebt verkregen.

Elke thread kan nieuwe threads maken; daar is geen beperking aan.

3
toegevoegd
De interne malloc-aanroep die toevallig werd gemaakt samen met het maken van de thread heeft waarschijnlijk net de crash geactiveerd ...
toegevoegd de auteur R.., de bron
Dank je. Zonder het maken van de thread is er geen fout, daarom ben ik een beetje verdwaald in het zoeken naar het probleem. Ik zal doorgaan met zoeken ... bedankt dat je me de juiste richting hebt gewezen.
toegevoegd de auteur fra, de bron
Ik vond het probleem en in feite was het gerelateerd aan een malloc. Nogmaals bedankt voor uw hulp.
toegevoegd de auteur fra, de bron