IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Examen du code de Darwin, gros doute, XNU-517.7.21 / 517.7.7 (10.3.5/10.3.4)
Options
ploute
posté 24 Aug 2004, 20:55
Message #1


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 293
Inscrit : 25 Apr 2003
Membre no 7 294



Bonjour à toutes et à tous. A l'occasion d'un examen des différences de code (merci FileMerge) entre les versions de XNU 517.7.21 et 517.7.7 (respectivement celles de Mac OS X 10.3.5 et 10.3.4), je suis tombé sur un truc qui me semble énorme, et je sollicite votre interprétation :

Dans osfmk/vm/task_working_set.c on trouve le code suivant dans la version 517.7.7 :
CODE

for(page_index = 1; page_index != 0;
 page_index = page_index << 1) {
if (entry->page_cache & page_index) {
 tws_insert(new_tws,
  entry->offset+paddr,
  entry->object,
  entry->page_addr+paddr,
  entry->map);
}
paddr+=PAGE_SIZE;
}


Ce code dans sa version 517.7.21 devient :
CODE

for(page_index = 1; page_index != 0;
 page_index = page_index << 1); {
if (entry->page_cache & page_index) {
 tws_insert(new_tws,
  entry->offset+paddr,
  entry->object,
  entry->page_addr+paddr,
  entry->map);
}
paddr+=PAGE_SIZE;
}


Il n'y a pas de faute de frappe de ma part. La seule différence est l'ajout de ce point-virgule après la fermeture de la parenthèse du "for". Une faute de frappe d'un programmeur ?

Manque de bol, la boucle for est toujours valide, sauf qu'elle ne fait rien, et ce qui est entre accolades du ex-for devien tun bloc de code exécuté une fois pour la valeur page_index=0 (valeur pour laquelle ce bloc ne *devrait pas* être exécuté). Me trompé-je ? Si toi aussi ami codeur tu es choqué, je t'invite à vérifier par toi-même ph34r.gif Si par contre tu pisses de rire en constatant que j'ai rien compris à la musique, ne te gêne pas pour me ridiculiser en répondant à ce post et tou tm'expliquer au passage biggrin.gif

(edit : "bonsoir à toutes et à tous", et pas l'inverse, voyons, la galanterie !)

Ce message a été modifié par ploute - 24 Aug 2004, 20:56.
Go to the top of the page
 
+Quote Post
f_cam
posté 24 Aug 2004, 21:16
Message #2


Moderating Daemon
*****

Groupe : Modérateurs
Messages : 6 345
Inscrit : 22 Feb 2004
Lieu : Yvelines/Cambridge (GB), dans mon pantalon
Membre no 15 207



Effectivement ça m'a l'air assez énorme. Surtout que rien n'a changé au reste du bidule, donc pourquoi ce ; apparaît comme ça, je ne saisis pas bien. J'espère que ce bout de code n'est pas très important parce que là il ne risque pas de s'éxécuter.


--------------------
G5 Bi 2GHz rev A, ATI X800 XT
Alu 17" rev A
MacBook core duo 1.83 GHz
Go to the top of the page
 
+Quote Post
ploute
posté 24 Aug 2004, 21:24
Message #3


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 293
Inscrit : 25 Apr 2003
Membre no 7 294



"Ouf" pour ma santé mentale, mais "ourgl" pour celle de Darwin huh.gif

Ton avis d'expert m'encourage à aller demander sur la mailing-list darwin-kernel.

J'vous tiens au courant
Go to the top of the page
 
+Quote Post
Bac's
posté 24 Aug 2004, 21:52
Message #4


Tendance cubiste
*****

Groupe : Membres
Messages : 1 595
Inscrit : 17 Sep 2003
Lieu : Là où ce qui tombe des arbres à l'automne commence par 'F' et finit par 'n'
Membre no 9 643



Cela sent très fortement le bug (ou le doigt qui a malencontreusement glissé sur le clavier) !

La boucle for est en effet ici un moyen shadok de mettre page_index à 0 tongue.gif !!

Par contre, le bloc qui composait l'ancienne action du for n'est, AMHA, pas exécuté car page_index vaut 0 donc le & bit-à-bit avec entry->page_cache sera faux.


--------------------
G5 1,6GHz 1 270Mo RAM OS/X 10.4.1 + STHome Hyper-Bidouillé

C'est à force de rater que l'on finit par réussir. Devise Shadok.


[Editus moderatus]Plus de bannières merci... [Editus Bacsus]Oui chef, bien chef !
Go to the top of the page
 
+Quote Post
Arty
posté 24 Aug 2004, 22:48
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 599
Inscrit : 20 Sep 2003
Membre no 9 702



Mais pourquoi est-ce que quelqu'un serait allé toucher un code qui n'a pas à être changer!?


--------------------
MacBook Pro 15" Core [email protected]
Mac OS 10.9.3
iPhone 5 - 32 Go Black
Go to the top of the page
 
+Quote Post
ploute
posté 24 Aug 2004, 22:58
Message #6


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 293
Inscrit : 25 Apr 2003
Membre no 7 294



Exact Bac's, le bloc n'est de toute façon pas exécuté après ce test.

Arty, en fait le fichier est modifié à plusieurs autres endroits, et ici ça doit être un genre de faute de frappe, mais le gars en "committant" son fichier, il a pas fait dans le détail, il a pas vérifié modif par modif, il a validé d'un coup tout le fichier. Enfin j'imagine. C'est classique wink.gif

EDIT : au fait j'ai envoyé un message sur la sus-mentionnée mailing-list, et ce qui est marrant c'est que y'a quelques jours un type relatait un souci avec son xserve 6GB et apache qui plantait dans des vm_trucs... serait-ce mon bug ? ph34r.gif rolleyes.gif Sérieux un bug là-dedans, bah c'est très très méchant... j'me demande encore comment j'arrive à booter après cet update wink.gif

Ce message a été modifié par ploute - 24 Aug 2004, 23:06.
Go to the top of the page
 
+Quote Post
maclinuxG4
posté 25 Aug 2004, 18:10
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 3 458
Inscrit : 28 Dec 2001
Lieu : ile de france
Membre no 1 715



RAPPEL REGLE DU C

CODE

for(1; 1;3)
{
 boucle
}


il ne doit pas avoir de ;
sinon il est execute qu'une fois....

wink.gif wink.gif

Ce message a été modifié par maclinuxG4 - 26 Aug 2004, 19:25.


--------------------
hack Z170-UD5 TH + i7 6700k + 16 Go dimm + radeon 580 pulse 8192 mo + SSD 1 T / 2 T + acer XF240H+ macOS Mac OS + Mac OS 10.12.6 /10.14.6 + imprimante HP5520 + (port DP / carte HDMI ) + H75 v2 +r5138
 macpro1,1 Dual core 2,66 GHz, 4 Go FB-dimm+ radeon HD 5770 + ST 500 Go + LCD Samsung 710T + Mac OS 10.6.8 + plantronics DSP 500 + Canon S50 + imprimante HP5520 +  ipad mini
► NO WINDOWS BOOT... Only  linux manjaro
hack AMD 5950 B550-vision D + 32 Go dimm + radeon VII 16 Go+ 2 M2 x 1 xT + SSD 1 T / 2 T + sonnet ether 10G+ acer XF240H+ 10.14.6 + H150 pro + O C 07.1+ boitier 900 v2 Be quiet

--------------------
Go to the top of the page
 
+Quote Post
buserror
posté 25 Aug 2004, 18:45
Message #8


Macbidouilleur d'Or !
*****

Groupe : Banned
Messages : 1 559
Inscrit : 19 May 2002
Lieu : Gone
Membre no 2 507



C'est un bug typique en fait, et probablement que chez apple quelqu'un s'est mis a mettre les warnings du compilo a fond et a les LIRE.

Un compilo comme codewarrior va flagger comme warnings des constructions comme :
CODE

while (blah blah);
for (a;b;c);

mais ne pas raler si c'est fait explicitement comme :
CODE

while (blah blah)
  ;
for (a;b;c)
  ;


Les boucles sans blocks sont pratique, a condition bien sur d'etre faite expres biggrin.gif


--------------------
Manual Focus Forum pour les fans d'appareils & objectifs a papa...
Go to the top of the page
 
+Quote Post
f_cam
posté 25 Aug 2004, 21:26
Message #9


Moderating Daemon
*****

Groupe : Modérateurs
Messages : 6 345
Inscrit : 22 Feb 2004
Lieu : Yvelines/Cambridge (GB), dans mon pantalon
Membre no 15 207



QUOTE(buserror @ 25 Aug 2004, 19:45)
C'est un bug typique en fait, et probablement que chez apple quelqu'un s'est mis a mettre les warnings du compilo a fond et a les LIRE.

Il lit les warning pour rajouter des bugs?

Ce message a été modifié par f_cam - 25 Aug 2004, 21:27.


--------------------
G5 Bi 2GHz rev A, ATI X800 XT
Alu 17" rev A
MacBook core duo 1.83 GHz
Go to the top of the page
 
+Quote Post
ploute
posté 25 Aug 2004, 21:36
Message #10


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 293
Inscrit : 25 Apr 2003
Membre no 7 294



Hello, c'est re-moi, comme promis voici les nouvelles neuves du tête de ligne : je suis mort de honte, c'était l'inverse. Je sais pas me servir de FileMerge. Le bug était là dans 10.3.4, et *corrigé* dans 10.3.5.

Si on me demande, je suis caché sous la table.
Go to the top of the page
 
+Quote Post
f_cam
posté 25 Aug 2004, 21:50
Message #11


Moderating Daemon
*****

Groupe : Modérateurs
Messages : 6 345
Inscrit : 22 Feb 2004
Lieu : Yvelines/Cambridge (GB), dans mon pantalon
Membre no 15 207



QUOTE(ploute @ 25 Aug 2004, 22:36)
Hello, c'est re-moi, comme promis voici les nouvelles neuves du tête de ligne : je suis mort de honte, c'était l'inverse. Je sais pas me servir de FileMerge. Le bug était là dans 10.3.4, et *corrigé* dans 10.3.5.

Si on me demande, je suis caché sous la table.
[right][snapback]822283[/snapback][/right]

Ah je suis rassuré, autant ça peut arriver à tout le monde une bêtise comme ça, mais que l'on rajoute ça je comprenais pas.


--------------------
G5 Bi 2GHz rev A, ATI X800 XT
Alu 17" rev A
MacBook core duo 1.83 GHz
Go to the top of the page
 
+Quote Post
buserror
posté 25 Aug 2004, 22:38
Message #12


Macbidouilleur d'Or !
*****

Groupe : Banned
Messages : 1 559
Inscrit : 19 May 2002
Lieu : Gone
Membre no 2 507



Pff ca me parraissait tellement evident que j'ai meme pas imaginé une seconde que ca pouvait etre l'inverse.


--------------------
Manual Focus Forum pour les fans d'appareils & objectifs a papa...
Go to the top of the page
 
+Quote Post
ploute
posté 25 Aug 2004, 22:45
Message #13


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 293
Inscrit : 25 Apr 2003
Membre no 7 294



Ouais mais bon. Je suis désormais grillé dans toute la profession. J'aurais préféré que Darwin soit buggé jusqu'à l'os, que toute la communauté internationale soit perturbée, plutôt que d'être ainsi ridiculisé. (j'déconne, oh).

Par contre, euh, lol :
QUOTE(unmecsurlaliste)
But don't feel too bad.  You were right about it being a really nasty one.  ;-)
Launch times are significantly improved with this fixed.


Donc quand vous voyez dans les nouveautés de la version n+1 un truc du genre "performances améliorées", c'est qu'ils ont corrigé ce genre de bug ;-)
Go to the top of the page
 
+Quote Post
r2d2
posté 26 Aug 2004, 10:59
Message #14


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 757
Inscrit : 26 Oct 2002
Lieu : Switzerland
Membre no 4 353



C'est ce que fait le servie pack 2 de XP :
QUOTE(Developpeur de XP)
Nous avons juste enleve 31547 ';' dans notre nouvelle version de XP. En fait, le SP3 de XP fera la meme chose, mais pour les while et les if
tongue.gif


--------------------
Hackintosh i7 3.8Ghz - 16Go RAM - Nvidia 760GTX - SSD 512Go - HDD 2To
HTPC : EEEPC 1501 -- DD 4To -- Ubuntu
iPhone 3GS -- iPad wifi 32Go -- 0 cd+rw

Go to the top of the page
 
+Quote Post
cybercc
posté 26 Aug 2004, 11:18
Message #15


Adepte de Macbidouille
*

Groupe : Membres
Messages : 193
Inscrit : 7 Feb 2004
Lieu : Expatrié à Ottawa - Carleton Raven for one year !
Membre no 14 428



QUOTE(r2d2 @ 26 Aug 2004, 10:59)
C'est ce que fait le servie pack 2 de XP :
QUOTE(Developpeur de XP)
Nous avons juste enleve 31547 ';' dans notre nouvelle version de XP. En fait, le SP3 de XP fera la meme chose, mais pour les while et les if
tongue.gif
[right][snapback]822794[/snapback][/right]


biggrin.gif
Sauf que d'apres ce que j'ai entendu dire, les performances sont moins bonnes sous SP2...
Donc ca serais plutot :
QUOTE(Developpeur de XP)
Nous avons corrigé des failles de securités énormes, en oubliant 31547 ';' dans la declaration des boucles ... pour la SP3 on a prevu d'ameliorer le support des grosses machines pour pas avoir a enlever les ';'.

tongue.gif


--------------------
"Les ordinateurs sont inutiles. Ils ne savent que donner des réponses." Pablo Picasso
Christian Corsano
Étudiant en informatique
MBP 15" 2.33ghz 2go RAM 160go HDD Glossy Screen
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 23rd April 2024 - 11:40