{"id":193584,"date":"2017-08-29T10:01:51","date_gmt":"2017-08-29T08:01:51","guid":{"rendered":"http:\/\/www.borncity.com\/blog\/?p=193584"},"modified":"2019-02-15T07:12:01","modified_gmt":"2019-02-15T06:12:01","slug":"windows-10-build-nummern-und-der-fluch-der-vergangenheit","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2017\/08\/29\/windows-10-build-nummern-und-der-fluch-der-vergangenheit\/","title":{"rendered":"Windows 10: Build-Nummern und der Fluch der Vergangenheit"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" style=\"float: left; margin: 0px 10px 0px 0px; display: inline\" src=\"https:\/\/borncity.com\/blog\/wp-content\/uploads\/2015\/01\/win102.jpg\" width=\"58\" align=\"left\" height=\"58\"\/>Microsoft hat ein 'kleines Problem' mit Windows 10 und den intern verwendeten Build-Nummern. Daher heute in kleiner Exkurs in Sachen Windows 10 und Altlasten im Code, der mir gerade unter die Augen gekommen ist. <\/p>\n<p><!--more--><\/p>\n<h2>Probleme mit Build-Nummern 17000.xxx<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/ssl-vg03.met.vgwort.de\/na\/942809e861b142c3810fb1d2def2d7b5\" width=\"1\" height=\"1\"\/>Es ist nur ein <a href=\"https:\/\/www.deskmodder.de\/blog\/2017\/08\/28\/windows-10-hat-microsoft-ein-problem-mit-den-buildnummern\/\" target=\"_blank\">kurzer Artikel<\/a>, der mir heute morgen bei den Kollegen von deskmodder.de unter die Augen gekommen ist. Es gibt wohl eine <a href=\"https:\/\/twitter.com\/donasarkar\/status\/901152704126369792\" target=\"_blank\">Konversion auf Twitter<\/a>, die ganz harmlos von Dona Sarkar gestartet wurde. <\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"de\">\n<p lang=\"en\" dir=\"ltr\">The <a href=\"https:\/\/twitter.com\/hashtag\/WindowsInsiders?src=hash\">#WindowsInsiders<\/a> team had a bit of fun yesterday escaping an inception situation. We missed you <a href=\"https:\/\/twitter.com\/brandonleblanc\">@brandonleblanc<\/a>! <a href=\"https:\/\/t.co\/6ocKdeVd9g\">pic.twitter.com\/6ocKdeVd9g<\/a><\/p>\n<p>\u2014 Dona Sarkar (@donasarkar) <a href=\"https:\/\/twitter.com\/donasarkar\/status\/901152704126369792\">25. August 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script> <\/p>\n<p>Und dann kommt noch eine faustdicke \u00dcberraschung. Brandon Le Blanc hat im <a href=\"https:\/\/twitter.com\/brandonleblanc\/status\/901211419118456832\" target=\"_blank\">Tweet<\/a> auf <a href=\"https:\/\/twitter.com\/AlbertoVaudagna\/status\/901155984332263424\" target=\"_blank\">eine Benutzerfrage<\/a>, warum es keine Build 17000 g\u00e4be folgendes geantwortet.<\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"de\">\n<p lang=\"en\" dir=\"ltr\">Not necessarily false but perhaps a more complicated \"story\" that requires more than 140 characters to explain. <\/p>\n<p>\u2014 Brandon LeBlanc (@brandonleblanc) <a href=\"https:\/\/twitter.com\/brandonleblanc\/status\/901264641728237571\">26. August 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script>Und dann hat er folgendes in seinem Twitter-Profil nachgeschoben.  <\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"de\">\n<p lang=\"en\" dir=\"ltr\">Interesting article! I'm not a \"PR person\" though. Looking to dive into this topic for Insiders in the next few weeks. <a href=\"https:\/\/t.co\/7b6Sb71vGr\">https:\/\/t.co\/7b6Sb71vGr<\/a><\/p>\n<p>\u2014 Brandon LeBlanc (@brandonleblanc) <a href=\"https:\/\/twitter.com\/brandonleblanc\/status\/902255495204921346\">28. August 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script> <\/p>\n<p>W\u00e4re an mir vorbei gegangen, wenn die Leute bei deskmodder.de es nicht aufgegriffen h\u00e4tten.<\/p>\n<h2>Wenn Marketing und Entwicklung kollidieren<\/h2>\n<p>Ich habe es in meinem fr\u00fcheren Leben immer gehasst, wenn da die Leute mit gro\u00dfem Maul herumliefen und von ihren tollen Softwarel\u00f6sungen schw\u00e4rmten, die sie gerade mit Tool xyz realisieren. Die Aufmerksamkeit war ihnen sicher, aber ich ahnte h\u00e4ufig nach ein paar Nachfragen schon, dass dieses Projekt fr\u00fcher oder sp\u00e4ter zur Sanierung bei mir vor den F\u00fc\u00dfen landen w\u00fcrde. Und wenn Cheffe dann mit betretenem Gesicht und 'Born, wir haben eine Problem \u2026' zur T\u00fcr herein kam wusste ich, was kam \u2026<\/p>\n<p>Das fiel mir bei der Geschichte ein und sofort war die Verbindung zu Microsoft da. Dort h\u00f6ren wir vom Marketing 'Windows 10, das beste aller Windows, welches von Microsoft jemals herausgegeben wurde'. Na ja, ich muss fair bleiben, das Marketing kann sich schlecht hinstellen und sagen 'Hey Leute, wir haben ein Windows 10, das ist der letzte Schei\u00df. Aber wir wollen trotzdem, dass ihr das einsetzt \u2013 denn besser k\u00f6nnen wir es nicht und die Altlasten m\u00fcssen wir los werden.'<\/p>\n<p>Was man dem Marketing aber ankreiden muss, ist die Schnapsidee mit dem 'Windows as a Service', die den Entwickler eine Altlast weit fr\u00fcher als geplant vor die F\u00fc\u00dfe gesp\u00fclt hat. Ich gesteht, ich habe das mit diebischer Freude vernommen \u2013 denn in meinem schon etwas l\u00e4ngeren IT-Leben kam man mit Insidern in Kontakt, die die Freude hatten, Altcode in Microsoft-Produkten zu warten. Nicht selten haben die sich dann entschlossen, das Ganze neu zu schreiben. <\/p>\n<h2>Der Fluch der 16-Bit im Altcode<\/h2>\n<p>Die Geschichte kommt so harmlos daher \u2013 bei deskmodder schreibt man, dass man auf Buildfeed die Build 16350.1002 und die Build 17000.1000 sehen konnte \u2013 letztere geh\u00f6rt wohl zum Redstone 4-Entwicklungszweig. Und pl\u00f6tzlich switcht man wieder zur\u00fcck, weil sich die Build-Nummer 17000 als Problem herausgestellt hat \u2013 siehe die obigen Tweets. <\/p>\n<p>Da hat sofort etwas in meinem Hinterkopf geklingelt \u2013 sind \u00fcber 25 Jahre her, als ich in Hexzahlen gedacht habe. Die Zahl 17.000 steht f\u00fcr den Hexadezimalwert 0x4268. Da kommt mir sofort der Hexwert 0x3FFF in den Sinn, die gr\u00f6\u00dfte mit 14 Bit darstellbare Zahl. Der Hexadezimalwert 0x4268 l\u00e4sst sich mit 14 Bit nicht mehr darstellen (warum man nicht die 16 Bit als unsigned genommen hat, ist an dieser Stelle unklar). Der Wert 0x3FFF entspricht dezimal der Zahl <em>16383<\/em>. Oberhalb dieser Build-Nummer gibt es dann Probleme, wenn diese in 16-Bit-Variablen abgebildet und mit 14 Bit gemappt wird. Es kommt zu einem \u00dcberlauf des Werts \u2013 nicht wirklich gut, wenn man Abfragen auf gr\u00f6\u00dfer oder kleiner plant (wie das bei Versionen der Fall ist).<\/p>\n<p>Und nun kommen wir zu den Altlasten. In Windows 10 steckt jede Menge Alt-Code, teilweise in Form von DLL-Bibliotheksdateien. Die Build-Nummer wird aber zur Versionierung verwendet. Wenn man nun auf die Build 17000 springt, laufen die 16-Bit-Variablen (in der von mir vermuteten 14-Bit-Maskierung) \u00fcber und beginnen die Z\u00e4hlung mit dem Hexadezimalwert 0x0268 \u2013 eine Build-Nummer die irgendwo bei Windows NT 3.51 verwendet wurde (dieses OS habe ich nie eingesetzt, bin bei NT 4.0 gestartet, und d\u00fcrfte den meisten Blog-Lesern unbekannt sein). <\/p>\n<p>Lange Rede kurzer Sinn: Microsoft hat jetzt wohl ein Problem, was Brandon Le Blanc nicht mit 140 Zeichen auf Twitter erkl\u00e4ren kann. Aber er verweist ja auf <a href=\"https:\/\/web.archive.org\/web\/20180611062408\/http:\/\/insidewindows.net:80\/2017\/08\/28\/inside-windows-versioning\/\" target=\"_blank\">diesen Beitrag<\/a> bei insidewindows.net, wo jemand das Thema auseinander deriviert. Die haben eine Insider Build so gepatcht, dass diese mit der Versionsnummer 17000 im Kernel unterwegs ist und geschaut, was an Kollateralsch\u00e4den auftritt. Ist nat\u00fcrlich in meinen Augen keine so wirklich gute Idee, weil man den Rattenschwanz an Implikationen so nicht absch\u00e4tzen kann. Bestenfalls sieht man einige Kollateralsch\u00e4den, schlechtesten Falls werden die Implikationen erst um drei Ecken sichtbar. Aber immerhin ist man schnell darauf gekommen, dass die Eingabeaufforderung unsinnige Werte f\u00fcr die Build zeigt:<\/p>\n<p><img decoding=\"async\" title=\"Eingabeaufforderung mit falscher Build\" alt=\"Eingabeaufforderung mit falscher Build\" src=\"https:\/\/web.archive.org\/web\/20171113182550\/http:\/\/insidewindows.net\/wp-content\/uploads\/2017\/08\/17000test1.png\"\/><br \/>(Quelle: insidewindows.net)<\/p>\n<p>Die Hauptversion 'Windows 10' stimmt zwar und auch die Sub-Build. Aber bei der Buildnummer, wo die 17000 erwartet wird, steht die 0616 \u2013 die Folge des 14-Bit-\u00dcberlaufs. Das f\u00fchrt nat\u00fcrlich an allen Stellen (z.B. bei Updates) zu Kollisionen, weil es diese Build-Nummer bei Windows 10 offiziell nie gab. <\/p>\n<p>Die Jungs bei insidewindows.net bearbeiten das Thema noch ein wenig in <a href=\"https:\/\/web.archive.org\/web\/20180611062408\/http:\/\/insidewindows.net:80\/2017\/08\/28\/inside-windows-versioning\/\" target=\"_blank\">ihrem Artikel<\/a>. F\u00fcr mich war das Ganze aber nach den von mir get\u00e4tigten obigen \u00dcberlegungen abgehakt (wenn mir kein Denkfehler unterlaufen ist). Microsoft ist mit Windows 10 und den Build-Nummern m\u00f6glicherweise in eine Art eigenes 'Year 2K'-Problem gelaufen (f\u00fcr nicht Insider: es gab die Bef\u00fcrchtung, dass beim Wechsel von 1999 auf 2000 viele Software nicht mehr l\u00e4uft, weil die mit den zwei letzten Ziffer der Jahreszahl operieren. Microsoft hat in Windows trickreiche Konstellationen geschaffen, um den Wechsel von 99 auf 00 zu bewerkstelligen). <\/p>\n<p>Man w\u00e4re bei Microsoft zwar irgendwann in dieses Problem gerauscht \u2013 aber ohne Windows as a Service h\u00e4tte es f\u00fcr Windows 11, 12 und was wei\u00df ich gereicht. F\u00fcr mich wird es jetzt spannend, ob und wie man das gel\u00f6st bekommt. Zeit hat man ja noch. Und eure Gedanken so?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Microsoft hat ein 'kleines Problem' mit Windows 10 und den intern verwendeten Build-Nummern. Daher heute in kleiner Exkurs in Sachen Windows 10 und Altlasten im Code, der mir gerade unter die Augen gekommen ist.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3694],"tags":[24,4378],"class_list":["post-193584","post","type-post","status-publish","format-standard","hentry","category-windows-10","tag-problem","tag-windows-10"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/193584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=193584"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/193584\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=193584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=193584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=193584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}