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

VB 6 et antérieur Discussion :

Plantage inexpliqué en mode runtime


Sujet :

VB 6 et antérieur

  1. #1
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 135
    Par défaut Plantage inexpliqué en mode runtime
    Bonjour,
    Mon blem comme promis.

    J'ai écris un code utilisant HttpSenRequest en méthode POST.
    Celui-ci fonctionnait correctement jusqu'à un moment que je ne saurais identifier
    (d'où l'incapacité à déterminer l'origine du problème) -
    depuis, le code s'exécute correctement en mode compilé mais provoque
    une erreur fatale en plantant vb6 dès qu'il est exécuté en runtime sur ce poste précis.
    J'ai porté le code sur un autre poste et il s'y exécute correctement en runtime ou compilé.
    L'erreur provoquée est curieuse car elle s'exécute toujours au même moment
    => sur le end Function gérant l'appel HttpSendRequest
    (qui s'exécute pourtant correctement en mode pas à pas - retour de valeur, destruction des handles etc !!! ).

    J'ai supprimé les fichiers tmp de vb, vidé les caches, réinstallé vb ainsi que le parefeu - je n'ai pas d'antivirus actif.
    J'ai même envisagé une corruption de wininet (v:6.00.1811.116) que j'ai réimporté malgré une signature correcte, depuis le poste fonctionnel
    (rien ne parait futile quand on ne trouve pas).

    Ayant écrit plusieurs codes utilisant HttpSendRequest, le problème est identique sur ce poste (exécution compilée possible, et plantage en runtime).
    Quelqu'un aurait-il un début d'explication ?

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    Je vais peut-être dire une bêtise mais peut-être détruis-tu l'objet sans attendre la réponse du serveur, qui serait plus lente sur ce poste en particulier ?

    J'ignore comment se comporte cette fonction, il freeze tant qu'il n'a rien reçu ?

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 135
    Par défaut
    Non, d'une part parce que j'exécute la requête en mode synchrone
    d'autre part elle s'exécute bien en compilé (plus rapide qu'en pas à pas) -
    j'ai aussi précisé qu'en mode pas à pas, les données sont bien reçues et que le plantage a lieu
    au moment de quitter la fonction donc probablement à l'affectation de la variable réceptrice.

    => le plantage est une fermeture brutale de l'ide VB6

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    on peut avoir la procédure appelante ? le contexte ?

    edit : c'est vraiment bizarre que ça marche en pas à pas mais pas directement ...

  5. #5
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Bonjour
    Un idée , comme çà en passant, tu pourrais essayer de créer ton exe en P-Code (changement des options de compilation) on sait jamais. Quand tu es dans l'ide de vb, c'est le P-Code qui est éxécuté.

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Je ne comprends pas à l'aide des seules explications données.

    J'aimerais deux précisions :
    1) c'est quoi, exactement, le "end function" ? Juste ce qu'à spontanément écrit VB après l'ouverture de la fonction ?
    Si oui, il est étonnant que cela "plante" à ce niveau ! la cause doit être antérieure à cette fin de fonction.

    2) utilises-tu le sous-classement dans ton code ?

    Autre point : tu dis ne pas avoir de problème en "pas à pas" . As-tu essayé d'insérer un ou plusieurs DoEvents avant et après l'appel de ta fonction ?

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 135
    Par défaut
    Citation Envoyé par Vld44 Voir le message
    on peut avoir la procédure appelante ? le contexte ?

    edit : c'est vraiment bizarre que ça marche en pas à pas mais pas directement ...
    on peut même avoir un code qui se comporte comme décrit précédemment,
    celui de docvb par exemple http://docvb.free.fr/apidetail.php?idapi=209


    Citation Envoyé par Delbeke Voir le message
    Bonjour
    Un idée , comme çà en passant, tu pourrais essayer de créer ton exe en P-Code (changement des options de compilation) on sait jamais. Quand tu es dans l'ide de vb, c'est le P-Code qui est éxécuté.
    En P-Code, il plante «comme de bien entendu...» puisqu'il plante déjà en mode runtime

    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    Je ne comprends pas à l'aide des seules explications données.

    J'aimerais deux précisions :
    1) c'est quoi, exactement, le "end function" ? Juste ce qu'à spontanément écrit VB après l'ouverture de la fonction ?
    Si oui, il est étonnant que cela "plante" à ce niveau ! la cause doit être antérieure à cette fin de fonction.
    - Oui,
    - C'est lié à la fonction HttpSendRequest de Wininet comme indiqué précédemment puisque si cette ligne est mise en remarque, il n'y a plus de plantage
    par contre le plantage se produit à la sortie de la fonction «Container» du HttpSendRequest ou à l'arrêt de l'exécution en mode runtime si l'arrêt est anticipé.

    Citation Envoyé par ucfoutu Voir le message
    2) utilises-tu le sous-classement dans ton code ?
    Non, voir le code cité plus haut en lien dans ce post
    Citation Envoyé par ucfoutu Voir le message
    Autre point : tu dis ne pas avoir de problème en "pas à pas" . As-tu essayé d'insérer un ou plusieurs DoEvents avant et après l'appel de ta fonction ?
    Ce n'est pas ce que j'ai dit, lire plus haut, de plus le plantage n'est pas un problème de rendu de main mais un crash pur et simple de VB6

  8. #8
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 139
    Par défaut
    Le problème étend peu commun, je ne propose pas une réponse ( cela aurait été trop beau ), mais encor une question suplémentaire.

    Citation Envoyé par DarkVader
    Ayant écrit plusieurs codes utilisant HttpSendRequest, le problème est identique sur ce poste (exécution compilée possible, et plantage en runtime).
    Question :
    La fonction HttpSendRequest est-elle appellée toujours par la fonction
    (recuperé avec le lien que tu as proposé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function UrlPost
    '………….
    ' Lancement de l'URL (avec les paramètres le cas échéant)
        lgRep = HttpSendRequest(hRequest, stLoad, Len(stLoad), stPost, Len(stPost))
    '………….
    End Fuction
    Je veux dire par la, est ce un copier collé 100% identique dans les différents codes utilisant UrlPost --> HttpSendRequest qui plante identiquement (plantage en runtime) sur le même poste.

    Une autre petite chose, la configuration dans l’IDE VB dans la fenêtre Outils --> Projet1 Propriété du projet --> Compilation --> Optimisations avancées, est-elle identique du poste plantage aux postes ou sa ne plante pas ?
    En Runtime il y a compilation du code, ces paramètres sont, il ne me semble pas me tromper, pris en compte.


    Amicalement .... A+
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  9. #9
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 135
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Le problème étend peu commun, je ne propose pas une réponse ( cela aurait été trop beau ), mais encor une question suplémentaire.



    Question :
    La fonction HttpSendRequest est-elle appellée toujours par la fonction
    (recuperé avec le lien que tu as proposé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function UrlPost
    '………….
    ' Lancement de l'URL (avec les paramètres le cas échéant)
        lgRep = HttpSendRequest(hRequest, stLoad, Len(stLoad), stPost, Len(stPost))
    '………….
    End Fuction
    Je veux dire par la, est ce un copier collé 100% identique dans les différents codes utilisant UrlPost --> HttpSendRequest qui plante identiquement (plantage en runtime) sur le même poste.
    Le plantage se passe toujours de la même manière avec différents codes utilisant cet appel (HttpSendRequestA)
    J'utilise indifféremment le passage de headers dans ou hors de l'appel de la fonction HttpSendRequest
    =>Dans le cas du code provenant de docvb, il est nécessaire de supprimer les Ucase de formatage de l'url si celle-ci contient des majuscules

    Citation Envoyé par ProgElecT Voir le message
    Une autre petite chose, la configuration dans l’IDE VB dans la fenêtre Outils --> Projet1 Propriété du projet --> Compilation --> Optimisations avancées, est-elle identique du poste plantage aux postes ou sa ne plante pas ?
    En Runtime il y a compilation du code, ces paramètres sont, il ne me semble pas me tromper, pris en compte.


    Amicalement .... A+
    Les options de compilations sont les mêmes sur les 2 postes
    Les versions de VB y sont différentes (VB6FR SP6 v:9782 où ça plante, VB6EN 8176 (pas de sp))
    mais je rappelle que le code a fonctionné sans plantage sur ce poste en mode runtime.

  10. #10
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 135
    Par défaut
    Bon, ça s'est calmé sur le sujet lol

    J'ai trouvé un problème similaire après moultes recherches : http://www.tech-archive.net/Archive/.../msg01396.html
    maigre consolation puisqu'il n'y a pas de solution en vue 8(

    Ayant testé un autre code, à défaut d'un crash de VB6 j'obtiens un freeze du form actif
    ce qui confirmerait bien que que la fonction incriminée de wininet ne rende pas la main ... en mode runtime.

Discussions similaires

  1. [AC-2007] Est-il possible de simuler ce que sera l'appli en mode runtime ?
    Par tibofo dans le forum Runtime
    Réponses: 4
    Dernier message: 21/10/2009, 17h16
  2. Ouverture des formulaires en mode Runtime
    Par ade94 dans le forum Runtime
    Réponses: 2
    Dernier message: 08/09/2007, 00h12
  3. [Runtime]problème d'actualisation en mode runtime
    Par kariiim dans le forum Runtime
    Réponses: 7
    Dernier message: 16/04/2007, 19h12
  4. Problème avec "Date()" en mode runtime
    Par bwalbourg dans le forum Runtime
    Réponses: 1
    Dernier message: 25/01/2006, 11h51
  5. PLantage inexpliqué ...
    Par Clad3 dans le forum C++
    Réponses: 4
    Dernier message: 29/09/2005, 14h13

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