OVH Cloud OVH Cloud

Application freeze sous Citrix ou TSE

9 réponses
Avatar
PYT
Bonjour,

J'ai pour la première fois sous Citrix ou TSE un phénomène étrange.

Une application se fige en cours de saisie ou après avoir été recouverte
par une autre application.

Le programme est lancé à partir d'une application DOS par un shell.

Spy++ indique lors du "figeage" : WndProc unavailable
La cpu reste à 0.

Le programme est développé en C++Builder 6.0 Professionnel avec tous les
patchs et utilise la base Pervasive 2000i en client serveur.

Les fenêtres sont modales.

Si vous aviez des pistes, cela fait 2 semaines que nous cherchons sans
succès.

Merci,

Pierre-Yves TAVERNIER

9 réponses

Avatar
Arnaud Debaene
PYT wrote:
Bonjour,

J'ai pour la première fois sous Citrix ou TSE un phénomène étrange.

Une application se fige en cours de saisie ou après avoir été
recouverte par une autre application.

Le programme est lancé à partir d'une application DOS par un shell.

Spy++ indique lors du "figeage" : WndProc unavailable
La cpu reste à 0.



Quelqu'un a peut être fait un SetWindowLong dans ton dos. Essaies d'utiliser
Detours (sur http://research.microsoft.com/sn/detours/) pour hooker cette
API et voir si tu peux en tirer quelque chose.

Arnaud
MVP - VC
Avatar
PYT
Arnaud Debaene wrote:

Quelqu'un a peut être fait un SetWindowLong dans ton dos. Essaies d'utiliser
Detours (sur http://research.microsoft.com/sn/detours/) pour hooker cette
API et voir si tu peux en tirer quelque chose.

Arnaud
MVP - VC




Merci Arnaud, je vais l'essayé.

PYT
Avatar
dark poulpo
> > Quelqu'un a peut être fait un SetWindowLong dans ton dos. Essaies


d'utiliser
comment peut ton faire ce genre de chose surt citrix? je croyais que citrix
fesait le role dune simple console passive (et que les applis se trouvaient
que sur le serveur)
Avatar
Arnaud Debaene
dark poulpo wrote:
Quelqu'un a peut être fait un SetWindowLong dans ton dos. Essaies




d'utiliser
comment peut ton faire ce genre de chose surt citrix? je croyais que
citrix fesait le role dune simple console passive (et que les applis
se trouvaient que sur le serveur)



Quelqu'un l'a fait sur le serveur, c'est tout...


Arnaud
Avatar
PYT
Arnaud Debaene wrote:
dark poulpo wrote:

Quelqu'un a peut être fait un SetWindowLong dans ton dos. Essaies





d'utiliser
comment peut ton faire ce genre de chose surt citrix? je croyais que
citrix fesait le role dune simple console passive (et que les applis
se trouvaient que sur le serveur)




Quelqu'un l'a fait sur le serveur, c'est tout...


Arnaud




Après de multiple essais, nous avons enfin reproduit le phénomène sur un
pc hors citrix. Apparement, le manque de mémoire ou une forte charge CPU
accélère la survenance du problème.

Nous n'avons pas eu l'occasion de mettre en oeuvre detours mais cela ne
va pas tarder.

PYT
Avatar
PYT
Arnaud Debaene wrote:
dark poulpo wrote:

Quelqu'un a peut être fait un SetWindowLong dans ton dos. Essaies





d'utiliser
comment peut ton faire ce genre de chose surt citrix? je croyais que
citrix fesait le role dune simple console passive (et que les applis
se trouvaient que sur le serveur)




Quelqu'un l'a fait sur le serveur, c'est tout...


Arnaud




J'oubliais de dire que ce problème est survenu subitement : sur nos log
en même temps que l'installation d'une nouvelle version d'antivirus mais
cela semble fortuit.

PYT
Avatar
Arnaud Debaene
Arnaud Debaene wrote:
PYT wrote:
Bonjour,

J'ai pour la première fois sous Citrix ou TSE un phénomène étrange.

Une application se fige en cours de saisie ou après avoir été
recouverte par une autre application.

Le programme est lancé à partir d'une application DOS par un shell.

Spy++ indique lors du "figeage" : WndProc unavailable
La cpu reste à 0.



Quelqu'un a peut être fait un SetWindowLong dans ton dos. Essaies
d'utiliser Detours (sur http://research.microsoft.com/sn/detours/)
pour hooker cette API et voir si tu peux en tirer quelque chose.



Je n'avais pas fait attention qu'il n'est pas forcément nécessaire de sortir
l'artillerie lourde de Detours : Spy++ suffit pour avoir l'adresse de la
WndProc d'une fenêtre : ca peut déjà ête une première approche pour voir si
la valeur change. Quand elle change, vérifier avec un debugger dans quel
module (DLL) tombe l'adresse de la nouvelle valeur de WndProc. C'est
probablement ce module le coupable.

Notes qu'il est aussi possible que ce soit simplement du jardinage mémoire
(un pointeur sauvage qui pointe n'importe où) qui écrase la WndProc de ta
fenêtre.

Arnaud
Avatar
PYT
Arnaud Debaene wrote:
Arnaud Debaene wrote:

PYT wrote:

Bonjour,

J'ai pour la première fois sous Citrix ou TSE un phénomène étrange.

Une application se fige en cours de saisie ou après avoir été
recouverte par une autre application.

Le programme est lancé à partir d'une application DOS par un shell.

Spy++ indique lors du "figeage" : WndProc unavailable
La cpu reste à 0.



Quelqu'un a peut être fait un SetWindowLong dans ton dos. Essaies
d'utiliser Detours (sur http://research.microsoft.com/sn/detours/)
pour hooker cette API et voir si tu peux en tirer quelque chose.




Je n'avais pas fait attention qu'il n'est pas forcément nécessaire de sortir
l'artillerie lourde de Detours : Spy++ suffit pour avoir l'adresse de la
WndProc d'une fenêtre : ca peut déjà ête une première approche pour voir si
la valeur change. Quand elle change, vérifier avec un debugger dans quel
module (DLL) tombe l'adresse de la nouvelle valeur de WndProc. C'est
probablement ce module le coupable.

Notes qu'il est aussi possible que ce soit simplement du jardinage mémoire
(un pointeur sauvage qui pointe n'importe où) qui écrase la WndProc de ta
fenêtre.

Arnaud




Efectivement , je vais aussi regardder cette piste.

Merci.

PYT
Avatar
PYT
J'ai commencé à regarder la piste Detours mais cela ralenti trés
fortement l'aplication. Je dois regarder pour optimiser la trace des API.

Aujourd'hui (suite à de nombreux essais), nous avons désactivé les
ToolTip. Miracle l'application n'a pas figé de l'après midi en test.

Nous allons donc la mettre en Production cette nuit.

Que pensez-vous de ce résultat ? Hasard ? Les tooltip peuvent -elles
planter une applis ?

merci pour vos remarques.

PYT