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

Windows Discussion :

Unhandled exception provoqué


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    905
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 905
    Points : 85
    Points
    85
    Par défaut Unhandled exception provoqué
    Bonjour,

    J'ai l'impression que le mnemonique try except fonctionne sauf si c'est une pile personnaliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    void provoqueexception()
    {
    	__try
    	{
    		char *p=NULL;
    		*p=5;
    	}
    	__except(1)
    	{
    		printf("Exception\n");
    	}
    }
    
    void cbon()
    {
    	provoqueexception();
    }
    
    #define size_stack 0x10000
    
    unsigned long retesp;
    char mapile[size_stack];
    
    void cpasbon()
    {
    	_asm 
    	{
    		mov eax,esp
    		mov retesp,eax
    		lea eax,[mapile];
    		add eax,size_stack
    		mov esp,eax
    	}
    	provoqueexception();
    	_asm
    	{
    		mov eax,retesp
    		mov esp,eax
    	}
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	printf("\nAppel de la fonction cbon ..."); cbon();
    	printf("\nAppel de la fonction cbon ..."); cpasbon();
    	return 0;
    }
    Dans la fonction cpasbon , le handler exception ne fonctionne pas car il s'agit d'une pile propre à l'utilisateur.
    Pouvez - vous m'aider à résoudre le probléme ?
    Aucun intêret , oui , mais j'ai absolument besoin de le faire fonctionner.

    Y a t'il une API Windows à appeler aprés et restauration de la pile ?
    Si oui je ne sais pas laquelle.

    Merci.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    À ma connaissance, Windows vérifie que la pile est la bonne lors d'un traitement d'exception, pour éviter les "problèmes".

    Et les "safe exception handlers" sont encore plus draconiens.

    Si tu veux pouvoir utiliser plusieurs piles dans un même thread, utilise des fibres.

    PS: Les nombres magiques, caymal: Utilise EXCEPTION_EXECUTE_HANDLER.
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    905
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 905
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    À ma connaissance, Windows vérifie que la pile est la bonne lors d'un traitement d'exception, pour éviter les "problèmes".

    Et les "safe exception handlers" sont encore plus draconiens.

    Si tu veux pouvoir utiliser plusieurs piles dans un même thread, utilise des fibres.

    PS: Les nombres magiques, caymal: Utilise EXCEPTION_EXECUTE_HANDLER.

    Utiliser des fibres , mais comment ??
    j'ai chercher dans google "fibres,exception,programmation" et j'ai rien trouver.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    La première question, c'est: Pourquoi utilises-tu une pile autre que celle qui t'est fournie par le système?

    Et la seconde question est: Peux-tu faire la même chose avec des fibres? (voir CreateFiber(), ConvertThreadToFiber(), SwitchToFiber()).
    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.

Discussions similaires

  1. unhandled exception at 0x0
    Par tut dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 14/12/2006, 11h56
  2. [DOM] Unhandled exception avec DOM
    Par ep31 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 30/01/2006, 18h36
  3. unhandled exception class System.SecurityException
    Par the big ben 5 dans le forum Langage
    Réponses: 2
    Dernier message: 02/11/2005, 17h41
  4. unhandled exception
    Par PRUVOT dans le forum MFC
    Réponses: 4
    Dernier message: 27/10/2005, 08h57
  5. Réponses: 5
    Dernier message: 12/06/2002, 15h12

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