Examen du code de Darwin, gros doute, XNU-517.7.21 / 517.7.7 (10.3.5/10.3.4) |
Bienvenue invité ( Connexion | Inscription )
Examen du code de Darwin, gros doute, XNU-517.7.21 / 517.7.7 (10.3.5/10.3.4) |
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 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 (edit : "bonsoir à toutes et à tous", et pas l'inverse, voyons, la galanterie !) Ce message a été modifié par ploute - 24 Aug 2004, 20:56. |
|
|
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 |
|
|
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
Ton avis d'expert m'encourage à aller demander sur la mailing-list darwin-kernel. J'vous tiens au courant |
|
|
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 !! 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 ! |
|
|
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!?
-------------------- |
|
|
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 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 ? 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 Ce message a été modifié par ploute - 24 Aug 2004, 23:06. |
|
|
25 Aug 2004, 18:10
Message
#7
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 3 459 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.... Ce message a été modifié par maclinuxG4 - 26 Aug 2004, 19:25. -------------------- 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 -------------------- |
|
|
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 -------------------- Manual Focus Forum pour les fans d'appareils & objectifs a papa...
|
|
|
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 |
|
|
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. |
|
|
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 |
|
|
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...
|
|
|
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 ;-) |
|
|
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
-------------------- 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 |
|
|
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 [right][snapback]822794[/snapback][/right] 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 ';'. -------------------- "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 |
|
|
Nous sommes le : 24th April 2024 - 23:10 |