Erreur de segmentation sur script bash

Erreur de segmentation sur script bash - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 15-08-2008 à 15:31:45    

Bonjour à tous !
 
     Je rencontre un problème sur un script Bash (il s'agit d'un script qui récupère une URL et qui analyse la page, à des intervalles réguliers). Après quelques heures d'exécution, je commence à aperçevoir des erreurs comme des options non reconnues par cURL, et à la fin, le programme se termine par "Erreur de segmentation". Quand je relance le programme,  partir du même terminal, le problème recommence, mais cette fois-ci seulement après 1 heure environ.
 
    C'est un programme qui comporte des boucles et des variables, rien de plus.
 
D'ou peut provenir cette erreur ? dépassement du buffer ? dois-je libérer mes variables à chaque tour de boucle ?
 
Merci à tous !
RedVivi
 
PS: S'agissant d'un projet professionnel, je ne peux poster le code source.

Reply

Marsh Posté le 15-08-2008 à 15:31:45   

Reply

Marsh Posté le 15-08-2008 à 17:02:11    

Citation :

PS: S'agissant d'un projet professionnel, je ne peux poster le code source.


Trop fort !
Et donc en bon professionnel tu nous verse ton salaire si on débogue ton code...?


---------------
La réponse est 42
Reply

Marsh Posté le 15-08-2008 à 17:02:50    

redvivi a écrit :

(...)

 

PS: S'agissant d'un projet professionnel, je ne peux poster le code source.


Ca va être impossible de t'aider, désolé.

Message cité 1 fois
Message édité par Fork Bomb le 15-08-2008 à 17:03:46

---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 15-08-2008 à 17:16:39    

redvivi a écrit :

Bonjour à tous !
 
     Je rencontre un problème sur un script Bash (il s'agit d'un script qui récupère une URL et qui analyse la page, à des intervalles réguliers). Après quelques heures d'exécution, je commence à aperçevoir des erreurs comme des options non reconnues par cURL, et à la fin, le programme se termine par "Erreur de segmentation". Quand je relance le programme,  partir du même terminal, le problème recommence, mais cette fois-ci seulement après 1 heure environ.
 
    C'est un programme qui comporte des boucles et des variables, rien de plus.
 
D'ou peut provenir cette erreur ? dépassement du buffer ? dois-je libérer mes variables à chaque tour de boucle ?
 
Merci à tous !
RedVivi
 
PS: S'agissant d'un projet professionnel, je ne peux poster le code source.


Essaye avec un langage que tu maîtrise, car visiblement le bash et les expressions régulières c'est pas du tout ton fort... (cf un autre post où tu posais des questions sur le même programme...)
Surtout si c'est pour du pro.

Reply

Marsh Posté le 15-08-2008 à 17:26:51    

Fork Bomb a écrit :

Ca va être impossible de t'aider, désolé.


Je vois pas pourquoi il faut absolument voir le code pour aider quelqu'un à le débugguer.
Simplement en posant des questions et en le guidant y a moyen de faire beaucoup de chose.
 
Par exemple, monitorer l'état du système avant le crash.
Si c'est un problème de boucle foireuse qui consomme toute la mémoire, ca devrait être indiqué dans les logs du système que le kernel kill certain process...


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 15-08-2008 à 17:51:22    

zeblods a écrit :


Essaye avec un langage que tu maîtrise, car visiblement le bash et les expressions régulières c'est pas du tout ton fort... (cf un autre post où tu posais des questions sur le même programme...)
Surtout si c'est pour du pro.


 
Il arrive parfois que l'on te demande des choses en dehors de tes compétences...tout le monde n'a pas dans son entreprise un développeur qui attend gentiment que l'on lui pose des questions ou de developper un script. En tout cas je vais regarder dans les logs pour voir si il y a quelquechose.
 
Cependant, quelles sont les erreurs les plus courantes menant à une erreur de segmentation ? Une boucle qui tourne indéfiniment et qui assigne une nouvelle variable à chaque fois par exemple?

Reply

Marsh Posté le 15-08-2008 à 18:32:21    

Heu ça peut pas être un segfault retourné par un des programmes que tu utilises dans tes boucles ? (style curl) ?
A la limite tu print tous les output de touts les programmes utilisés dans des fichiers à part comme ça tu sauras qui est le coupable


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-08-2008 à 19:26:01    

Tu veux dire rediriger le stderr ? Comment faire ?

Reply

Marsh Posté le 15-08-2008 à 23:14:16    

au hasard, 2>


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 16-08-2008 à 09:38:23    

Je pense que j'ai compris la source de tous mes maux...Par contre cette fois-ci je bute sur un problème. Je cherche à vérifier qu'une variable a la forme d'une adresse IP, je sens que ça va pas etre gagné ça...

Reply

Marsh Posté le 16-08-2008 à 09:38:23   

Reply

Marsh Posté le 16-08-2008 à 09:44:44    

http://imgs.xkcd.com/comics/regular_expressions.png
http://oreilly.com/catalog/regex/chapter/ch04.html
 


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 16-08-2008 à 10:26:33    

Roger ! Je m'y mets de suite !
 
Merci @ tous !

Reply

Marsh Posté le 16-08-2008 à 11:56:38    

Pour moi en bash, le seul problème qui peut se poser est d'ouvrir un fichier et de ne pas le fermer. Avec des variables je ne vois pas.
 
Pour ma culture perso, le problème venait d'où?

Reply

Marsh Posté le 17-08-2008 à 12:29:01    

Il semblerait que j'avais une variable (qui devait être de type ip), qui parfois contenait le code HTML d'une page web, et le fait de passer une page web en argument dans cURL provoquait une erreur de segmentation après quelques tours de boucle (avec cet argument).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed