Windev : Resolution de l'erreur PURE VIRTUAL FONCTION CALL sur INTEL HT (HyperThreading) et XP pro
2 réponses
frederic
Pour remercier la communauté Windev qui m'a bien aidée par les threads
de ce forum, voici la résolution d'un bug qui m'a fait perdre beaucoup
de temps.
Mon projet, qui comporte plusieurs threads, plusieurs sockets et
plusieurs timersys, fonctionnait parfaitement sur le PC de
développement équippé d'un AMD,
mais pas en prod sur un PC doté d'un Intel HT.
L'erreur PURE VIRTUAL FONCTION CALL se produit de façon aléatoire sur
pentium doté de cette technologie.
Cette erreur peut se produire dans d'autres circonstances, sur AMD
notemment, mais il s'agit alors d'erreur de programmation.
Il est possible de vérifier si la cause de ce bug est bien l'HT en
exécutant son appli et en choisissant un seul CPU dans le menu
contextuel "Définir l'affinité..." du gestionnaire de tâches de
windows; dans ce cas l'erreur ne doit plus se manifester.
Pour corriger de façon persistante,utilisez la fonction
"SetProcessAffinityMask" de l'api windows (NT et sup uniquement- pas
Win9X), et en choisissant le processeur auquel sera affécté le
processus (l'application) via le paramètre d'appel.
Les valeurs permises dans le cas d'un seul CPU HT sont 1 et 2.
Exemple de code d'initialisation de projet pour Windev 8:
hInstance est un entier
RetourFonction est un entier
hInstance=API("KERNEL32","GetCurrentProcess")
dwProcessAffinityMask est un entier=1 // ICI: choix du CPU
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Romain PETIT
Fr?d?ric Bourgu?re avait écrit le 08/12/2004 :
L'erreur PURE VIRTUAL FONCTION CALL se produit de façon aléatoire sur pentium doté de cette technologie. Voilà! J'espère que ça aidera!
Bonjour,
pour ma part, je connaissais le problème de l'HyperThreading depuis mars 2004 : http://groups.google.com/groups?selm=mesnews.65057d43.b2f7b47c.644.2191%40Signature.fin&output=gplain
Il avait été résolu soit en désactivant l'HT dans le BIOS (pas terrible), soit en réécrivant mon appli sans utiliser d'autre thread que le principal...
Merci donc pour ta solution bien plus satisfaisante. (bien qu'elle ne le soit pas totalement étant donné qu'on arrive à faire tourner des applis non WD multi-threads...) Je teste dans ça dès que j'ai un moment.
A+
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Fr?d?ric Bourgu?re avait écrit le 08/12/2004 :
L'erreur PURE VIRTUAL FONCTION CALL se produit de façon aléatoire sur
pentium doté de cette technologie.
Voilà! J'espère que ça aidera!
Bonjour,
pour ma part, je connaissais le problème de l'HyperThreading depuis
mars 2004 :
http://groups.google.com/groups?selm=mesnews.65057d43.b2f7b47c.644.2191%40Signature.fin&output=gplain
Il avait été résolu soit en désactivant l'HT dans le BIOS (pas
terrible), soit en réécrivant mon appli sans utiliser d'autre thread
que le principal...
Merci donc pour ta solution bien plus satisfaisante.
(bien qu'elle ne le soit pas totalement étant donné qu'on arrive à
faire tourner des applis non WD multi-threads...)
Je teste dans ça dès que j'ai un moment.
A+
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
L'erreur PURE VIRTUAL FONCTION CALL se produit de façon aléatoire sur pentium doté de cette technologie. Voilà! J'espère que ça aidera!
Bonjour,
pour ma part, je connaissais le problème de l'HyperThreading depuis mars 2004 : http://groups.google.com/groups?selm=mesnews.65057d43.b2f7b47c.644.2191%40Signature.fin&output=gplain
Il avait été résolu soit en désactivant l'HT dans le BIOS (pas terrible), soit en réécrivant mon appli sans utiliser d'autre thread que le principal...
Merci donc pour ta solution bien plus satisfaisante. (bien qu'elle ne le soit pas totalement étant donné qu'on arrive à faire tourner des applis non WD multi-threads...) Je teste dans ça dès que j'ai un moment.
A+
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
titou44
Il se trouve que Romain PETIT a formulé :
Fr?d?ric Bourgu?re avait écrit le 08/12/2004 :
L'erreur PURE VIRTUAL FONCTION CALL se produit de façon aléatoire sur pentium doté de cette technologie. Voilà! J'espère que ça aidera!
Bonjour,
pour ma part, je connaissais le problème de l'HyperThreading depuis mars 2004 : http://groups.google.com/groups?selm=mesnews.65057d43.b2f7b47c.644.2191%40Signature.fin&output=gplain
Il avait été résolu soit en désactivant l'HT dans le BIOS (pas terrible), soit en réécrivant mon appli sans utiliser d'autre thread que le principal...
Merci donc pour ta solution bien plus satisfaisante. (bien qu'elle ne le soit pas totalement étant donné qu'on arrive à faire tourner des applis non WD multi-threads...) Je teste dans ça dès que j'ai un moment.
A+
bonsoir
comme j'étais à l'origine de la question citée, je suis toujours à l'affut des infos sur ce problème. en effet, j'ai des clients qui achètent des P4 HT. et badaboum !!
questions à Frédéric :
le code fourni peut-il être utilisé avec toutes les versions de windows ? si oui, il est utilisable dans l'initialisation de tous les projets ? est-il modifiable en "si détection du HT, message d'erreur" ?
merci. cordialement.
titou44 (marre du spam) @freesurf.fr
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Il se trouve que Romain PETIT a formulé :
Fr?d?ric Bourgu?re avait écrit le 08/12/2004 :
L'erreur PURE VIRTUAL FONCTION CALL se produit de façon aléatoire sur
pentium doté de cette technologie.
Voilà! J'espère que ça aidera!
Bonjour,
pour ma part, je connaissais le problème de l'HyperThreading depuis mars 2004
:
http://groups.google.com/groups?selm=mesnews.65057d43.b2f7b47c.644.2191%40Signature.fin&output=gplain
Il avait été résolu soit en désactivant l'HT dans le BIOS (pas terrible),
soit en réécrivant mon appli sans utiliser d'autre thread que le principal...
Merci donc pour ta solution bien plus satisfaisante.
(bien qu'elle ne le soit pas totalement étant donné qu'on arrive à faire
tourner des applis non WD multi-threads...)
Je teste dans ça dès que j'ai un moment.
A+
bonsoir
comme j'étais à l'origine de la question citée, je suis toujours à
l'affut des infos sur ce problème.
en effet, j'ai des clients qui achètent des P4 HT. et badaboum !!
questions à Frédéric :
le code fourni peut-il être utilisé avec toutes les versions de windows
?
si oui, il est utilisable dans l'initialisation de tous les projets ?
est-il modifiable en "si détection du HT, message d'erreur" ?
merci.
cordialement.
titou44 (marre du spam) @freesurf.fr
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
L'erreur PURE VIRTUAL FONCTION CALL se produit de façon aléatoire sur pentium doté de cette technologie. Voilà! J'espère que ça aidera!
Bonjour,
pour ma part, je connaissais le problème de l'HyperThreading depuis mars 2004 : http://groups.google.com/groups?selm=mesnews.65057d43.b2f7b47c.644.2191%40Signature.fin&output=gplain
Il avait été résolu soit en désactivant l'HT dans le BIOS (pas terrible), soit en réécrivant mon appli sans utiliser d'autre thread que le principal...
Merci donc pour ta solution bien plus satisfaisante. (bien qu'elle ne le soit pas totalement étant donné qu'on arrive à faire tourner des applis non WD multi-threads...) Je teste dans ça dès que j'ai un moment.
A+
bonsoir
comme j'étais à l'origine de la question citée, je suis toujours à l'affut des infos sur ce problème. en effet, j'ai des clients qui achètent des P4 HT. et badaboum !!
questions à Frédéric :
le code fourni peut-il être utilisé avec toutes les versions de windows ? si oui, il est utilisable dans l'initialisation de tous les projets ? est-il modifiable en "si détection du HT, message d'erreur" ?
merci. cordialement.
titou44 (marre du spam) @freesurf.fr
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com