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

Visual C++ Discussion :

Plantage VC++2010 avec std::fill


Sujet :

Visual C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 157
    Par défaut Plantage VC++2010 avec std::fill
    Bonjour,

    je développe une appli sous VC++2010. Celle-ci plante en mode debug à chaque fois qu'elle rencontre un std::fill (alors que mon appli s'exécutait bien il y a quelques jours en mode debug).

    L'erreur est "vector iterators incompatible" alors que j'exécute un simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    vector<int> data_a;
    ...
    data_a.resize(...);
     
    // CRASH ICI (vector iterators incompatible)
    std::fill(data_a.begin(),data_a.end(),0);
    J'ai lu sur un autre forum un message supposant que c'était un bug de Visual Studio. Quelqu'un peut-il confirmer?

    Je précise que la fonction qui exécute ce bout de code est appelée à partir d'un thread (si ça peut avoir son importance).

    Merci. G13

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Je pense que soit la structure interne de votre vector a été endommagé (avec l'utilisation de primitive comme memset par exemple), soit que votre itérateur est invalide car il y a eu une modification de la structure pendant les itérations de la boucle (une suppression faite dans un autre thread par exemple).

    Vérifiez avec un débuggeur que la structure de l'objet vector n'est pas endommagée avant le début de la boucle.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 157
    Par défaut
    Bonjour et merci pour la réponse.

    Malheureusement je ne vois pas comment mes vecteurs pourraient être modifiés ailleurs dans mon code. J'ai remarqué qu'en mode DEBUG, tous les appels à std::fill plantent de la même manière lorsqu'ils sont appelés à l'intérieur de threads.

    Soit c'est un bug de VS, soit j'ai loupé quelque chose. Je n'ai aucun plantage en mode Release (mais bon, c'est pas vraiment comparable quand on parle de threads).

    G.Treize

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Le debuggeur vous indique quoi précisément ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 157
    Par défaut
    Désolé, je ne peux pas faire copier/coller d'écran facilement car nos poste PC Internet ne sont qu'au nombre de 3 avec un début total pour tous les PC de 512 kbps (je vous écris du beau milieu de l'Antarctique sur la base Concordia!!).

    Bref, chaque fois que j'appelle une méthode de la std à partir d'un thread, j'ai ce plantage, et sur des tableaux de différentes natures et diemensions. Là par exemple, après avoir remplacé mes std::fill, je viens de tomber sur un "vector iterators incompatible" pour un "clear" (genre un vecteur à 2 éléments, rien de démentiel).

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Je ne pense pas que les containers stl soient threadsafe par défaut.
    Dites "bonjour" aux manchots.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 157
    Par défaut
    Merci pour la réponse... je vais donc me débrouiller autrement...

    Par contre ici pas de manchots... seulement des "humains" (entre 50 et 70 cette année sur la base). Il paraît que des fois on aperçoit des "skwah" (oiseaux)... mais on est quand même à 1200km de la côte la plus proche!!

    Mais mardi je reparspar la base côtière française Dumont d'Urville... là-bas il y a tout ce qu'on veut comme animaux (manchots adélie, manchots empereurs, phoques, lions de mer, baleins...) Je transmettrai le bonjour

Discussions similaires

  1. Plantage Excel 2010 avec déclaration tableau
    Par Jean-Philippe44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/10/2014, 22h07
  2. Problème avec std::Vector
    Par mister3957 dans le forum SL & STL
    Réponses: 8
    Dernier message: 16/02/2006, 10h18
  3. Plantage de IE avec un textarea
    Par Toxine77 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 28/11/2005, 12h27
  4. [Kylix] plantage MDK9.1 avec Kylix3
    Par picot dans le forum EDI
    Réponses: 2
    Dernier message: 28/09/2004, 14h45
  5. Recherche "étoilée" avec std::set
    Par guejo dans le forum MFC
    Réponses: 2
    Dernier message: 06/05/2004, 13h28

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