...someplace, where there isn't any trouble? Do you suppose there is such a place, Toto?

Prefload Update

Zwischenzeitlich ist ein Update meines Prefload-Tools entstanden, das rekursiv nach Dateien sucht, die überlappende bevorzugte Ladeadressen haben. An dieser Stelle hatte ich das Tool ursprünglich vorgestellt.

Die neue Version behebt einen peinlichen Bug: Die alte Version überprüfte nämlich nur ob Kollisionen zwischen DLLs vorhanden waren, aber nicht, ob nicht die bevorzugte Ladeadresse einer Datei auf 0x10000000 lag. Dies ist die Ladeadresse einer ungebasten PE-DLL. So konnte bei den zu prüfenden Dateien immer genau eine Durchschlüpfen, die ungebaset war, solange sie die einzige ungebasete war.

Ausserdem kennt die neue Version die Kommandozeilenoption "-i". Mit dieser Option werden alle gefundenen .NET-Assemblies unter den zu untersuchenden Dateien ignoriert. Das ist relativ geschickt, weil .NET-Assemblies by default alle an die Adresse 0x400000 geladen werden (also genau dieselbe, die standardmäßig eine native Exe-Datei hat, warum auch immer). Der C#-Compiler von MS (csc.exe) kennt zwar den Kommandozeilenschalter "/baseaddress:<address>", aber erstens weiß ich nicht, ob ungebasete .NET-Assemblies ueberhaupt ein Problem darstellen und zweitens haben die .NET-Junkies unter meinen Kollegen gerade ganz andere Probleme, als ihre Assemblies korrekt zu basen. Deswegen, und um meinem Buildmaster die Arbeit zu erleichtern (er muß sonst jedes neue .NET-Assembly in seine Ausschlußliste aufnehmen), ist diese Kommandozeilenoption todschick.

Die neue Version kann man hier downloaden.

Trackback address for this post

This is a captcha-picture. It is used to prevent mass-access by robots.
Please enter the characters from the image above. (case insensitive)

No feedback yet

Comments are closed for this post.