DotNet bloqué

Résolu
cs_Kev33 Messages postés 16 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 3 avril 2008 - 8 nov. 2007 à 11:30
cs_Kev33 Messages postés 16 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 3 avril 2008 - 21 nov. 2007 à 11:19
Bonjour,

J'ai un programme (application console) vb.net utilisant des librairies de génération PDF et graphiques. Ce programme lancé sur ma machine fonctionne bien. Je place ce programme sur une autre machine, je le lance en ligne de commande. Tout va bien. Je le lance via un service windows (installé avec droits admin) avec l'objet .net process, et il bloque toujours au meme endroit. Je rajoute des traceurs pour savoir exactement ou il plante. Il continu à planter à un endroit différent du code. Je le rééxécute et il continu toujours à planter toujours au meme endroit (endroit qui a changé depuis que j'ai ajouté des lignes de code). Je rajoute encore des lignes de traceurs. Il plante ailleur. je le relance il plante encore au meme endroit. Même si ce n'est pas ce morceaux de code qui est remis en question je l'explique

// debut de programme
traveur.ecrire("debut prog")
// boucle un certain nombre de fois
...
traceur.ecrire("etape 1")
try
monobjetsimple.variabletypestring = autreobjetsimple.autrevariabletypestring
catch ex as exception
traceur.ecrire("erreur : " & ex.tostring)
end try
traceur.ecrire("etape 2")
...
// fin boucle
traveur.ecrire("fin prog")
// fin programme

quand je regarde mon fichier log, j'ai :

...
debut prog
etape 1

... et rien d'autre
Ca semble planter soit à l'affectation de la variable soit au traceur avant de logger dans le fichier. Je me répète, si je rajoute des lignes de traceur, ca va planter ailleur, mais toujours au meme endroit ailleur (hein !? :)

Je n'ai jamais d'exception de levée. ce n'est pas un prog avec gestion implicit de plusieurs threads. Je n'ai rien dans le journal d'evenement windows.

Le programme semble être en execution suspendue.
D'un point de vue mémoire du processus. La taille varie est se stabilise au moment de la suspension d'execution puis quelques minutes apres augmente de ~2Mo puis stagne indéfiniment. Le programme occupe 28Mo au total en mémoire et la machine à 3.7Go de mémoire vive libre.

Mes questions :

Avez vous déjà rencontré ce problème ?
Comment le débuguer, avec quels outils ?

Je suis actuellement en train de me dire que c'est un pb mémoire et que je vais devoir dérouler tout le prog pour voir si tout les objets sont bien "fermés/libérés" (pas de controle, puisque c'est le GC qui gère, mais bien coder c'est important :)

3 réponses

cs_Kev33 Messages postés 16 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 3 avril 2008
21 nov. 2007 à 11:19
<sup>

[Petit historique]

Depuis mon premier post, on a réussi a reproduire le bug en local. on a ciblé le pb autour de l'objet dotnet process utilisé dans le service qui lance le programme qui "plante".

historique

Bon, on a contourné le pb. Comme dans cette situation on a pas besoin de rediriger la sortie standard. On met la propriété redirectstandardoutput de l'objet process à false et le problème n'est plus. Il se pourrait qu'un des composants (EntLib) que l'on utilise dans le programme1.exe puisse provoquer une sortie inapropriée sur la console alors que nous l'utilisons pour "logger" en BDD, même si nous respectons les conseils de la msdn sur la propriété redirectstandardoutput.

Merci d'avoir suivi ce post.

</sup>
3
pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 5
8 nov. 2007 à 17:21
salut
Question bete !
est ce que tu as essayé ton service avec un compte systeme local et l'option "Autoriser l'interaction avec le bureau" d'activer ?

Pat
0
cs_Kev33 Messages postés 16 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 3 avril 2008
8 nov. 2007 à 17:59
Dans ma situation, il n'y a plus de question bete ;)

je n'avais pas essayé avec l'option "Autoriser l'interaction avec le bureau" de cochée, je viens de le faire et rien ne change. le prog plante toujours (au meme endroit). Je suppose que cette option permettrait d'afficher des objets type winform et/iou à manipuler des objets visuels ou utilisateurs. je n'ai rien remarqué de ce genre. Pas de changement non plus dans le gestionnaire d'evenement.

merci pour ta réponse.
0
Rejoignez-nous