IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Thread ?Débordement de pile? et bloc de 32 nulls écrits dans un fichier


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 190
    Par défaut Thread ?Débordement de pile? et bloc de 32 nulls écrits dans un fichier
    Bonjour

    Dans le cadre d'une application multi thread de transfert de fichiers vers des machines à Commande Numérique (par RS232) de temps en temps sur de très "gros" fichiers 200 Ko (copier X fois en mémoire au cours du traitement) mon programme remplace une ou plusieurs parties du fichier par des blocs de 32 caractères null consécutifs

    Est il possible qu'un débordement de pile dans un thread puisse générer ce type d'erreur (remplacement d'une partie du fichier par des blocs de 32 octets null) ?

    Quel est la taille de la pile, et au fait qu'est ce que c'est et à quoi cela sert t'il ?

    Merci

  2. #2
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    je sais pas, mais je pence que tu dois changé ton algo de transfer:
    comme le port série est un peut lent par raport au lecture a partir DD, alors , pourqoi pas lire simlement le bloc à envoyé et attendre l'evenement "le registre d'envoit est vide"

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 190
    Par défaut
    Merci pour ta proposition

    mais le probleme se produit de manière aléatoire et il concerne principalement la reception de données de la machine vers le pc et non l'envoi

    lors de la reception un thread tourne en continu pour lire les données du port com les ajoutent aux données déjà recues puis au bout d'un timeout de 5 sec sans récéption il transmet le fichier recu "complet" au thread de la machine

    qui lui devrait supprimer les nulls du fichier le probleme est qu'il en reste dans le fichier mais dans la ligne avant d'enregistrer le fichier je supprime les nulls , et c'est la que je comprends plus rien , d'ou ma question est ce qu'un debordement de pile peux massacrer un emplacement memoire genre le contenu du fichier avant enregistrement en écrivant des blocs de 32 nulls dans le fichier

  4. #4
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    pour j'ai jamais eu de probléme de ce genre, toujour j'envoit en début la taille de fichier à envoyé puis le fichier lui meme
    lis: sa et sa de nono40,, et en parlant de nono où est il, sava bien, tu nous manque ici, j'éspére que tt va bien pour toi

  5. #5
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    alors??
    si oui donne la solution

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 190
    Par défaut
    helas non ce n'est pas resolu du tout

    je te remercie encore pour ton idée, mais je parle de communication via le port serie RS232 et pas via le réseau de plus j'ai déjà fait l'envoi du fichier morceau par morceau car certaine machine numérique sont très très lentes à la récéption mais ma question est plutôt

    Quelles sont les conséquences possibles d'un débordement de pile dans un thread ?

    Si j'utilise memproof il indique des erreurs de type memory overrun, mais qu'est ce que cela veux dire exactement, sachant que cela survient de manière totalement aleatoire et a des endroit ou ce n'est pas possible !!!

Discussions similaires

  1. [WIN32][D7][DLL] Erreur: débordement de pile !
    Par hepha1970 dans le forum Débuter
    Réponses: 5
    Dernier message: 17/12/2007, 01h41
  2. [Threads] Implémenter une pile de processus
    Par Invité dans le forum Général Java
    Réponses: 7
    Dernier message: 30/07/2007, 12h14
  3. Débordement de pile
    Par litlebasic dans le forum Delphi
    Réponses: 11
    Dernier message: 29/06/2006, 11h48
  4. Débordement de pile
    Par portu dans le forum Delphi
    Réponses: 9
    Dernier message: 28/06/2006, 13h58
  5. Réponses: 7
    Dernier message: 10/01/2006, 20h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo