J'ai un programme dans lequel un maître traite spawns N travailleurs qui vont inverser, chacun, chaque ligne d'une image, en me donnant une image inversée à la fin. Le programme utilise la mémoire partagée et les sémaphores posix, sems sans nom, plus spefically et j'utilise shmctl avec IPC_RMID et sem_close et sem_destroy dans la fonction terminate(). Cependant, lorsque je lance le programme plusieurs fois, il me donne parfois un défaut de segmentation et est dans le premier shmget. J'ai déjà modifié ma valeur shmmax dans le noyau, mais je ne peux pas faire la même chose avec la valeur shmall, je ne sais pas pourquoi.
Quelqu'un peut-il m'aider s'il vous plaît? Pourquoi cela arrive et pourquoi n'est-ce pas tout le temps? Le code semble bien, me donne ce que je veux, efficace et ainsi de suite ... mais parfois je dois redémarrer Ubuntu pour pouvoir le lancer à nouveau, même si je pense que je vais libérer les ressources.
S'il vous plaît éclairer moi!
EDIT:
Voici les 3 fichiers nécessaires pour exécuter le code + le makefile:
http://pastebin.com/JqTkEkPv
http://pastebin.com/v7fQXyjs
http://pastebin.com/NbYFAGYq
Vous devez exécuter comme ça./inverser someimage.ppm outimage.ppm (tester avec un petit pour l'instant s'il vous plaît)
Voici quelques valeurs qui peuvent être importantes:
$ipcs -lm
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 262144
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
$ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
EDIT: la faute de SEG a été résolu! J'allouais un tableau ** dans la mémoire partagée et c'était un peu bizarre. Donc, j'ai alloué un segment pour un tableau * seulement et voilà. Si vous voulez, vérifiez le nouveau code et commentez.
Ça va être difficile sans accès au code. – Lagerbaer
Si vous pouvez réduire la zone de code à l'origine du défaut de segmentation, collez les lignes incriminées ici. – vpit3833
J'ai modifié le post pour que vous puissiez voir les liens avec tout le code source – neverMind