Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 16.08.2017, 03:37

Mit Visual Studion 2017 Update 3 haben sie Drag & Drop in den Solution Explorer zerstört. Ich kann zwar noch Dateien aus dem Explorer draufziehen, um sie dem Projekt hinzuzufügen – tatsächlich wird die Datei aber ins Projektverzeichnis kopiert und die Kopie dem Projekt hinzugefügt. Sowas Bescheuertes habe ich selten gesehen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
dot
Establishment
Beiträge: 1654
Registriert: 06.03.2004, 19:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot » 16.08.2017, 10:50

In der C++ IDE!? Da muss wohl lokal bei dir irgendwas durcheinander sein, ich mach das ständig und bei mir funktioniert alles ganz normal...

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 16.08.2017, 11:22

Das Problem heißt wohl Move files to a new location? und tatsächlich finde ich auf Google nichts dazu:
  1. neues Projekt
  2. Im Solution Explorer Rechtsklick aufs Projekt, AddNew FilterKrishty
  3. zieh vom Windows Explorer irgendeinen Header, der im Dateisystem nicht unter ($ProjectDir)/Krishty liegt, auf den Krishty-Filter in Visual Studios Solution Explorer
  4. 465755756.png
    465755756.png (6.23 KiB) 4236 mal betrachtet
    OK verschiebt sie; Cancel bricht die komplette Operation ab – wenn man sie am Originalort belassen will, geht das nur noch über Rechtsklick auf den Filter → AddExisting Item
  5. diese blöden Ficker
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3786
Registriert: 16.10.2002, 19:39
Alter Benutzername: atr_23
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid » 16.08.2017, 11:34

Das haben die bestimmt so eingestellt, weil viel zu viele sich irgendwelche temporären oder nur bei ihnen liegende Sachen ins Projekt gezogen haben und das dann committet haben. Kopieren ist im Zweifel weniger fragil. Finde ich eigentlich einen sinnvollen Default. Ansonsten macht man sich doch das Projekt auch sehr schnell zu "läuft nur auf Krishty's Rechner" oder?

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 16.08.2017, 12:16

Verdammte Projektstrukturfaschisten.

Visual C++ wird auch für Projekte eingesetzt, die nicht komplett selbstumfänglich sind. Wie sehen denn wohl die Windows-Quelltexte aus? Hat Microsoft da ein großes Projekt Windows 10 und auf der Festplatte liegen in dessen Ordner 1000 Unterordner Kernel, User, Drivers, usw? Das muss doch irgendjemandem aufgefallen sein!

Wenn sie das so genau durchdacht hätten, warum ist dann da kein „Halt die Klappe; ich weiß was ich tue!“-Knopf?

Ich rate, dass sie irgendwas refactored haben (Accessability Improvements der IDE waren ja Hauptfokus des Updates) und jetzt irgendein Dialog das Flag ignoriert, mit dem der Solution Explorer die physische Ordnerstruktur abbildet (dafür gab es früher eine Option, Show All Files oder so, aber die ist wohl irgendwie in der Versenkung verschwunden).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3786
Registriert: 16.10.2002, 19:39
Alter Benutzername: atr_23
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid » 16.08.2017, 12:24

Krishty hat geschrieben:Verdammte Projektstrukturfaschisten.
Mit geschwollener Brust sogar ^^
Krishty hat geschrieben:Visual C++ wird auch für Projekte eingesetzt, die nicht komplett selbstumfänglich sind. Wie sehen denn wohl die Windows-Quelltexte aus? Hat Microsoft da ein großes Projekt Windows 10 und auf der Festplatte liegen in dessen Ordner 1000 Unterordner Kernel, User, Drivers, usw? Das muss doch irgendjemandem aufgefallen sein!
Die stellen ja glaube ich gerade komplett auf ein Monorepo mit GIT um (also pro Produkt oder so denke ich)... https://blogs.msdn.microsoft.com/bharry ... he-planet/ Das heißt Windows ist dann schon praktisch eine gigantische Ordnerstruktur die auf deinem Rechner zumindest virtuell verfügbar ist.
Krishty hat geschrieben:Ich rate, dass sie irgendwas refactored haben (Accessability Improvements der IDE waren ja Hauptfokus des Updates) und jetzt irgendein Dialog das Flag ignoriert, mit dem der Solution Explorer die physische Ordnerstruktur abbildet (dafür gab es früher eine Option, Show All Files oder so, aber die ist wohl irgendwie in der Versenkung verschwunden).
Das Umstellen war bestimmt einfach das Accessability Improvement. ;)

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 16.08.2017, 14:05

Chromanoid hat geschrieben:
Krishty hat geschrieben:Visual C++ wird auch für Projekte eingesetzt, die nicht komplett selbstumfänglich sind. Wie sehen denn wohl die Windows-Quelltexte aus? Hat Microsoft da ein großes Projekt Windows 10 und auf der Festplatte liegen in dessen Ordner 1000 Unterordner Kernel, User, Drivers, usw? Das muss doch irgendjemandem aufgefallen sein!
Die stellen ja glaube ich gerade komplett auf ein Monorepo mit GIT um (also pro Produkt oder so denke ich)... https://blogs.msdn.microsoft.com/bharry ... he-planet/ Das heißt Windows ist dann schon praktisch eine gigantische Ordnerstruktur die auf deinem Rechner zumindest virtuell verfügbar ist.
Das Argument war eher, dass nicht alle Projektdateien in der Root liegen und alle Quelltexte in Unterordnern. Aber ja; es ist schon ironisch, dass Windows mit etwas organisiert wird, das Linus Torvalds entwickelt hat.

Monorepo pro Projekt? Ich denke eher, eins für den kompletten Konzern. Wir hatten hier ja letztens einen Vortrag, dass Google ein einziges für 95 % aller Entwickler hat. (Die behaupten übrigens auch, ihres wäre das größte der Welt. Als wär’ das was Positives!)
[youtube]W71BTkUbdqE[/youtube]
Nachtrag: MS hat das größte Git-Repository, Google hat das größte Piper-Repository. Schön, dass das geklärt wäre.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3786
Registriert: 16.10.2002, 19:39
Alter Benutzername: atr_23
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid » 16.08.2017, 14:29

Krishty hat geschrieben:Monorepo pro Projekt? Ich denke eher, eins für den kompletten Konzern.
Das habe ich mich vorhin auch gefragt. Ich hab dann meinen Beitrag etwas vorsichtiger formuliert. Ich kann mir nur sehr schwer vorstellen, dass Word und Windows im gleichen Repository liegen sollen. Noch habe ich keinen Beleg dafür, aber ich denke die werden eher pro Produkt oder Produktkategorie ein Repo pflegen. Aber ich habe noch nicht so richtig Belege für die eine oder andere Variante gelesen. Hast Du da ein Statement, dass das explizit angibt? Ich finde solange es von der Entwickler-Usability OK ist, Monorepos inkl. Monoprojektstruktur ziemlich hilfreich. Refactorings und automatisierte Integrationstests lassen sich so sehr schön über alle Subprojekte durchführen.

Als Alternative habe ich bei einem JUGHH-Treffen mal eine Vorstellung vom Entwicklungsprozess der Otto Group interessant gefunden. Die haben AFAIR um die 7 komplett eigenständige Teams mit voller Entscheidungsgewalt. Jedes Team entwickelt mehr oder weniger eine Komponente. Die Komponenten haben einen "Shared Nothing"-Ansatz und das wird eben auch durch die Organisation der Entwickler nachgestellt (Conway's Law lässt grüßen). Alles was gemeinsam verwendet werden soll, wird als third-party-Dependency behandelt und Open Source entwickelt. Das finde ich den anderen schicken Ansatz. Siehe auch: https://dev.otto.de/2013/04/14/architekturprinzipien-2/

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 16.08.2017, 14:50

Chromanoid hat geschrieben:
Krishty hat geschrieben:Monorepo pro Projekt? Ich denke eher, eins für den kompletten Konzern.
Das habe ich mich vorhin auch gefragt. Ich hab dann meinen Beitrag etwas vorsichtiger formuliert. Ich kann mir nur sehr schwer vorstellen, dass Word und Windows im gleichen Repository liegen sollen. Noch habe ich keinen Beleg dafür, aber ich denke die werden eher pro Produkt oder Produktkategorie ein Repo pflegen. Aber ich habe noch nicht so richtig Belege für die eine oder andere Variante gelesen. Hast Du da ein Statement, dass das explizit angibt?
Hmm … soweit ich den Artikel verstehe, ist dort ausschließlich von Windows Engineers die Rede. Vorerst ist das also wirklich nur Windows. Ich fände es aber sonderbar, wenn sie nicht schrittweise die anderen Services integrieren würden. Falls irgendwer das neueste Word & Windows hat (ich weder noch), kann er ja mal die Debug-Informationen der Module analysieren, ob sie durchs selbe Build-System gelaufen sind. Debug-Informationen werden ja üblicherweise mitkompiliert (aber nur beschnitten ausgeliefert).
Ich finde solange es von der Entwickler-Usability OK ist, Monorepos inkl. Monoprojektstruktur ziemlich hilfreich. Refactorings und automatisierte Integrationstests lassen sich so sehr schön über alle Subprojekte durchführen.
Ich bin totaler Verfechter davon – aber ich bin auch Verfechter von der absoluten Minimalmenge Code. Mal schnell damit prahlen, dass man das größte Repository der Welt hätte, jagt mir eine Gänsehaut ein.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
dot
Establishment
Beiträge: 1654
Registriert: 06.03.2004, 19:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot » 16.08.2017, 14:58

Oh wow, ich war fest davon überzeugt dass ich hier upgedated hatte... nun auch bei mir das selbe... W T F!? :shock:

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3786
Registriert: 16.10.2002, 19:39
Alter Benutzername: atr_23
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid » 16.08.2017, 15:29

@Gänsehaut: Dito, kein Code ist der beste Code (jedenfalls wenn die Funktionalität stimmt :)).

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 16.08.2017, 16:40

Sie verändern das Layout der Kontextmenüs je nach Zustand der Solution. Links Standard, rechts während die Solution kompiliert:
56778567.png
Diese Vollidioten. Das ist so ziemlich das Schlimmste, was man machen kann. Wieso nicht das Layout so lassen, wie es ist, und die Funktionen einfach ausgrauen? Wieso haben sie das bei Clean geschafft und sonst bei nichts? Sind das die Accessability Improvements? Wieso muss ich nun zwei Layouts auswendig lernen, um nach Source Control zu kommen? Wieso lässt mich mein motorisches Gedächtnis nun zehn Mal am Tag auf die falsche Stelle klicken, wenn die Solution mal länger kompiliert als gewohnt? Wieso gehören die alle gefeuert?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 17.08.2017, 03:33

Nachtrag: Behoben mit Visual Studio 15.3.1.

In meinem 2015er Projekt kann ich Dateien, die ich via Add -> Existing Items hinzugefügt habe, nicht kompilieren. Es sieht so aus, als wären sie in den Projektdateien als Include eingetragen statt als Quelldatei. Wenn ich die Eigenschaften öffnen will, wird nur gesagt, die Datei hätte keine Eigenschaften.

Ein Tag Update 3 und ich habe einfach nur noch die Schnauze voll.
Zuletzt geändert von Krishty am 21.08.2017, 00:34, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 17.08.2017, 04:07

Bug Report für Drag & Drop: https://developercommunity.visualstudio ... m-win.html

Bug Report für Dateien, die sich nicht zu Projekten hinzufügen lassen: https://developercommunity.visualstudio ... tudio.html Nachtrag: Behoben mit Visual Studio 15.3.1.

Bug Report für wechselndes Layout in Kontextmenüs: https://developercommunity.visualstudio ... build.html … won’t fix.

Bitte upvoten, was ihr unterstützt.

Extra-Bugs:
  • Ich kann in Visual Studio keine Bugs upvoten. Da wird mir nur angezeigt „Voting is not available because this issue is resolved“ –.– Ich muss über die Webseite gehen.
  • Wenn ich Screenshots an meine Bug Reports anhängen will, stürzt Visual Studio einfach ab.
Zuletzt geändert von Krishty am 21.08.2017, 00:34, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 17.08.2017, 13:54

Bug Report dafür, dass der Bug Report nicht funktioniert: https://developercommunity.visualstudio ... d-scr.html
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Schrompf
Moderator
Beiträge: 3791
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf » 17.08.2017, 14:04

Danke, dass Du Dir die Zeit nimmst, alle Fehler zu reporten.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 17.08.2017, 14:06

Klar; jammern kann ja jeder :D Bitte wählt sie auch nach oben, denn seit 2015 wird nach Anzahl der Upvotes priorisiert.

————

Sag mal ist das die verstecke Kamera hier?! Die große Krishty-Show?! ICH WILL EINFACH NUR MEINE STIMME ABGEBEN
Untitled.png
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
dot
Establishment
Beiträge: 1654
Registriert: 06.03.2004, 19:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Jammer-Thread

Beitrag von dot » 17.08.2017, 15:16

Krishty hat geschrieben:Bug Report dafür, dass der Bug Report nicht funktioniert: https://developercommunity.visualstudio ... d-scr.html
Das durfte ich auch schonmal machen nachdem im alten connect bei zu langem Title der generierte Link nicht funktionierte (man musste den sinnlosen Junk nach der ID aus der URL löschen und dann ging's). Best experience ever. Man schreibt Bugreport, klick Submit und...landet auf Internal Server Error. Also nach dem eigentlichen Bugreport noch schnell einen Bugreport für das Bugreporting System schreiben. Und der wurde dann von irgendeiner Customer Relations Person in Indonesien gelöscht bevor irgendjemand ihn angeschaut hätte weil sie nicht verstanden hat worum es ging... -.-

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 18.08.2017, 13:17

Nachtrag: Behoben mit Visual Studio 15.3.1.

Wir müssen auf der Arbeit noch ein paar Projekte mit der 2015er Toolchain pflegen. Vorhin wollte ich da was ändern, und … die Properties funktionieren nicht.

Ehrlich jetzt. Sobald man ein Projekt auf die 2015er Toolchain umstellt, hat es keine Properties mehr. (Es sei denn, es sind MASM- oder HLSL-Dateien drin – dann hat es nur diese Properties.)

Bug Report: https://developercommunity.visualstudio ... -prop.html

Das erklärt auch, warum man keine Dateien mehr hinzufügen kann (einer der anderen Bugs oben).
  • 2015er Toolchain:
    • [*]alle Projekteigenschaften kaputt
      [*]kann keine Dateien zu Projekten hinzufügen
  • 2017er Toolchain:
    • kann Dateien zu Projekten hinzufügen, aber dann will der scheiß Dialog sie in ein Unterverzeichnis kopieren
Ich kann das alles nicht glauben. Sie haben über einen Monat lang den RC draußen gehabt und NIEMAND HAT GETESTET?!

Installiert bloß nicht Update 3. Wartet auf Update 4, wenn ihr vorhabt, halbwegs produktiv arbeiten zu können.
Zuletzt geändert von Krishty am 21.08.2017, 00:34, insgesamt 2-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 21.08.2017, 00:25

Viele Fehler wurden in Visual Studios aktueller Version (15.3.1) behoben – Toolset 2015 ist wieder nutzbar. Wow. Da hat sich wirklich was geändert in den letzten Jahren! Dafür muss ich anerkennend nicken. Sie haben zwar Scheiße gebaut, aber sie haben weniger als eine Woche gebraucht, um auf die Bug Reports zu reagieren und einen Fix auszuliefern.

[Es kann natürlich sein, dass sie das 2015er Toolset während des Updates de- und neuinstalliert haben, wie oft in den Tickets vorgeschlagen wurde. Meiner Beobachtung nach ist das aber nicht passiert.]

(Gehört in den Anti-Jammer-Thread, dann wäre aber der Kontext zu den Bug Reports verloren.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

antisteo
Establishment
Beiträge: 789
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: Jammer-Thread

Beitrag von antisteo » 21.08.2017, 13:50

Es gibt ein neues Buzzword: Nach Big Data kommt jetzt Big Software

(Canonical hat angefangen, ich hab gleich mal nen Definitiona-Artikel dazu geschrieben: https://launix.de/launix/was-ist-big-software/)
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 22.08.2017, 00:23

Wer Allokatoren schreibt, muss grundsätzlich einen Alignment-Parameter einbauen.

malloc() und die WinAPI (HeapAlloc()) machen es falsch, indem sie von einem Worst-Case-Alignment ausgehen. Auf den ersten Blick vereinfacht das viel, weil Alignment total wegfällt.

Selbstverständlich gibt es Typen mit härteren Anforderungen: SIMD braucht mindestens 16 Bytes Alignment. Will man was haben, das keine Cache Lines kreuzt? 64 Bytes. Synchronisierungsobjekte, die auf keinen Fall auf mehr als einer Page liegen dürfen? 4096 B.

Die Standard-Antwort ist, sich sowas schnell zusammenbauen, indem man die Allokation von Hand ausrichtet.

Dann büßt man aber sehr viel Sicherheit ein, weil man Padding ans Ende der Allokationen hängt. Der Application Verifier lässt sich geradezu lächerlich vorführen, weil er von einem Worst-Case-Alignment von 16 B ausgeht: Man kann einen einzelnen Buchstaben reservieren, aber 16 schreiben. Erst beim 17. kracht es, und das ist eine scheiß Ausbeute. *

(* Application Verifier hat eine Option, alle Allokationen ganz nach hinten zu schieben, indem man Alignment komplett aufgibt. In Kosequenz funktioniert Direct3D nicht mehr, GDI zeichnet nur noch die Hälfte, Standarddialoge wie „Datei öffnen“ funktionieren überhaupt nicht mehr. Da die Option mit fremdem Code fast immer abstürzt, und man sie nicht konsequent nur auf eigenen Code anwenden kann, ist sie nicht praktikabel.)

Ich habe also schnell alles von Hand um Alignment erweitert, und schiebe beim Debugging die Allokationen so weit nach hinten in die Blöcke, wie es das Alignment zulässt. Ich habe damit tatsächlich zwei Patzer getroffen, die mir vorher immer durchgegangen sind.

Ich hätte das alles nicht schreiben müssen, wenn HeapAlloc() einen Alignment-Parameter hätte. Dann hätte alles von Anfang an perfekt geklappt, auch mit D3D/GDI/etc.

————

Noch etwas, wo einen Padding in den Arsch beißen kann: Memory Mapped Files (denn die werden immer auf Page-Größe gepaddet). Wenn ich Testfälle für meine Parser schreibe, die mit EOF zu tun haben, padde ich die Dateien grundsätzlich auf 4096 B, so dass das EOF auf das erste ungültige Byte fällt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Biolunar
Establishment
Beiträge: 128
Registriert: 27.06.2005, 17:42
Alter Benutzername: dLoB

Re: Jammer-Thread

Beitrag von Biolunar » 22.08.2017, 14:43

Krishty hat geschrieben:Wer Allokatoren schreibt, muss grundsätzlich einen Alignment-Parameter einbauen.

malloc() und die WinAPI (HeapAlloc()) machen es falsch, indem sie von einem Worst-Case-Alignment ausgehen. Auf den ersten Blick vereinfacht das viel, weil Alignment total wegfällt.

Selbstverständlich gibt es Typen mit härteren Anforderungen: SIMD braucht mindestens 16 Bytes Alignment. Will man was haben, das keine Cache Lines kreuzt? 64 Bytes. Synchronisierungsobjekte, die auf keinen Fall auf mehr als einer Page liegen dürfen? 4096 B.

Die Standard-Antwort ist, sich sowas schnell zusammenbauen, indem man die Allokation von Hand ausrichtet.

Dann büßt man aber sehr viel Sicherheit ein, weil man Padding ans Ende der Allokationen hängt. Der Application Verifier lässt sich geradezu lächerlich vorführen, weil er von einem Worst-Case-Alignment von 16 B ausgeht: Man kann einen einzelnen Buchstaben reservieren, aber 16 schreiben. Erst beim 17. kracht es, und das ist eine scheiß Ausbeute. *

(* Application Verifier hat eine Option, alle Allokationen ganz nach hinten zu schieben, indem man Alignment komplett aufgibt. In Kosequenz funktioniert Direct3D nicht mehr, GDI zeichnet nur noch die Hälfte, Standarddialoge wie „Datei öffnen“ funktionieren überhaupt nicht mehr. Da die Option mit fremdem Code fast immer abstürzt, und man sie nicht konsequent nur auf eigenen Code anwenden kann, ist sie nicht praktikabel.)

Ich habe also schnell alles von Hand um Alignment erweitert, und schiebe beim Debugging die Allokationen so weit nach hinten in die Blöcke, wie es das Alignment zulässt. Ich habe damit tatsächlich zwei Patzer getroffen, die mir vorher immer durchgegangen sind.

Ich hätte das alles nicht schreiben müssen, wenn HeapAlloc() einen Alignment-Parameter hätte. Dann hätte alles von Anfang an perfekt geklappt, auch mit D3D/GDI/etc.

————

Noch etwas, wo einen Padding in den Arsch beißen kann: Memory Mapped Files (denn die werden immer auf Page-Größe gepaddet). Wenn ich Testfälle für meine Parser schreibe, die mit EOF zu tun haben, padde ich die Dateien grundsätzlich auf 4096 B, so dass das EOF auf das erste ungültige Byte fällt.
Unter Linux ist es etwas besser. Dort gibt es nur zwei Möglichkeiten vom Kernel Speicher anzufordern: brk() und mmap(). brk() funktioniert genau wie ein Stack, d.h. man kann damit nur nach LIFO (last-allocated-first-deallocated) Speicher bekommen und freigeben. Folglich ist der Syscall für den Userspace sozusagen tabu, falls man die libc verwendet, weil diese intern Buchhaltung über den Speicher führen muss. mmap() ist da deutlich flexibler (vergleichbar mit VirtualAlloc), gibt aber nur Adressen mit PAGE_SIZE (= 4 KiB) alignment zurück, was eine ziemliche Verschwendung für kleine Allokationen ist. Wenn man die libc also nicht weglassen möchte, kann man eigentlich nur die libc Allokatoren verwenden: malloc, calloc, realloc, posix_memalign (seit POSIX 2001), aligned_alloc (seit C11). Zumindest gibt es hier mit posix_memalign und aligned_alloc inzwischen Allokatoren, bei denen man das Alignment angeben kann.

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 28.08.2017, 12:32

Krishty hat geschrieben:Bug Report dafür, dass der Bug Report nicht funktioniert: https://developercommunity.visualstudio ... d-scr.html
Wird mit einem kommenden Release behoben, sagen sie.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 31.08.2017, 14:04

Dateisystem auf externer Festplatte beschädigt. CHKDSK schafft es nicht, alle Fehler zu beheben. Was tun?

SeaTools (für Seagate-Festplatte) oder WD Data LifeGuard Diagnostics (für Western Digital-Festplatten) sollen helfen, wenn man StackOverflow glaubt.

NICHT BENUTZEN! Die Gammelsoftware hat meine USB-Geräte zerstört.

Das WD-Tool konnte die externe WD-Festplatte nicht erkennen. SeaTools hat die Platte als defekt erkannt, konnte aber sonst nichts tun.

… und mein USB-Stick wurde plötzlich nicht mehr angezeigt. Auch nicht im Disk Management. Und von anderen Computern wird er auch nicht mehr erkannt.

Die (defekte) externe Festplatte wird mir ebenfalls nicht mehr angezeigt. Ich habe sie noch nicht ab- und wieder angeklemmt, aber ich befürchte das Schlimmste. Außerdem habe ich noch eine riesige Datenplatte ohne Backup, deren verschlüsseltes Volume noch fehlerfrei läuft, aber … scheiße, ich habe Angst.

SeaTools und das WD-Zeug sind beide billigste asiatische Gammelsoftware. Brauchen Admin-Rechte um zu starten [nicht erst für das Prüfen einer Platte]; drücken einen Ladebalken als TOPMOST-Fenster auf den Bildschirm; vom Setup bis zum Schließen billig billig billig. Dass sie meine Hardware zerstören, hätte ich aber nicht gedacht.

Nachtrag: USB-Stick und kaputte Festplatte waren als Wechsellaufwerke angeschlossen. Das Datengrab nicht (hängt so lange dran, dass Windows es wie built-in behandelt); vielleicht ist es dadurch verschont geblieben.

Nachtrag 2: Festplatten von WD sollte man sowieso nicht kaufen. Die Schweine verschlüsseln den Datenstrom, aber geben euch keinen Schlüssel. In der Folge könnt ihr die Festplatte nicht aus dem USB-Gehäuse nehmen (dann ist der Inhalt nur noch verschlüsselter Kauderwelsch) und könnt keine Datenrettung über SATA/IDE betreiben, sondern müsst die Platte an deren kostenpflichtige Dienste schicken. Ich habe schon vor Jahren aufgehört, von denen zu kaufen, aber die nun kaputte Platte war halt noch von vorher.

Der NSA geben sie die Schlüssel aber vermutlich trotzdem.

Nachtrag 3: Bei anderen Herstellern ist das bestimmt genau so, aber bei WD weiß ich es halt definitiv. Große Auswahl hat man eh nicht mehr – wie viele Festplattenhersteller gibt es noch? Drei? Zwei? Bekackte Monopole

Nachtrag 4:
List of current hard disk drive manufacturers:
  • Seagate Technology, including its subsidiary brands Maxtor and Samsung
  • Toshiba
  • Western Digital, including its subsidiary brand HGST
Und nein, das hat nichts mit SSDs zu tun. Das waren schon nur noch vier, bevor SSDs aufkamen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3786
Registriert: 16.10.2002, 19:39
Alter Benutzername: atr_23
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid » 31.08.2017, 17:18

Oje, Du Armer!

Mir hat mal https://www.nucleustechnologies.com/data-recovery.html weiter geholfen. In meinem Fall hatte ich aber nur die Master File Table oder sowas verloren.

Pass auf mit TestDisk, damit hatte ich (weil DAU) vorher noch mehr Schaden angerichtet....

Benutzeravatar
Jonathan
Establishment
Beiträge: 1235
Registriert: 04.08.2004, 20:06

Re: Jammer-Thread

Beitrag von Jonathan » 03.09.2017, 09:28

Das mit den verschlüsselten Daten finde ich interessant, gibts dazu irgendwo zusätzliche (+ halbwegs verlässliche) Informationen?
Lieber dumm fragen, als dumm bleiben!

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 03.09.2017, 12:02

Finde meine Originalquellen nicht mehr, aber hier ist ein schnell gegoogelter Artikel: http://www.baldnerd.com/should-you-avoi ... ncryption/
It was a Western Digital drive, and for some reason they had manufactured all the drives of the same model with the same decryption key.
OH FUCK DAS SAGT SCHON ALLES
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Krishty
Establishment
Beiträge: 6775
Registriert: 26.02.2009, 12:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty » 04.09.2017, 13:43

Die Rentenversicherung schickt mir Kopien meiner Briefe, die via Web.de Freemail ausgedruckt wurden.

Irgendwo werden also meine Einkommensdaten digitalisiert, an das Web.de-Postfach einer Sachbearbeiterin geschickt, und die druckt das Zeug dann wieder aus. Und Web.de parst meine Einkommensnachweise, um Werbung drauf abzustimmen.

Kann man gegen sowas klagen?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne

Benutzeravatar
Tiles
Establishment
Beiträge: 1254
Registriert: 11.01.2003, 14:21
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Tiles » 04.09.2017, 15:00

Klagen kann man gegen alles. Das Problem ist da den Verantwortlichen an die Strippe zu bekommen. Der este Weg wäre hier wohl direkt mal die Rentenversicherung anzuschreiben was der Scheiss soll. Solche Sachen haben bei Web.de nichts verloren.
Free Gamegraphics, Freeware Games http://www.reinerstilesets.de
Die deutsche 3D Community: http://www.3d-ring.de

Antworten