IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Le bug de l'an 2000 se reproduira en 2038 dans le monde Linux


Sujet :

Linux

  1. #41
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 37
    Points : 80
    Points
    80
    Par défaut mauvaise analyse au départ ?
    Bonjour,

    Point de vue software:
    Il me semble que le soucis principal vient de l'analyse initiale de la notion sous-jacente.

    S'il est légitime de représenter un chiffre mathématique ( qui a pour objet d'être utilisé dans n'importe quelle opération mathématique ) sous la forme d'une suite continue de valeurs ( suite de bit continu dont les puissances sont constante et égale à 2). Il n'est pas forcément indispensable de le faire pour des notions temporelles, dont les échelles sont par nature indéfinie ( dans le sens infini ). Les opérations effectués sur les éléments temporels sont plus restreints que sur des opérandes mathématiques. En fait il est probable que les dates ne sont généralement utilisés que comme indicateurs (constantes), et plus rarement pour calculer une différence de date.

    L'homogénéité de la représentation d'une date à celle d'une durée cache la différence de nature entre ces deux notions.

    L'utilisation de la représentation binaire simple, est une simple facilité de représentation qui permet d'injecter les valeurs représentées dans les calculs sans prétraitement.

    Il est sans doute possible de trouver un mécanisme de définition plus discontinu. Plutôt que d'avoir une petite plage de valeur continue, on sacrifierait alors la simplicité de la définition sous forme d'une énumération continue pour une définition complexe permettant une plage de valeur plus étendue ( pour une même emprise mémoire). Cependant, la complexité d'implémentation d'une telle solution n'est sans doute pas acceptable dans de nouveaux systèmes ( sans même parler de la reprise de l'existant! )

    Une autre solution serait de définir le bit de plus haut poids comme indicateur d'indirection vers une autre valeurs (puis double indirection etc..)

    Cependant, sur la plupart des systèmes embarqués, il y a fort à parier que la gestion de dates passées est inexistante. Il convient d'utiliser une plage de dates valides glissante permettant de garder un horizon final toujours hors de portée. Ici c'est l'analyse préalable des domaines d'utilisations et des fonctions accessibles qui définissent les deux horizons des événements accessibles ( passé/présent) par rapport à la date actuelle.

    Point de vue hardware:
    L'intégration des horloges hardware peut être une contrainte si la structure ne peut ni être remise à zéro ni prise en compte logiquement en utilisant un horizon glissant.

  2. #42
    Inactif
    Homme Profil pro
    ingénieur e.r.
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : ingénieur e.r.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 32
    Points
    32
    Par défaut y2038 = y2k = big buzz, tiny problem
    y2038 = y2k = big buzz, tiny problem


    A - En 1992 j'ai eu à refaire le système de gestion du temps dans la grande application de notre Lab, qui fonctionnait chez nos clients sur toutes les versions d'UNIX (de mémoire SunOS, HPUX, AIX, et les autres dont j'ai oublié les noms de DEC, SGI, etc). Je me suis vite aperçu que c'était IMPOSSIBLE de trouver pour cela des outils logiques, cohérents, FIABLES, dans UNIX. Pourtant j'ai épluché la doc : celle d'UNE station UNIX de Sun faisait 1.5 mètres de livres A4, chacun ~1000 pages remplies en petits caractères, extrêmement verbeux, peu précis, peu logique, sans renvois efficaces donc tout est à chercher par soi-même, ce que j'ai fait mais cela m'a fait comprendre pourquoi les développeurs (une 30aine de jeunes thésards étrangers encadrés par 5 ou 6 spécialistes) y avaient renoncé et ignoraient en fait UNIX sur lequel ils travaillaient pourtant tous les jours depuis des années.

    J'ai donc refait un nouveau système Temps, entier en partant de zéro (depuis l'étude de l'histoire du calendrier) ; le stockage et le traitement du temps étaient tout entiers dans l'application, seuls y étaient propres aux machines et OS de nos clients les fonctions genre DATE et TIME pour accéder à leur horloge matérielle, que je convertissais immédiatement conformément aux formats définis dans mon module Temps. Lequel, comme certainement l'écrasante majorité de ceux faits sur la planète, était fait sérieusement et consciencieusement, donc bien sûr traitait correctement les transitions des années Zéro (les Historiens n'ont pas d'année Zéro comme les astronomes) et 1582 (Julien-Grégorien), et encore plus évidemment les années bissextiles et les changements de siècles (y compris les exceptions genre 1700, 1800, 1900, 2100, etc) ou de millénaires (Ans Zéro, 1000, 2000, etc).

    B - Vers 1997 a commencé le buzz, incroyable pour un programmeur consciencieux, à propos de la "catastrophe" annoncée du "Bug de l'An 2000" : on a presque cherché si Nostradamus l'avait prédit ! Stupéfait qu'une pareille peur moyenâgeuse et irréfléchie puisse prendre une telle ampleur dans les médias j'ai aussitôt écrit publiquement sur divers forums que l'An 2000 ne causerait aucun problème sur les programmes sérieux, sans doute encore l'écrasante majorité à l'époque, où il n'était qu'un cas particulier de cas particuliers déjà forcément largement traités.

    C- La nuit du Fri 31 Dec 1999 au Sat 01 Jan 2000 j'avais à l'avance préparé des stations de travail (SunOS, HPUX, AIX) et PCs au Lab et chez moi, pour qu'ils soient tous en marche et connectés au moment fatidique, y compris retour momentané du vieux PC prêté à un fils étudiant. Comme prévu les problèmes ont été absolument inexistants sur les stations UNIX tournant mon programme, mineurs et vite contournés sur les PCs Windows (et IIRC sur les Macs du Lab), mais graves et irréparables sur... 3 stations UNIX du Labo qui n'utilisaient pas notre programme (des haut-de-gamme du service mécanique qui tournaient Matra Euclide au lieu de notre grande appli, généraliste Éléments Finis mais plus orientée Génie Civil). Ces 3 luxueuses stations ont dû recevoir en catastrophe dans les 3 semaines le remplacement normalement prévu plus tard : il est impossible de gérer correctement une grande quantité de projets avec une horloge fausse.

    D - Les jours suivants il est apparu que notre Lab reflétait bien la situation mondiale d'ensemble : l'An Y2K n'avait causé aucun problème en général, les seules exceptions étaient rares et ne concernaient que certains systèmes UNIX : le "Y2K" était immédiatement et complètement dégonflé.

    E - Pour y2038 je m'attends à la même chose : AVANT l'échéance, un énorme buzz de la part de ceux qui n'ont pas les moyens de réfléchir avant d'écrire (notamment dans le journalisme, où une condition sine qua non du succès est de NE JAMAIS réfléchir ou vérifier, sinon votre papier arrive après le bouclage) ; APRÈS l'échéance, un impact encore plus négligeable qu'en Y2K. Raisons :

    - Il faut être particulièrement non-concerné (ce qui peut arriver) ou négligent pour avoir encore en 2015 un système ne traitant pas correctement le temps au delà de 2038 ; la plupart des programmes auront bien dans les 23 ans qui viennent au moins UN programmeur consciencieux, qui y remédiera, surtout si le buzz continue (je suis donc obligé de lui reconnaître une utilité, même marginale).

    - Pour que CETTE erreur se produise il faut avoir stocké le temps TOTAL (DATE *et* TIME) en SECONDES ENTIÈRES sur UNE SEULE variable ENTIÈRE (32 bits), ce qui peut donc aller jusqu'à 2^31 = 2,147,483,648 secondes, soit le temps entre l'origine UNIX (01 Jan 1970 0h GMT) et comme dit l'article Tue 19 Jan 2038 03:14:07 GMT (donc le bug se déclarerait à 03:14:08 GMT). Mais faire un tel stockage, PIRE que ceux des variantes d'UNIX et des plus bâclées des applis développées dessus, ç'aurait déjà été difficile à imaginer en 1997, ce serait inqualifiable en 2015. Il y a donc tout lieu de croire que c'est une hypothèse la plus pessimiste possible de journaliste ou de forumiste, et non pas une constatation par des personnes informées sur des programmes réellement existants.

    - Subordonner la solution (stocker correctement chaque date sur 64 bits) au passage de tout l'OS à 64 bits, c'est écraser une mouche avec un marteau-pilon, on peut difficilement l'imaginer ailleurs que chez les journalistes et "experts" ministériels ; comme le montre (parmi des millions d'autres) mon exemple, il est très facile et économique de le faire, avec une haute fiabilité, sur un système entièrement 32 bits (OS, langage, appli).

    Versailles, Fri 27 Feb 2015 15:02:00 +0100, édité (2 typos, +1-3 car) Mon 02 Mar 01:29:00 +0100

  3. #43
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 20
    Points : 40
    Points
    40
    Par défaut
    " Les systèmes basés sur Linux sont implémentés dans des voitures, ..."
    Je ne me fais pas trop de soucis pour les voitures! Celles fabriquées aujourd'hui ne roulerons plus en 2038. J'imagine que ce sera d'ailleurs le cas pour nombre de machines implémentées, il n'est qu'à voir la durée de vie moyenne d'un produit électronique. A mon sens cela ne devrait pas concerner beaucoup d'entre ceux élaborés actuellement.

  4. #44
    Membre éprouvé Avatar de pcdwarf
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 964
    Points
    964
    Par défaut inutile de s'inquiéter...
    D'habitude, je suis du coté de Cassandre mais là je crois qu'on s'inquiète pour pas grand chose...
    Je veux bien admettre qu'il existe des vieux systèmes où le timestamp unix est un simple integer.

    Cependant, si à l'heure actuelle, le timetamp unix fait toujours 32bits, il emploie quand même un typage spécifique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct timeval {
        time_t      tv_sec;  /* secondes */
        suseconds_t tv_usec; /* microsecondes */
    };
    Les logiciels qui sont correctement programmés, (c'est à dire qui utilisent le type time_t pour coder les timestamps et ne présupposent pas que time_t est équivalent d'un int32_t) n'auront aucun problème à faire la transition.
    Il suffira de modifier la définition du type time_t dans les librairies standard et de recompiler l'ensemble.

    Pour ceux qui sont mal programmés ou qui font appels à des hacks dépendants du hardware, comme ça sera l'occasion de mettre à niveau et de devenir un peu plus portable.

    Et puis ça sera l'occasion pour plein de sociétés de vendre un version mise à jour de leur logiciels...
    Commercialement comme techniquement, je pense que ça n'est pas un problème mais une opportunité.

  5. #45
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 064
    Points
    19 064
    Par défaut
    Bonjour à toutes et à tous.

    En lisant l'article, je ne comprends pas le rapport avec le bug de l'an 2000.
    A l'époque, j'ai travaillé sur ce bug où justement, comme dit l'article, les années étaient représentés sur deux digits dans les gros systèmes.
    Un digit, en cobol est représenté sur un quartet, c'est-à-dire quatre bits. L'astuce utilisée était de deux sortes :

    1) si on avait la possibilité de faire passer la représentation de l'année de 2 digit à 4, on le faisait.
    Sauf que la longueur de l'enregistrement augmentait d'autant et pouvait dans certain cas provoquer un problème de volumétrie.

    2) on ne modifiait pas le stockage de l'année sur 2 digits, mais dans les programmes cobol, on traite l'année en ajoutant devant le siècle.
    Si l'année > "70" alors on traduisait le siècle par "19" sinon par "20".
    Cela permettait de ne pas modifier la volumétrie des fichiers mais par contre, on risque de rencontrer un problème en 2069.
    Je pense que la plupart de ces programmes auront disparu d'ici là.
    Encore que, j'ai rencontré dans les années 2000, dans des banques, des programmes écrits en 1960 et qui fonctionnaient encore.

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

    J'ai voulu m'assurer que ce problème existe bien. J'ai fait un programme en 'c' et testé sous linux version debian, afin de vérifier cette hypothèse.
    D'abord, quelques explications. On récupère la date et l'heure système, en utilisant cette instruction en 'C' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    time_t temps = time(NULL);
    Ensuite, la zone 'temps' sera interprété afin de nous fournir la bonne représentation de la date et de l'heure que nous désirons obtenir, comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    printf("%d\n\n", temps);
     
    strftime(format, sizeof(format), "%x %X", temps_local);
    printf("-> forme local     : %s\n", format);
    Pour le test, j'ai modifié la zone 'temp' de cette façon , ce qui correspond à l'hypothèse de l'article, soit 2^31 - 1 = 2 147 483 647.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     time_t temps = 2147483647;
    Et a l'affichage, voici ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    2147483647
     
    -> forme local     : 01/19/38 04:14:07
    La date et l'heure s'affiche correctement, soit le 19 janvier 2038 à 04:14:07.
    Je refais le même test, mais avec temp = 2 147 483 648.
    Il n'y a pas d'erreur, juste que je n'obtiens aucun résultat, c'est à dire la valeur NULL.

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

    Ta remarque Femkys est pertinente, car c'est un problème UNIX et pas seulement LINUX.

    Citation Envoyé par Femkys
    Une petite précision, le passage de 2038 ne fera pas passer le système en 1970 mais plutôt en 1902 (le time_t est signé pour pouvoir exprimer des dates antérieures à 1970).
    Toutes les dates et heures sous Unix sont une représentation en base (le 01/01/1970 à 00:00:00) et en déplacement.
    Seul le déplacement est stocké sous le format 'time_t' qui est un 'int'.

    Et bien NON ! Quand la zone 'temp' est négative, il retourne un NULL. C'est-à-dire que l'on ne peut pas avoir des dates en dessous de '1970'.
    Mais à vrai dire, aura-t-on encore des machines unix ayant une représentation en 32 bits de la date, en 2039 ?

    Comme pour le bug de l'an 2000, beaucoup de bruit pour pas grand chose !
    Car dans le silence, il y a des ingénieurs qui ont déjà pensé à ce problème, et qui sera résolu d'ici cette date fatidique.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #46
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Juste pour ceux qui disent que le 32 bits sera abandonné d'ici là, réfléchissez en terme d'embarqué, vous verrez que ça change tout.
    Aujourd'hui on fait des bâtiments intelligents avec des automates et calendriers intégrés pour gérer éclairage, clim, chauffage, etc... Personne ne se posera la question de ces outils avant la panne inopportune, en fonction des programmes à l'intérieur. je ne dis pas que ça mène à la fin du monde dans ce cas de figure, mais juste dire que ce qui est déployé aujourd'hui sera encore présent dans 25 ans.

  7. #47
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 476
    Points : 11 051
    Points
    11 051
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Juste pour ceux qui disent que le 32 bits sera abandonné d'ici là, réfléchissez en terme d'embarqué, vous verrez que ça change tout.
    Aujourd'hui on fait des bâtiments intelligents avec des automates et calendriers intégrés pour gérer éclairage, clim, chauffage, etc... Personne ne se posera la question de ces outils avant la panne inopportune, en fonction des programmes à l'intérieur. je ne dis pas que ça mène à la fin du monde dans ce cas de figure, mais juste dire que ce qui est déployé aujourd'hui sera encore présent dans 25 ans.
    Tout à fait Arnard, je ne sais pas si c'est de l'embarqué (32 bits ?) mais on a des exemples à la fois industriels et domotiques privés pour aller dans ce sens :

    - le ver Stuxnet qui a infecté les systèmes SCADA,
    système de télégestion à grande échelle permettant de traiter en temps réel un grand nombre de télémesures et de contrôler à distance des installations techniques.
    - Webcams, imprimantes, portes de garage...
    http://rue89.nouvelobs.com/2014/06/0...trouves-252793
    J’ai pris le contrôle de votre caméra et je vous ai retrouvés
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

  8. #48
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Juste pour ceux qui disent que le 32 bits sera abandonné d'ici là, réfléchissez en terme d'embarqué, vous verrez que ça change tout.
    Aujourd'hui on fait des bâtiments intelligents avec des automates et calendriers intégrés pour gérer éclairage, clim, chauffage, etc... Personne ne se posera la question de ces outils avant la panne inopportune, en fonction des programmes à l'intérieur. je ne dis pas que ça mène à la fin du monde dans ce cas de figure, mais juste dire que ce qui est déployé aujourd'hui sera encore présent dans 25 ans.
    Sauf que la question n'est pas du tout la. On peut tout à fait gérer ses dates sur 64 bit même avec une machine 32 bits, 16 bits voire même 8 bits. D'ailleurs ça se fait depuis très longtemps, par exemple Java à toujours eu son objet Date sur 64 bits, alors que ça remonte à une époque ou les processeurs 64 bits n'étaient même pas encore dans les cartons.

  9. #49
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par Uther Voir le message
    On peut tout à fait gérer ses dates sur 64 bit même avec une machine 32 bits,.......
    C'est là tout le problème ..... On peut, mais est ce qu'on le fait en 2015 pour des programmes qui risquent d'être encore en service en 2038 ?

  10. #50
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    En tout cas on devrait, car gérer des dates sur 64 bit, n'est pas plus compliqué sur processeur 32 bit que sur 64 bit. Et si ce n'est pas fait, c'est seulement pour une bête question d'habitude, pas par contrainte technique.
    D'ailleurs à l'époque où on a créé le temps unix sur 32 bit, les machines étaient généralement 8 ou 16 bit.

  11. #51
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Ceci me fait penser à des endroits super sécurisés comme des centrales nucléaires où on trouve encore du matériel informatique des années 80 car ils ont été certifiés : il revient moins cher de continuer à maintenir ce matériel que de certifier du nouveau matériel.
    Il arrive de trouver une salle de relais qui tiendrait maintenant sur une carte informatique. Ceci dit, l'espérance de vie de ces relais antiques est largement supérieure aux cartes électroniques. L'expérience le prouve.

    J'espère donc que toutes les centrales construites depuis 20 ans (voir plus) ont prévu ce bug.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  12. #52
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 700
    Points
    8 700
    Billets dans le blog
    43
    Par défaut
    Faudrait il encore que nos centrales soient pilotées par du Linux, ce qui reste à établir.
    Tutoriels et FAQ TypeScript

  13. #53
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Il est remarquable que cette discussion s'étale sur 3 pages sans que personne ne soit allé voir l'état des discussions des développeurs du noyau sur le sujet... Cela semble une première étape nécessaire si l'on souhaite être constructif dans sa critique du problème.

    En particulier une décision a finalement été adapté, résumée dans la seconde partie de cet article : http://lwn.net/Articles/599580/.

    Je traduis pour les anglophobes : après avoir enfin pris la peine de discuter avec les développeurs des libc, en particulier la glibc, les développeurs du noyau ont décidé de créer un certain nombre de nouveaux appels systèmes "version 64 bits" comme gettimeofday64() qui fonctionne avec un nombre de secondes en 64 bits. La glibc pourra être compilé avec l'option TIME_BITS=64 pour que les appels classiques comme gettimeofday() soit redirigés vers leur version 64 bits, même sur des système 32 bits (ou moins) et cette option deviendra standard dans les distributions lorsque la situation se sera stabilisée.

    Ceci a été mis en place dans le dernier noyau stable (le 3.19 au moment où je parle).

    Le problème de l'année 2038 est donc bien anticipé et les problèmes ne devraient exister que dans des systèmes embarqués jamais mis à jour ou des applications développées avec les pieds.

    (La plupart des BSDs, moins préoccupés par la compatibilité binaire et habitués à changer l'ABI ont simplement décidé que leurs systèmes utiliseraient tous un time_t en 64 bits, quelque soit l'architecture)

  14. #54
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 700
    Points
    8 700
    Billets dans le blog
    43
    Par défaut
    Que le bug soit anticipé par les développeurs du noyau, encore heureux oserai-je dire...

    Mais comme on le sait tous, le plus compliqué dans une migration, ce ne sont pas les développements futurs, mais le legacy.
    D'où les pages écrites ici apparemment.
    Tutoriels et FAQ TypeScript

  15. #55
    Membre habitué Avatar de gadj0dil0
    Profil pro
    Support technique
    Inscrit en
    Février 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Support technique

    Informations forums :
    Inscription : Février 2007
    Messages : 133
    Points : 130
    Points
    130
    Par défaut
    Je ne comprend pas ce qui va se passer 19 January 2038 3:14:07 : strtotime("19 January 2038 3:14:07") donne 2147512447
    J'en conclu que 2147512447 + 1 ca passe pas ?
    Merci de votre réponse

  16. #56
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par gadj0dil0 Voir le message
    J'en conclu que 2147512447 + 1 ca passe pas ?
    Ben si un ordinateur, c'est con ! mais on se retrove avec une date du 13 décembre 1901 ......

  17. #57
    Membre habitué Avatar de gadj0dil0
    Profil pro
    Support technique
    Inscrit en
    Février 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Support technique

    Informations forums :
    Inscription : Février 2007
    Messages : 133
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par DAUDET78 Voir le message
    Ben si un ordinateur, c'est con ! mais on se retrouve avec une date du 13 décembre 1901 ......
    Merci, j'en conclu que 2147512448 c'est le 13 décembre 1901! ?

  18. #58
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par gadj0dil0 Voir le message
    Merci, j'en conclu que 2147512448 c'est le 13 décembre 1901! ?
    Pour répondre à une discussion .... FAUT TOUT LIRE!
    En particulier la discussion de départ : http://www.developpez.net/forums/d15...8-monde-linux/ qui répond à ta question !

  19. #59
    Membre habitué Avatar de gadj0dil0
    Profil pro
    Support technique
    Inscrit en
    Février 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Support technique

    Informations forums :
    Inscription : Février 2007
    Messages : 133
    Points : 130
    Points
    130
    Par défaut
    En effet! Ma page restée ouverte depuis vendredi a mal rafraichi avant que je réponde. J'ai parcouru rapidement, pas sur qu'en lisant je comprenne tout, ca a l'air beaucoup plus compliqué que "ca", vu que personne n'a l'air de prendre les même "méthodes de temps"! Bref, on n'a pas fini d'en entendre parler à mon humble avis.
    Merci en tous cas d'avoir pris la peine de répondre.

  20. #60
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    Citation Envoyé par gadj0dil0 Voir le message
    Merci, j'en conclu que 2147512448 c'est le 13 décembre 1901! ?
    Perdu! Avec un nombre signé sur 32 bit le calcul de 2147512447 + 1 va dépasser la limite ce qui fait qu'on va se retrouver à -2147512448, ce qui correspond en effet au 13 décembre 1901.

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/08/2006, 15h09
  2. Bug IE si je rajoute des sauts de lignes dans le CS
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 14/06/2006, 20h07
  3. [SQL-SERVER 2000] Remplacer l'instruction GO dans requete
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 14h24
  4. [SQL Server 2000] ajouter une colonne identité dans une vue?
    Par CetTer dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/08/2005, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo