Ajouter le Forum à vos Favoris
- - - -
Vous êtes ici : Forum Pen Of Chaos > Divers > Informatique - Jeux Vidéos > Section OS - Software > Mystères et DLLs [programmation et développement]
Sujet : 

Dernier Message - Message le plus récent
Ajouter aux favoris - Envoyer ce Sujet par E-Mail - Imprimer ce Sujet
Nyxl

Basement Cat



-= Chaos Lieutenant =-
Inscription le 25-03-02
Messages : 2821



Homme  Age : 47 ans
Lieu de résidence : Brüsel Caput Mundi

Pourquoi vous regardez ca ?
   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 :D !

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é."

      Retour en haut de la page IP Cachée  
Le bibliothecaire

Agent 00K



-= Chaos Elite Troops =-
Inscription le 24-05-02
Messages : 1283



Homme  Age : 47 ans
Lieu de résidence :

Pourquoi vous regardez ca ?
Membre Chaos Elite Troops   Réponse au Sujet 'Mystères et DLLs [programmation et développement]' a été posté le : 17/10/02 17:02
Hum, est ce que la DLL est compilée en mode debug ou en mode Release? Parce que le mode Debug peut faire planter certains appels. En fait la compression aurait enlevé les options de Debug. Enfin c'est juste une idée comme ça.





--------------------
The subject of wizards and sex is a complicated one, but as has already been indicated it does, in essence, boil down to this: when it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like.
-- (Terry Pratchett, Sourcery)


      Retour en haut de la page IP Cachée  
Nyxl

Basement Cat



-= Chaos Lieutenant =-
Inscription le 25-03-02
Messages : 2821



Homme  Age : 47 ans
Lieu de résidence : Brüsel Caput Mundi

Pourquoi vous regardez ca ?
   Réponse au Sujet 'Mystères et DLLs [programmation et développement]' a été posté le : 18/10/02 10:59
Yop...

On a testé en enlevant toute option de déboguage. Ca crashe quand même :(. Mais après compactage, on gagne encore 50 % de performances (taille mémoire essentiellement) B)... C'est déjà un plus, mais on ne sait toujours pas :r ce qui se passe là derrière...

Bien à toi...


--------------------

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é."

      Retour en haut de la page IP Cachée  
Duncan_07

Chaos Genitor



-= Chaos Genitor =-
Inscription le 27-07-01
Messages : 776



Homme  Age : 49 ans
Lieu de résidence :

Pourquoi vous regardez ca ?
   Réponse au Sujet 'Mystères et DLLs [programmation et développement]' a été posté le : 18/10/02 13:36
J'ai eu un probleme similaire avec une apli que j'ai faite en C sous zindob.
Le prog demarait tres bien en mode debug, mais plantait en mode release.
Enf fait j'utilisais un pointeur au-quelle j'avais oublié d'allouer la memoire...
Essai de voir de ce coté la, parcque on ne sais jamais.


--------------------
- J'aurais du ecouter ma mere quand j'etais petit
- Ha ? elle te disait quoi ?
- Je sais pas, j'écoutais pas..


      Retour en haut de la page IP Cachée  
Nyxl

Basement Cat



-= Chaos Lieutenant =-
Inscription le 25-03-02
Messages : 2821



Homme  Age : 47 ans
Lieu de résidence : Brüsel Caput Mundi

Pourquoi vous regardez ca ?
   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é."

      Retour en haut de la page IP Cachée  
Grouïn des Tétynes

3leEt Fr3eW4rEh4cKeR



-= Chaos Legions =-
Inscription le 07-04-02
Messages : 1940



Inconnu  Age : 97 ans
Lieu de résidence : Tétinou City

Pourquoi vous regardez ca ?
   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 !

:div1


--------------------
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)


      Retour en haut de la page IP Cachée  
Nyxl

Basement Cat



-= Chaos Lieutenant =-
Inscription le 25-03-02
Messages : 2821



Homme  Age : 47 ans
Lieu de résidence : Brüsel Caput Mundi

Pourquoi vous regardez ca ?
   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 !

:div1


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é."

      Retour en haut de la page IP Cachée  
grinch

Ca germe?



-= Chaos Servants =-
Inscription le 19-10-02
Messages : 3



Inconnu  Age : ???
Lieu de résidence :

Pourquoi vous regardez ca ?
   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.



      Retour en haut de la page IP Cachée  
scoubidou944

Satan l'habite



-= Chaos Servants =-
Inscription le 23-11-02
Messages : 69



Homme  Age : 48 ans
Lieu de résidence : Marne La Vallée

Pourquoi vous regardez ca ?
   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



      Retour en haut de la page IP Cachée  
Ajouter aux favoris - Envoyer ce Sujet par E-Mail - Imprimer ce Sujet
Dernier Message - Message le plus récent
Pages: [ 1 ]

Open Bulletin Board 1.X.X © 2002 Prolix Media Group. Tous droits réservés.
Version française, modules et design par Greggus - enhancement par Frater