Camera Model: Nikon D70
Lens: Nikon Nikkor 50mm 1:1.8
Focal Length: 50.00 mm
Focal Length (35mm Equiv): 75 mm
Exposure Time: 1/50 sec
F-Number: f/1.8
Shooting mode: Aperture priority
Exposure bias: -2/3 EV
Flash: No
ISO: 200
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.
Eine 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:
void *array[10]; size_t size; char **strings; size_t i; size = backtrace (array, 10); strings = backtrace_symbols (array, size); printf ("Obtained %zd stack frames.\n", size); for (i = 0; i < size; i++) printf ("%s\n", strings[i]); free (strings); |
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:
yourbinary [0x80b9e0c] yourbinary [0x80b9f02] yourbinary [0x8054abd] yourbinary [0x805124f] yourbinary [0x8050078] yourbinary [0x808d6f3] yourbinary [0x804bd42] yourbinary [0x804b04e] libc.so.6(__libc_start_main+0xe5) [0xb7d0f775] yourbinary [0x804a701] |
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
- RT @phreak_out666: RT @lufthansen sehr cool ! http://bit.ly/cpOkX Linux Babysitter 😀 #
gezwitschert
- http://twitpic.com/fymd7 – @having #
- http://twitpic.com/fz66p – expedition #
- RT @denis2342: enabling subpixel fontsmoothing on snow leopard with non-apple displays http://bit.ly/2AdtRT #
gezwitschert
- aktueller 24h permanent Ohrwurm: http://bit.ly/RYGxD
#archive # - http://twitpic.com/fp3uj – Masterplan Küche #
- @saoirse Tja, da kann Jesus einpacken 😉 in reply to saoirse #
gezwitschert
- "Backup? oft gehört aber keine Ahnung wie man das macht meinst du Formatieren?" http://tinyurl.com/ltao7g #dau #
gezwitschert
- Mein Highlight heute in den Fotofeeds: http://www.durhamtownship.com/July0909.html #
- Ist eigentlich jedem klar, dass das Zwischenlager in Gorleben überirdisch ist? Klick: http://www.zeit.de/2003/48/Gorleben (via @unixtippse) #
gezwitschert
- @darktwit das kannste mit kleinen Kindern jeden Tag haben 😉 in reply to darktwit #
- der ahoi polloi ist wieder großartig http://ahoipolloi.blogger.de/stories/1472842/ #steinmeier #ackermann #
- Quäle mich mit #powerpoint rum. Muss einen Vortrag halten. Wenig Ahnung vom Thema. Die Q&A-Runde wird sicher unterhaltsam. #
- #Tetris CGI challenge: http://tetrisapp.appspot.com/ #
- @schwadroneuse Schönbohm als Rocker wäre cool. Garnisionskirche, Preußen und Exerzierplätze sind seine Steckenpferde. in reply to schwadroneuse #
- RT @elo: Vererbung ist der objektorientierte Weg zum Reichtum. #
- http://twitpic.com/fc9fa – das Geld liegt ja quasi auf der Straße (bzw. im Sandkasten). Man muss sich nur bücken und zur Bank gehen. #
- @danielpunkt Kauf sie Dir, leg sie in den Schrank und nach dem ersten Update (10.6.1) kannst Du die DVD mit ruhigem Gewissen einlegen… in reply to danielpunkt #
- @danielpunkt ausserdem: Karma und so. Denk an die fleissigen Entwickler in Cupertino, die wollen ja auch von etwas leben. in reply to danielpunkt #
- Was kann im 0.1mm Bereich genau zeichnen und drucken? OpenOffice versagt in der Beziehung total, Photoshop geht so. Ist für http://3.ly/Aa8 #
gezwitschert
- RT @nixspam: Warum Ihr Webserver vielleicht gerade beschlagnahmt wird: http://bit.ly/MYTk #
- Freifunk-News: Antennenbautheorie http://blog.freifunk-potsdam.de/?p=512 #
- 25 Great Pirate Bay Alternatives: http://bit.ly/2yJDie #
- http://twitpic.com/f7jwt – @having #
- http://twitpic.com/f873t – neue Karre #
gezwitschert
- Verbringe den Abend auf diversen car-hifi Webseiten. Hätte auch nicht gedacht, dass es mal so mit mir enden wird… 😉 #
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 #
Frank
Camera Model: Nikon D90
Lens: Nikon Nikkor 50mm 1:1.8
Focal Length: 50.00 mm
Focal Length (35mm Equiv): 75 mm
Exposure Time: 1/1600 sec
F-Number: f/2.8
Shooting mode: Aperture priority
Exposure bias: 0 EV
Flash: No
ISO: 100
Image at flickr, large version
gezwitschert
- erfreue mich gerade an 44 Leningrad: http://www.myspace.com/44leningrad #
- Heute gelernt: Lastschriften kann man im Voraus nicht verhindern, nur hinterher widerrufen. Ob sich bei mir die Inkassomafia meldet? #
gezwitschert
- back from #har2009 now fetching all tosti-pictures 😉 #
- http://twitpic.com/e8efm – #har2009 soup kitchen #
- http://twitpic.com/e8ess – nerds… 😉 #2009 #
- http://twitpic.com/e8ez1 – not yet finished #har2009 #
gezwitschert
- #har2009 GMS network is up and running: http://bit.ly/Hm1iS #
- http://twitpic.com/dzaqa – #har2009 #rfid #sniffer #soldering #workshop. #SMD is f*ckin' tiny . #
gezwitschert
- http://twitpic.com/du6f8 – network cable diy #
- http://twitpic.com/dvzz2 – the tit tent #har2009 #
- come to the cbase-dome, the have drinks, music and a disco-ball 😉 #har2009 #
- come to the cbase-dome, they have drinks, music and a disco-ball 😉 #har2009 #
har2009: Eindrücke
Videoschnipsel von anderen Besuchern:
har2009: Tag 2 – guten Morgen ;-)
Hab viele stimmungsvolle Videoschnipsel aufgenommen, scheitere leider daran, die unter Linux zusammenzuschneiden. Ich will ein MacBook… 😉
gezwitschert
- #har2009 #video #streaming http://www.rehash.nl/ – opening ceremony starts in a few seconds #
- great – 802.11a #wifi at #har2009 is quiet reliable. But the video guy in monty hall starts singing … can s/o please stop him? 😉 #
- @psi36 don't panic 🙂 There four days to go and it will be great 🙂 in reply to psi36 #
- is there a _real_ url for the #har2009 video streams? The flash website does not work for me 🙁 #
- http://twitpic.com/dpqm4 – #har2009 my stuff, before setting up the tent #
- http://twitpic.com/dpqt3 – #har2009 inbound numbers. Did I mention already, that the #poc is great? 🙂 #
- can anyone here at #haar2009 borrow me a dect handset? I dont want to spend 40 euros on something I do need only once. #