OVH Cloud OVH Cloud

FreeLibrary qui ne rend pas la main :-(

28 réponses
Avatar
Aurélien REGAT-BARREL
Hello,
J'ai posté récemment une question afin d'arriver à protéger mon code d'une
bibliothèque capricieuse qui a tendance à ne pas rendre la main sur
certaines de ses fonctions (donc mon appli appelante freeze). Je la charge
avec LoadLibrary, bétonne mes appels et m'en débarasse avec FreeLibrary. Je
croyais être à l'abris jusqu'à ce que mon code plante malgré tout (freeze).
J'ai passé l'après midi à trouver le coupable : FreeLibrary qui elle aussi
freeze...

Là je m'avour vaincu : comment forcer Windows à décharger ce fouttu module ?
Je pense que c'est le DllMain -> DLL_PROCESS_DETACH buggé qui empêche de
décharger le module. Que faire dans un tel cas ?
Merci.

--
Aurélien REGAT-BARREL

10 réponses

1 2 3
Avatar
AMcD®
Vincent Burel wrote:

ha ! ;-) L'informatique à son Cabrel ! C'était mieux avant ! :-)



Arf, moi, c'est plutôt Slayer, Sepultura, Cannibal Corpse ou Dimmu Borgir
quand même hein...

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
Vincent Burel
"AMcD®" wrote in message
news:416bc7e2$0$9047$
Vincent Burel wrote:

> ha ! ;-) L'informatique à son Cabrel ! C'était mieux avant ! :-)

Arf, moi, c'est plutôt Slayer, Sepultura, Cannibal Corpse ou Dimmu Borgir
quand même hein...



ha ouai, que des trucs mièvres et lancinants :-)
Avatar
Aurélien REGAT-BARREL
> Ou disparaît peu à peu pour les derniers... Personellement, ça fait un


bail
que j'ai pas mis un pied dans une fac, un IUT, etc., mais tout de même, je
me demande bien ce qu'on y apprend aujourd'hui !



Ben je vais te dire, je viens de finir mes études et j'ai fait les 2. Ben
c'est simple : je n'ai jamais eu un seul cours sur l'archi de Windows
(d'ailleurs sur Windows tout court). J'ai (avais) des potes bac + 5 qui
n'avaient jamais entendu parler de Visual Studio, un prof d'IHM qui
confondait MFC et Win32, et d'une manière générale Microsoft c'est le grand
Satan, Windows c'est tabou, ou plutot censure.
Mais, AMA, il ne faut pas jeter la pierre (que) sur les profs. Les élèves
ont une bonne part de responsabilité. Que veux-tu, pas mal ont fait des
études d'info par hasard presque, parce que les maths c'était trop dur, pour
ne pas rester chez soi avec papa & maman, parce qu'ils aiment bien les jeux
videos, etc...
Des codeurs y'en a pas des masses, déjà. Difficile d'estimer, mais selon moi
si 1/4 des élèves lance de temps en temps un compilo chez lui c'est
franchement pas mal. Des mecs qui le lance régulièrement en dehors des
travaux scolaires (des curieux quoi), 10% au plus. Sur ces 10%, moi, en 5
ans, j'en ai rencontré aucun qui se soit plongé dans Win32. Quelques uns ont
touché à DirectX, .Net, ou VB et voilà. Alors quand tu sais coder une dll,
autant dire que t'es un as. La majorité ne conçoit pas que tu saches quelque
chose si un prof ne te l'a pas appris. C'est ce que je trouve regrettable.
On n'est franchement pas encouragé à creuser. Tout ce qui compte c'est la
note, et le classement, ce fouttu classement.
En fait la programmation est plus ou moins mal vue j'ai l'impression, c'est
un peu un sous boulot, c'est presque méprisable. Les cours de prog
s'arrêtent d'ailleurs aux bases de la programmation. On pourrait troller en
disant que y'a pas beaucoup de profs qui puissent enseigner plus...
Dans le monde universitaire MS est clairement boycotté, banni, etc... Je me
suis pointé un jour avec mon abonnement MSDNAA, ah ah j'ai été joliement
remercié. Mais là encore si j'avais pas mal de potes pour me dire "ouai ça
serait super cool d'avoir ça" puis plus personne pour aller au charbon et
convaincre les profs.
J'ai eu ma soutenance de stage y'a pas longtemps, et j'ai assité à celles
des autres. Parmi elles, un mec qui explique qu'il a mis un mois à découvrir
que les RPC Sun et les RPC Windows c'était pas compatible. Ô rage! Ô
désespoir! C'est pas de bol. Ouai, ou pitêtre que si on avait survolé une
approche furtive de l'IPC sous Windows ce genre de choses ne se produirait
pas. Et certains des ces élèves deviendront profs, et la boucle est bouclée.

Moi qui ait l'habitude d'ouvrir mon museau, je le clame haut et fort, la
nouvelle génération de codeurs là, celle qui a 10 ans de moins que nous,
elle vaut pas un rond pour la grande majorité. Élevée au C++, aux grandes
théories, au GNU et cie, mais sur des bases foireuses. Jamais vu autant de
bugs depuis 2 ans environ, et dès qu'un driver foire t'es mort ! C'est
devenu n'importe quoi.



C++, hum, ça reste à voir. J'aimerais bien dire que je me tâte en C++,
mais... Et pourtant presque tout ce que je sais c'est comme pour Win32,
c'est bibine et pas la fac. Nan, les étudiant ils font du Scheme, du CAML,
du LISP et un peu de Java. Un peu de C aussi, histoire que tu puisses avoir
des null pointer exception dans ton code, et voilà.
C'est triste à dire, mais moi j'ai fait 5 ans d'études pour ne pas me
retrouver sous la direction d'un trou du c** qui pige rien à rien mais comme
il a 1 ou 2 ans d'études de + que moi, ben il a forcément raison. C'est ma
hantise.
Mais bon faut relativiser, y'a pas mal de jeunes diplômés qui moyennant un
encadrement minimum peuvent faire du bon travail. Ils ne sauront
certainement jamais ce qu'est un descripteur de segment comme tu dis, mais
ils sont pas mauvais _dans leur domaine_ pour autant.
Personnelement je pense qu'on transforme pas un bouricot en cheval de course
quelque soit le maître ou l'école. A l'inverse un mec qui n'a pas fait
d'études ça l'empêchera pas d'être une bête. C'est juste que sans diplôme,
il sera pas "labellisé", et il va plus en chier pour être reconnu.

--
Aurélien REGAT-BARREL
Avatar
Aurélien REGAT-BARREL
> >> http://www.winguides.com/registry/display.php?idf7 ?
> Ca concerne que Explorer il me semble, et je me méfie de ce genre de
> softs qui soit disant optimizent.

C'est pas un soft, c'est une clé dans la base de registres.



Je visais le plugin Tweak Manager en particulier, et les softs qui modifient
ce genre de clés en général.

> http://support.microsoft.com/?id6480

Ton lien ne marche pas, mais bon, pourquoi veux-tu que ça plante ? Chaque
appel de DLL voit incrémenter un compteur d'utilisation de celle-ci. Elle
n'est réellement déchargée de la mémoire que si le compteur passe à zéro.
Quand à ralentir la création d'un process, j'en doute, quand même. Tu


sais,
importer une DLL c'est juste la mapper dans l'espace de ton processus et
remplir l'IAT avec les bonnes adresses des fonctions importées. Cela doit


se
compter en micro-secondes...

Si tu peux filer le lien exact, j'aimerai ben le lire.



Ben pour le liens il marche chez moi. Au pire je te colle une partie de la
KB a la fin. (y'en avais un autre mieux que je retrouve pas).
Pour l'histoire des perfs, tu oublies les plus important dans mon cas :
aller chercher la dll sur le disque, la charger, puis idem avec les dll
qu'elle utilise, éventuellement rebaser le tout, etc... Ca se compte en ms
aujourd'hui, mais n'empêche que ces softs censé de faire gagner de la
mémoire "perdue" (comme si Windows était con à ce point) ben ils
ralentissent le (re)chargement des applis qui passe de quasi instantané à
quelques centaines de ms voire quelques secondes. Ouvre une grosse dll avec
plein d'imports avec dependency walker, des fois ça prend plusieurs
secondes. Refait le juste après et hop ça va beaucoup plus vite. Si entre
temps t'as fait tourner un des petits softs "libérateurs de mémoire",
patatra c'est long à nouveau. C'est le même principe avec le loader de
Windows et cette clé.
Tiens, en relisant la KB :
"This registry key is no longer supported in Microsoft Windows 2000 or
later."
Il me semble qu'il y en a une autre, mais je retrouve pas son nom.

SYMPTOMS
While you are running Windows Explorer, a Microsoft Office version 7.0 for
Windows 95 program, or a Microsoft Office 97 program, you may receive the
following error message:
Explorer
This program has performed an illegal operation and will be shut down.
If you then click Details, you may receive the following error message:
Explorer caused an invalid page fault in module <unknown> at:<address>
CAUSE
This problem can occur if all of the following conditions exist: . You
installed Winzip version 6.3 or 7.0 on your Windows 95-based computer.
. You installed Internet Explorer version 4.0 but did not install the
Windows Desktop Update component.

RESOLUTION
Warning If you use Registry Editor incorrectly, you may cause serious
problems that may require you to reinstall your operating system. Microsoft
cannot guarantee that you can solve problems that result from using Registry
Editor incorrectly. Use Registry Editor at your own risk.

To resolve this issue, use Registry Editor to delete the following registry
key:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorer
AlwaysUnloadDLL
Important This registry key is no longer supported in Microsoft Windows
2000 or later.
MORE INFORMATION
The third-party product discussed here is manufactured by a vendor
independent of Microsoft; we make no warranty, implied or otherwise,
regarding this product's performance or reliability.


--
Aurélien REGAT-BARREL
Avatar
Aurélien REGAT-BARREL
Bon, je me vois dans l'obligation d'étudier une autre piste pour pouvoir
utiliser de manière fiable cette dll.
Rapide rappel : j'ai une dll qui de temps à autre freeze sur certaines
fonctions, ainsi que sur le FreeLibrary. Autrement dit, une fois chargée et
plantée, je ne peux m'en débarrasser, ce qui est gênant vu qu'il me faut la
décharger puis la recharger pour pouvoir la "reseter" et à nvx l'utiliser.
Je ne vois pas d'alternative à créer un 2° process que je pilote et que je
tue si jamais ça se passe mal. Comment faire ça le plus simplement ? En
particulier je n'ai jamais utilisé CreateRemoteThread, est-ce qu'elle peut
me simplifier la tâche ?
Sinon au niveau des mécanismes IPC lequel est le plus simple dans mon cas ?
Je pense utiliser un pipe...

--
Aurélien REGAT-BARREL
Avatar
Vincent Burel
"Aurélien REGAT-BARREL" wrote in message
news:416bda5c$0$23253$
> Ou disparaît peu à peu pour les derniers... Personellement, ça fait un
bail
> que j'ai pas mis un pied dans une fac, un IUT, etc., mais tout de même,


je
> me demande bien ce qu'on y apprend aujourd'hui !

Ben je vais te dire, je viens de finir mes études et j'ai fait les 2. Ben
c'est simple : je n'ai jamais eu un seul cours sur l'archi de Windows
(d'ailleurs sur Windows tout court). J'ai (avais) des potes bac + 5 qui
n'avaient jamais entendu parler de Visual Studio, un prof d'IHM qui
confondait MFC et Win32, et d'une manière générale Microsoft c'est le


grand
Satan, Windows c'est tabou, ou plutot censure.



ca a toujours été comme ca en FAC en France... au départ pour une question
de moyen d'ailleurs, après la bonne foi de l'universitaire aidant, c'est
devenu un concept :-)

Des codeurs y'en a pas des masses, déjà. Difficile d'estimer, mais selon


moi
si 1/4 des élèves lance de temps en temps un compilo chez lui c'est
franchement pas mal. Des mecs qui le lance régulièrement en dehors des
travaux scolaires (des curieux quoi), 10% au plus. Sur ces 10%, moi, en 5
ans, j'en ai rencontré aucun qui se soit plongé dans Win32.



ha ! c'est grave ! :-)

En fait la programmation est plus ou moins mal vue j'ai l'impression,


c'est
un peu un sous boulot, c'est presque méprisable.



Exact, "pisse ligne" ils les appellent... en 90 c'était le OO, le merise,
l'analyse. Faire de l'assembleur c'était hasbeen, et programmer c'était
vraiment un boulot d'ouvrier spécialisé... d'ailleurs à l'époque je
connaissais des prof de BTS ou d'école d'ingé qui se fritaient avec les
profs de FAC :-) Les formations scientifiques universitaires en France sont
anti-productives. D'ou le succès des écoles d'ingé et autre fillières.

C'est triste à dire, mais moi j'ai fait 5 ans d'études pour ne pas me
retrouver sous la direction d'un trou du c** qui pige rien à rien mais


comme
il a 1 ou 2 ans d'études de + que moi, ben il a forcément raison. C'est ma
hantise.



oulah ! tu as intérêt à toucher du bois gravement ! :-)

Mais bon faut relativiser, y'a pas mal de jeunes diplômés qui moyennant un
encadrement minimum peuvent faire du bon travail.



Oui ! c'est vrai ! seulement voila...

VB
Avatar
Vincent Burel
tu t'emmerde pour rien, contact la boite qui ta fourni cette DLL , et
demande un correctif, sinon achète une caméra ailleurs et fait leur savoir.
Comprend pas que t'essaye de mettre en place une solution bidon, quand ca
marche pas , il faut le dire, les gens qui ont fait l'erreur se feront une
joie de corriger et de satisfaire le client que tu es ! ... :-)

"Aurélien REGAT-BARREL" wrote in message
news:416bdff6$0$23269$
Bon, je me vois dans l'obligation d'étudier une autre piste pour pouvoir
utiliser de manière fiable cette dll.
Rapide rappel : j'ai une dll qui de temps à autre freeze sur certaines
fonctions, ainsi que sur le FreeLibrary. Autrement dit, une fois chargée


et
plantée, je ne peux m'en débarrasser, ce qui est gênant vu qu'il me faut


la
décharger puis la recharger pour pouvoir la "reseter" et à nvx l'utiliser.
Je ne vois pas d'alternative à créer un 2° process que je pilote et que je
tue si jamais ça se passe mal. Comment faire ça le plus simplement ? En
particulier je n'ai jamais utilisé CreateRemoteThread, est-ce qu'elle peut
me simplifier la tâche ?
Sinon au niveau des mécanismes IPC lequel est le plus simple dans mon cas


?
Je pense utiliser un pipe...

--
Aurélien REGAT-BARREL




Avatar
Thierry
Bonjour,

Aurélien REGAT-BARREL a écrit :

Ou disparaît peu à peu pour les derniers... Personellement, ça fait
un bail que j'ai pas mis un pied dans une fac, un IUT, etc., mais
tout de même, je me demande bien ce qu'on y apprend aujourd'hui !



Ben je vais te dire, je viens de finir mes études et j'ai fait les 2.
Ben c'est simple : je n'ai jamais eu un seul cours sur l'archi de
Windows (d'ailleurs sur Windows tout court).



Ca ne me choque pas. Quel pourcentage fait de la prog Windows Win32 ?
Je dis pas que les cours de systeme d'exploitation ne pourrait pas
s'appuyer sur Windows, pourquoi pas.
Mais concernant la prog, c'est d'abord le(s) language(s) et la
"méthodologie" qui sont importants. Apres t'apprends ton framework tout
seul, avec la doc. Je vois mal un cours expliquant l'integralité des MFC.
Concernant mon experience, il y avait de plus en plus de Windows au fur et
a mesure du cursus (projet de deniere année, entre autres).
Et les autres projets, même si l'environnement etait Unix, c'etait pas
spécifique a Unix (OpenGL par exemple).

Y'a vraiment eu que la prog système spécifique a Unix.
Que ça soit sous Windows ou Unix, peut importe : ça sert finalement a peu
de monde. C'est juste didactique.
Et puis les mutex ou pipe c'est commun a tous les SE. Le principal c'est de
comprendre le fonctionnement.

J'ai (avais) des potes
bac + 5 qui n'avaient jamais entendu parler de Visual Studio,



Visual Studio n'est pas la seule possibilité pour faire du dev sous
Windows.

un prof d'IHM qui confondait MFC et Win32,
et d'une manière générale Microsoft
c'est le grand Satan, Windows c'est tabou, ou plutot censure.
Mais, AMA, il ne faut pas jeter la pierre (que) sur les profs. Les
élèves ont une bonne part de responsabilité. Que veux-tu, pas mal ont
fait des études d'info par hasard presque, parce que les maths c'était
trop dur, pour ne pas rester chez soi avec papa & maman, parce qu'ils
aiment bien les jeux videos, etc...



Tu crois qu'il y aurait suffisement d'informaticiens si seuls les nerds
pouvaient faire des etudes d'infos ???

--
« Always look at the bright side of the life... »
Avatar
AMcD®
Vincent Burel wrote:
tu t'emmerde pour rien, contact la boite qui ta fourni cette DLL , et
demande un correctif, sinon achète une caméra ailleurs et fait leur
savoir. Comprend pas que t'essaye de mettre en place une solution
bidon, quand ca marche pas , il faut le dire, les gens qui ont fait
l'erreur se feront une joie de corriger et de satisfaire le client
que tu es ! ... :-)



J'ai failli me lancer dans une longue explication imbitable sur
CreateRemoteThread(), mais sur ce coup là tu as raison. Le client est roi !
Il y en a marre de payer pour de la daube. S'il faut commencer à corriger
les bugs de DLL de produits qu'on achète, où va-t-on ?!

VB à raison, gueule leur dessus. En plus, je doute que tu sois le seul à
avoir ce problème.

--
AMcD®

http://arnold.mcdonald.free.fr/
Avatar
AMcD®
Thierry wrote:

Tu crois qu'il y aurait suffisement d'informaticiens si seuls les
nerds pouvaient faire des etudes d'infos ???



Je comprends ton point de vue, mais cela se discute. On peut détourner par
"puisqu'il n'y a pas assez de bons (ou de passionnés), prenons n'importe
qui". Au final, c'est le client qui trinque puisque les programmeurs sont
des gens qui font ça par dépit ou presque. Ha mais non, c'est vrai c'est la
faute à Microsoft :-).

--
AMcD®

http://arnold.mcdonald.free.fr/
1 2 3