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

Boost C++ Discussion :

BadAlloc lors du chargement dynamyque d'un SO


Sujet :

Boost C++

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur Recherche et développement
    Inscrit en
    Janvier 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur Recherche et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 58
    Points : 156
    Points
    156
    Par défaut BadAlloc lors du chargement dynamyque d'un SO
    Nous avons un programme qui doit fonctionner sur des plates-formes Windows, Debian et UBuntu. Tout se passe bien sous Windows... Sur les plateformes Linux, le programme plantent à l'éxécution d'un chargement dynamique d'un librairie SO (Les traces sont légèrement différentes, nous ne préseterons que celle de Debian pour alléger la discussion) Nous avons les traces suivantes:

    #0 0x0000000000025936 in ?? ()
    #1 0x00007f54172760fc in std::bad_alloc::bad_alloc (this=0x7fffcfebc9a8) at /usr/include/c++/4.6/new:59
    #2 0x00007f5413fee83a in boost::exception_detail::bad_alloc_::bad_alloc_ (this=0x7fffcfebc980) at /DHS/c/boost_1_48_0/boost/exception/detail/exception_ptr.hpp:100
    #3 0x00007f5413fee99e in boost::exception_detail::get_static_exception_object<boost::exception_detail::bad_alloc_> () at /DHS/c/boost_1_48_0/boost/exception/detail/exception_ptr.hpp:119
    #4 0x00007f5413fe97d6 in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at /DHS/c/boost_1_48_0/boost/exception/detail/exception_ptr.hpp:138
    #5 0x00007f5413fe9852 in _GLOBAL__sub_I_Chroma.cpp(void) () at libex/trunk/src/Definition/Chroma.cpp:213
    #6 0x00007f541dc00cd0 in ?? () from /lib64/ld-linux-x86-64.so.2
    #7 0x00007f541dc00dc7 in ?? () from /lib64/ld-linux-x86-64.so.2
    #8 0x00007f541dc05183 in ?? () from /lib64/ld-linux-x86-64.so.2
    #9 0x00007f541dc00926 in ?? () from /lib64/ld-linux-x86-64.so.2
    #10 0x00007f541dc0489a in ?? () from /lib64/ld-linux-x86-64.so.2
    #11 0x00007f541d283f66 in ?? () from /lib/x86_64-linux-gnu/libdl.so.2
    #12 0x00007f541dc00926 in ?? () from /lib64/ld-linux-x86-64.so.2
    #13 0x00007f541d2842ec in ?? () from /lib/x86_64-linux-gnu/libdl.so.2
    #14 0x00007f541d283ee1 in dlopen () from /lib/x86_64-linux-gnu/libdl.so.2

    La ligne 213 est un } qui représente la dernière ligne d'une fonction et du fichier (sur UBuntu, c'est la même chose mais sur un autre fichier). Visiblement, cette fonction n'a jamais été appelé (Il y aurait eu des traces de l'appelant). Le fichier n'a pas de référence direct à BOOST, bien que dans les *.h et d'autres composants de notre librairie BOOST est utilisé. Le code fait aussi usage important de singleton qui amènent l'usage variables statiques globales.
    De plus, les programmes de tests chargeant la même librairie fonctionne (mais il n'y a pas le chargement dynamique après le démarrage)

    Il semble que tout soit lié à l'initialiation lors du chargment dynamique, mais nous n'avons pas vu d'options dans gcc ou le loader qui nous permettrait de controler el chargement. Nous ne comprennons pas aussi le lien avec BOOST.
    Est-ce qu'il y a quelqu'un qui a un hint pour nous sortir de ce mauvais pas?

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Le plantage se produit en mode debug et optimisé ? Si oui, passe un coup de déboggeur sur cette fonction lors de son chargement en mode debug. Tu devrais avoir une idée de ce qui se passe, sans doute une variable non initialisée quelque part qui est utilisée pour un constructeur de singleton ou autre.
    Et il y a 90% de chance qu'il y a un warning associé à ce problème dans la compilation.

Discussions similaires

  1. message lors du chargement d'une iframe
    Par zorba49 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/09/2005, 17h27
  2. Réponses: 3
    Dernier message: 08/12/2004, 21h11
  3. Pb de séparateur lors du chargement sous excel
    Par mickael777 dans le forum C++Builder
    Réponses: 5
    Dernier message: 25/06/2004, 09h52
  4. [MX2004] redimensionner une image lors du chargement
    Par ouinouin dans le forum Flash
    Réponses: 8
    Dernier message: 18/02/2004, 18h32
  5. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 15h21

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