Im schwarzen Moor

Im schwarzen Moor

Well, the HDR is completely overdone, the sharpening destroys the clouds … but I like it somehow.

Camera Model: Nikon D90
Lens: Tokina 12-24mm 1:4 DX
Focal Length: 12.00 mm
Focal Length (35mm Equiv): 18 mm
Exposure Time: 1/200 sec, 1/100 sec, 1/40 sec,
F-Number: f/7,1 f/5,0 f/4,0
Shooting mode: Program automatic
Exposure bias: 0 EV
Flash: No
ISO: 100
Image at flickr, large version

Die SPD in Thüringen

Die Situation in Thüringen fasst Fefe treffend zusammen: „Die Linken haben trotz mehr Sitzen freiwillig auf das Ministerpräsidentenamt verzichtet, damit die SPD keine Ausrede hat, um mit der CDU zu koalieren, und die machen es trotzdem.
Tja, auf die SPD ist – wie immer – Verlass. Vielleicht knacken sie ja bei der nächsten Bundestagswahl die 5% Hürde – in umgekehrter Richtung.

Kanga-bloody-roo

Kanga-bloody-roo

Camera Model: NIKON D90
Lens: Nikon AF-S VR 70-200mm/2.8G IF-ED
Focal Length: 200 mm
Focal Length (35mm Equiv): 300 mm
Exposure Time: 1/80
F-Number: f/5,0
Shooting mode: Aperture priority
Exposure bias: -1/3 EV
Flash: No
ISO: 100
Image at flickr, large version

kurzer Schauer

kurzer Schauer

Camera Model: Nikon D90
Lens: Nikon AF-S DX Nikkor 18-105mm 1:3.5-5.6G ED VR
Focal Length: 105.00 mm
Focal Length (35mm Equiv): 157 mm
Exposure Time: 1/25 sec
F-Number: f/5,6
Shooting mode: Aerture priority
Exposure bias: -1/3 EV
Flash: No
ISO: 100
Image at flickr, large version

An der schönen Isar

An der schönen Isar

Camera Model: Nikon D90
Lens: Nikon AF-S DX Nikkor 18-105mm 1:3.5-5.6G ED VR
Focal Length: 58.00 mm
Focal Length (35mm Equiv): 87 mm
Exposure Time: 1/640 sec
F-Number: f/6,3
Shooting mode: Program automatic
Exposure bias: 0 EV
Flash: No
ISO: 100
Image at flickr, large version

Stacktrace gefällig?

Gelegentlich braucht man einen Stacktrace. Ich bin heute über ein Problem gestolpert, bei dessen Lösung mir ein Stacktrace sehr helfen würde.

20090907_dddlogoEine unserer Bibliotheken kümmert sich um Speichermanagement. Das sind kleine Wrapper um malloc / free, die Buchhaltung über den Speicher führen und bei Fehlern entsprechende Meldungen ausgeben. Also der übliche Weg für das Speichermanagementproblem in C, es gibt duzende Lösungen die ähnlich funktionieren.

Das Problem heute war, dass Speicher freigegeben werden sollte, der nie allokiert war oder schon einmal freigegeben wurde. Er war auf jeden Fall nicht mehr als belegt gekennzeichnet und konnte somit nicht freigegeben werden. Programme ohne solch ein Speichermanagement würden an dieser Stelle abstürzen, bei uns taucht nur eine Meldung im Log auf.

Diese Meldung war mein Startpunkt für die Suche. Die Aufrufe der free-Wrapperfunktion sind jedoch in vielen Sourcefiles auf tausenden Zeilen Code verstreut. Wie soll man dort den einen Aufruf finden, der die Ursache für die Meldung ist?

Genau: ein Stacktrace muss her. Der schmutzige Weg wäre, das Programm mutwillig zum Absturz zu bringen. Dann kann man sich aus dem core-File den Stack rauspopeln und weiss, woher der Aufruf kommt.

Es gibt jedoch etwas viel schöneres: backtrace() aus der glibc. Mit ein paar Zeilen Code kann man an jeder beliebigen Stelle des Programms einen Stacktrace erzeugen:

Ich habe also in der free-Wrapperfunktion backtrace() eingebaut und konnte mir den Stacktrace für den Fehlerfall ausgeben. Im Log erhält man dann etwa diese Ausgabe:

Ok, das sieht schon mal gut aus 😉 Jetzt muss man nur noch yourbinary in den ddd laden um die Speicheradressen in Codezeilen umzuwandeln – et voilà: schon ist die bösartige Zeile Code identifiziert.

gezwitschert

gezwitschert

gezwitschert

  • http://twitpic.com/ep90m – die kollegen hier twittern noch manuell… #
  • Rekord: Die Anfang April bestellte Archive-CD ist heute eingetroffen. Hab sogar aus Respekt vorm Künstler den BitTorrent-Client ruhen lassen #
  • Klicke Fotos und trinke heimlich Bier #

Pages: <<< 1 2 3 ... 6 7 8 9 10 ... 94 95 96 >>>