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

 C++ Discussion :

Data execution prevention (0xC0000005)


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Par défaut Data execution prevention (0xC0000005)
    Bonjour à tous,

    J'ai un petit problème sous windows xp 2002 sp2. J'ai une application en vb.net qui appelle un executable vc++.
    A la fin de l'execution de l'appli vcpp (juste avant le return 0
    Il arrive que le programme me lance, de manière assez aléatoire, une exception DEP. Comme s'il ne parvenait pas à clore le programme et à repasser à l'IHM.
    Auriez vous une idée? je suis dans le floue...

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Par défaut
    Ouai j'aurais bien dit ca aussi, mais ce qui est amusant, c'est que cela plante vraiment à la toute fin de l'execution, genre quand l'appli vc++ devrait libérer l'espace qu'elle prend, retourner 0 et se fermer.

    Le fait est que mon appli traite des fichiers csv, et qu'elle ne bugg ainsi que sur certains qui n'ont pas de différences notables les séparant des autres : ils ne sont pas plus volumineux, ils ont exactement la même mise en page, avec juste une ligne vide à la fin pour arréter le traitement, etc.

    Bref je suis vraiment peaumé

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Par défaut
    Re,

    Alors, le problème a pu etre palié en rajoutant une grosse phase d'initiation, mon hypothèse (qui, si vous pensez qu'elle est fausse, je vous prierais de me le faire savoir), est que la phase d'initialisation qui traite bon nombre de variables, permet d'allouer en premier lieu un espace mémoire important qui permet aux exigences suivantes d'avoir à leur tour une bonne taille.
    Sans exigence init, il arrive que la première ligne soit bien plus courte que la seconde, et comme c'est une boucle for, qui exploite les memes variables en leur donnant plus ou moins d'espace pour stocker les nouvelles valeurs, on arrive peut etre a un débordement.
    Voilà, je suis ouvert à tout avis.

    Merci d'avance

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    J'ai du mal à saisir le sens de ton message.

    L'histoire de DEP, elle ressemble vraiment à un simple débordement de pile dans le main(). As-tu un buffer en variable locale dans ton main() ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 56
    Par défaut
    Si on peut considérer les string comme buffer de char
    Ou bien tout char * comme buffer de char
    Alors oui j'en ai tout une tripotée. Mais j'ai vu et revu le programme, et il ne m'est pas apparu d'erreur.
    Surtout que les fichiers qui plantent, n'ont vraiment rien de particuliers, à part, peut etre, des tailles de lignes très variées (et encore)
    Et puis pourquoi cela planterais au moment ou l'on sort du programme vc++ et pas au moment ou il alloue justement de la mémoire pour ces pointeurs?
    Peut etre me trompe-je, mais a mon sens c'est au moment de l'allocation que l'exception devrait etre lancée.
    Qu'en penses tu?

Discussions similaires

  1. Executer batch avec Cognos Data Manager
    Par soich dans le forum Autres outils décisionnels
    Réponses: 0
    Dernier message: 26/08/2010, 22h34
  2. Réponses: 5
    Dernier message: 10/07/2009, 16h57
  3. [SSIS] [2K5] Trace d'execution d'un data flow
    Par hokidoki dans le forum SSIS
    Réponses: 2
    Dernier message: 17/06/2009, 13h41
  4. le DEP (Data Execution Prevention) me pourrit la vie
    Par Speed41 dans le forum Sécurité
    Réponses: 2
    Dernier message: 12/03/2007, 18h36
  5. [Lazarus] Mettre des data dans un exécutable
    Par JoseF dans le forum Lazarus
    Réponses: 3
    Dernier message: 16/10/2006, 17h29

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