Basement Cat

-= Chaos Lieutenant =-
Inscription le 25-03-02
Messages : 2821
Age : 47 ans
Lieu de résidence : Brüsel Caput Mundi
|
|
|
|
|
Mystères et DLLs [programmation et développement] a été posté le : 17/10/02 16:58
|
Alors, aujourd'hui, j'ai ramené du travail à la maison !
Hum, broum...
En fait, au boulot, on a constaté un phénomène curieux. L'un des développeurs a écrit une bibliothèque (dll) en C (compilateur Borland C 4.5), utilisant des appels 32 bits.
Le problème survient quand on use de la dll telle quelle, en lançant plusieurs programmes y faisant appel : les applications surnuméraires (c'est-à-dire en plus de la première) crashent ("xxx.exe could not initialize", ou un message dans ce goût-là).
Le phénomène curieux vient après. Un autre de mes collègues utilise un petit logiciel de compression d'exécutables et de dll's, nommé "PECompact", créé par un programmeur en pur assembleur -> http://www.collakesoftware.com ...
La dll est donc compactée, optimisée, et tout et tout. On refait le même test : plusieurs applications utilisant cette dll. Plus un pet ! Ca tourne admirablement...
Bon, globalement, les choses sont positives, mais au boulot, on aimerait bien comprendre ce qui se passe. Pourquoi la dll compressée serait utilisable par +sieurs programmes en même temps alors qu'en temps normal, ça crasherait ? Et je précise que le code de la dll n'a pas été modifié avant compression ! On a refait des essais plusieurs fois...
S'il y a des experts en ce genre de matières, qu'ils me fassent signe, ça serait sympa...
Bien à vous !
-------------------- Considérez-moi comme un rejeton du chat de Schrödinger. Ou alors un lointain cousin du démon de Maxwell...
---
"Coupez Bruxelles dans le sens nord-sud, donnez la partie ouest au Royaume-Uni et la partie est aux Allemands. Ainsi, vous mettrez tout le monde sur un pied d'égalité, car toutes les parties râlerons avec la même intensité."
|
|
|
|
Cachée
|
|
|
|
|
Basement Cat

-= Chaos Lieutenant =-
Inscription le 25-03-02
Messages : 2821
Age : 47 ans
Lieu de résidence : Brüsel Caput Mundi
|
|
|
|
|
Réponse au Sujet 'Mystères et DLLs [programmation et développement]' a été posté le : 18/10/02 15:43
|
Improbable, la personne s'occupant de la DLL étant un as des pointeurs (si si, je vous assure)... Et puis, un programme qui crashe à cause d'un "malloc" crashera dans tous les cas. Bien que, en C...
C'est tout de même curieux, le compacteur doit certainement altérer quelque chose dans le module, qui fait que celui-ci "devient" appelable par plusieurs applications simultanées...
Je vais essayer de trouver le modus operandi du compacteur en question, de mon côté...
Encore merci de vos suggestions, tout peut être profitable...
Bien à vous !
-------------------- Considérez-moi comme un rejeton du chat de Schrödinger. Ou alors un lointain cousin du démon de Maxwell...
---
"Coupez Bruxelles dans le sens nord-sud, donnez la partie ouest au Royaume-Uni et la partie est aux Allemands. Ainsi, vous mettrez tout le monde sur un pied d'égalité, car toutes les parties râlerons avec la même intensité."
|
|
|
|
Cachée
|
|
3leEt Fr3eW4rEh4cKeR

-= Chaos Legions =-
Inscription le 07-04-02
Messages : 1940
Age : 97 ans
Lieu de résidence : Tétinou City
|
|
|
|
|
Réponse au Sujet 'Mystères et DLLs [programmation et développement]' a été posté le : 18/10/02 20:11
|
Nyxl, je vois à ton attitude puérile que tu n'y entends rien à l'informatique.
Pour ta gouverne, si ça ne marche pas, et puis que brusquement ça remarche, l'attituder constructive et professionnelle ne consiste pas à essayer de comprendre pourquoi, petit homme, c'est au contraire une offense et un péché d'orgueuil ! L'attitude qu'il convient d'adopter est une attitude pleine d'humilité face aux merveilles de la création, une attitude empreinte de gratitude et de dévotion envers Shub-404 et Saint Taxerror, auquel tu iras dès demain (samedi, le jour béni où on va en pèlerinage chez les chinois) sacrifier un CDRW sur l'autel de Bill Gates, ou poster un ex-goto sur internet, au choix.
4ll3luya et 01101000101110101011 à vous tous !
-------------------- c|o c|o (°°) c|o c|o
Je tendrement dans le huître, avec deux en
plus, et dedans je le. Ordure et mou, l'chaussette
vermine jaune petit sachet de arbre.
(Excusez-moi, je suis dyssyntaxique)
|
|
|
|
Cachée
|
|
Basement Cat

-= Chaos Lieutenant =-
Inscription le 25-03-02
Messages : 2821
Age : 47 ans
Lieu de résidence : Brüsel Caput Mundi
|
|
|
|
|
Réponse au Sujet 'Mystères et DLLs [programmation et développement]' a été posté le : 18/10/02 22:30
|
Citation :Message de Grouïn le orc
Nyxl, je vois à ton attitude puérile que tu n'y entends rien à l'informatique.
Pour ta gouverne, si ça ne marche pas, et puis que brusquement ça remarche, l'attituder constructive et professionnelle ne consiste pas à essayer de comprendre pourquoi, petit homme, c'est au contraire une offense et un péché d'orgueuil ! L'attitude qu'il convient d'adopter est une attitude pleine d'humilité face aux merveilles de la création, une attitude empreinte de gratitude et de dévotion envers Shub-404 et Saint Taxerror, auquel tu iras dès demain (samedi, le jour béni où on va en pèlerinage chez les chinois) sacrifier un CDRW sur l'autel de Bill Gates, ou poster un ex-goto sur internet, au choix.
4ll3luya et 01101000101110101011 à vous tous !
|
|
|
C'était une réponse à ma question ? Non ?
Ben, je préfère encore rester puéril et en apprendre davantage chaque jour...
Bien à vous !
PS. Je suis analyste-programmeur, Camarade. L'attitude qui consiste à se contenter de dire "ça marche !" et puis "tant mieux !" est anti-professionnelle, et me vaudrait pas mal d'ennuis si je la pratiquais. Puer fuis non sum.
PPS. Oh, le beau 1er degré !
|
|
Dernière mise à jour par : nyxl le 18/10/02 22:42
|
-------------------- Considérez-moi comme un rejeton du chat de Schrödinger. Ou alors un lointain cousin du démon de Maxwell...
---
"Coupez Bruxelles dans le sens nord-sud, donnez la partie ouest au Royaume-Uni et la partie est aux Allemands. Ainsi, vous mettrez tout le monde sur un pied d'égalité, car toutes les parties râlerons avec la même intensité."
|
|
|
|
Cachée
|
|
Ca germe?
-= Chaos Servants =-
Inscription le 19-10-02
Messages : 3
Age : ???
Lieu de résidence :
|
|
|
|
|
Réponse au Sujet 'Mystères et DLLs [programmation et développement]' a été posté le : 19/10/02 17:07
|
Chose important a connaitre sur les dlls
Une dlls a une section d'initialisation qui est, comme tu pourrais le deviner, lancée au démarrage de la dll. Chose importante a savoir: tous les programmes utilisant la dll la partageront dans un même espace mémoire, ca signifie que la section d'initialisation ne sera plus appelée par la suite. C'est peut être un endroit pour chercher une fuite de mémoire ou un handle pas ou mal initialisé.
Ca concorderait avec le fait que le logiciel de compactage semble résoudre le problème. Les instanciations suivantes de la dll utiliseraient des zones devenues inutilisées du décompacteur et éviterait ainsi de justesse le crash. Quand a la réflexion si ca marche la première fois, ca peut pas être un pointeur tu a tout faux. Vu que la dll est partagée, les conditions dans lesquelles se trouvent les données dans la dll ne sont pas similaires entre la première et la 2ème exécution.
|
|
|
|
Cachée
|
|
Satan l'habite
-= Chaos Servants =-
Inscription le 23-11-02
Messages : 69
Age : 48 ans
Lieu de résidence : Marne La Vallée
|
|
|
|
|
Réponse au Sujet 'Mystères et DLLs [programmation et développement]' a été posté le : 24/12/02 07:21
|
bon je vais mettre mon grain de sel histore de...
En vrac et dans le désordre (je C, C la meme chose).
L'Id du mode DEBUG & RELEASE est un premier test.
Ensuite, le multithread... ca donne des bugs sympa surtout si on parle de plusieurs appli qu accèdent à une meme DLL, est ce que toutes les variables importantes sont en section critique ?
Ensuite, selon le modèle mémoire utilisée, le padding ne sera pas le meme surtout pour les globales. Un bug inexistant peut apparaitre du jour au lendemain à cause d'un alignement mémoire différent. Car en gros, si on tape sur la variable d'a coté qui est utilisée comme padding (cad juste pour aligner les objets suivant sur une adresse mémoire précise) on peut rapidement taper sur une variable importante dans le cas suivant.
Il existe des logiciels qui permettent de traquer les erreurs d'init, d'overflow & Co.
Numega Bounds Checker, disponible sur Kazaa par exemple mais j'ai rien dit ;p
|
|
|
|
Cachée
|
|