Re: CPU Auswahl beim Uebersetzen

From: Marc Santhoff <M.Santhoff(at)t-online.de>
Date: Wed, 22 Jun 2005 16:20:35 +0200

Am Mittwoch, den 22.06.2005, 11:12 +0200 schrieb Oliver Fromme:
> Marc Santhoff <M.Santhoff(at)t-online.de> wrote:
> > Ein Programm lädt (unter anderem) die GTK-Bibliothek und verabschiedet
> > sich unter noch nicht ganz klaren Umständen mit Signal 4 (Illegal
> > Instruction).
>
> Ist das reproduzierbar, d.h. tritt es immer an derselben
> Stelle auf? Wenn es variiert, könnte es ein Hardware-Pro-
> blem (hauptsächlich RAM) bedeuten.

Nicht wirklich. Bisher weiß ich nur, daß es entweder mit der Umleitung
von stdout oder auch dem Umschalten vom X-Server zur Textkonsole
(STRG-ALT-Fn) zu tun hat. Und Hardware ist es nicht, es tritt auf
unterschiedlichen Exemplaren identischer Hardware auf.

> Aber auch, wenn es nicht variiert, kann es ein Hardware-
> Problem sein, z.B. ein gekipptes Bit in der Library auf
> der Festplatte.

Das nicht, aber ich könnte mir vorstellen, daß das dump-Image der
Master-Kopie eine Macke hat. Das werde ich nochmal als virtuelle Platte
anschließen und die Bibliothek prüfen oder besser austauschen.

> Eine dritte Möglichkeit wäre, daß es sich um einen obskuren
> Bug in der Library handelt (z.B. eine Art Buffer-Overflow),
> der dazu führt, daß im Code irgendwo ein Byte überschrieben
> wird. Also ähnlich, wie dies bei manchen Exploits gezielt
> versucht wird.

Kann bei GTK1.2 schon sein, da sind nach meiner Erfahrung schon noch
eine Handvoll Bugs drin.

> > Ich bin aber sicher, daß dieses Programm auf allen i386ern
> > laufen kann und keine Sonderbefehle der neueren CPU-Modelle benutzt.
> >
> > Ein core-dump sagt mir, daß der Fehler in einer Funktion in der GTK-lib
> > auftritt. Die ist aber mit ziemlicher Sicherheit mit einer make.conf
> > Übersetzt worden, in der kein CPU-Typ bestimmt ist.
> >
> > Meine Frage nun: Wie arbeitet gcc auf einem FreeBSD(4), wenn man in
> > make.conf nichts weiter angibt, ich hatte angenommen, daß dann ebenfalls
> > alle i386er CPUs untzerstützt werden...
>
> Das ist korrekt.

Ich liebe konkrete Aussagen. :)

> > Ganz ausschließen kann ich nicht, daß diese Bibliothek aus einem Package
> > stammt, also nicht klar ist, wie sie erstellt wurde. Natürlich wird sie
> > neu gebaut und gestested, aber trotzdem: Ist meine Annahme richtig, das
> > eine ohne CPU-Deklartation übersetzte Bibliothek oder ein Programm auf
> > allen Unterstützten CPUs laufen sollte, ohne ungültige Maschinencodes zu
> > benutzen?
>
> Ja, die Annahme ist richtig. Der Code wird zwar für den
> jeweiligen CPU-Typ optimiert, d.h. er läuft möglicherweise
> auf anderen Prozessoren ineffizient, aber er _sollte_ auf
> allen CPU-Typen prinzipiell laufen.
>
> Im Zweifelsfall kannst Du »NO_CPU_CFLAGS=true« in Deine
> /etc/make.conf schreiben, um auch diese Optimierung noch
> auszuschalten. Du mußt dann natürlich alles betreffende
> neu compilieren, vor allem auch die Libraries. Aber ich
> glaube eigentlich nicht daran, daß das die wirkliche Ur-
> sache des Problems ist.
>
> Ein Neucompilieren könnte das Problem natürlich trotzdem
> beheben, weil die Library dann an einer anderen Stelle der
> Festplatte landet (falls es an der Festplatte liegt), oder
> weil durch geänderte Optimierungen andere Code-Pfade ent-
> stehen, so daß sich ein Overflow-Bug nicht mehr in dieser
> Form bemerkbar macht (falls es ein solcher Bug ist).

Wie oben erwähnt, es ist nicht eine Festplatte sondern verschiedene
Exemplare von CF-Karten. Da aber jüngst ein anderer Fehler sein
häßliches Haupt erhoben hat komme ich weder hiermit noch mit den
CF-Geometrie-Schwierigkeiten im Moment vorwärts.

Wenn ich wieder suche werde ich sicher dem Rat von Bernd folgend und
nochmal das komplette System und Programm mit benötigten ports in einer
chroot-Umgebung neu bauen, damit erschlage ich auch gleich die
anstehende Systemaktualisierung. Eine Prüfsumme über die libgtk habe ich
leider nicht zur Verfügung, mal gucken ob es mir gelingt, den Fehler
zielsicher zu reproduzieren...

Danke,
Marc

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 22 Jun 2005 - 16:23:22 CEST

search this site