0x1b - ESCAPE
HTML PDF Postscript
 Deprecated Code 
Computer Geschrieben von Beat Rubischon (Link) am Sonntag, 16. Dezember 2007, 17:52
aus dem *leisevormichhinfluch* dept.

Mein Backup Mailserver wartete schon etwas länger darauf, in meinen BigBrother aufgenommen zu werden. Ein erstaunlich kompliziertes Problem, wie ich einiges später sehen musste.

BigBrother ist einen Haufen Shellscripts und das eine oder andere kleinere C-Programm. Nicht dass ich ihn besonders mag - die Alternativen sind allesamt aber weniger stark oder mit einer grossen Lernkurve versehen. Also versuche ich lieber alten Code zum Laufen zu bringen als umzustellen.

Doch tauchten da so hässliche Kernel Meldungen auf:
bb[23815]: segfault at 0000000042bac62e 
 rip 0000000000401564 rsp 00007fff42ba9da0 error 4
bb[23962]: segfault at 000000006d71e62e 
 rip 00000000004014db rsp 00007fff6d71c910 error 4
bb[24233]: segfault at ffffffff99efb631 
 rip 00000000004014db rsp 00007fff99ef9f60 error 4
Viel Debugging später hatte ich den Uebeltäter:
  bbdisplays = (char *) getenv("BBDISPLAYS");
#if DEBUG
  debug("Sending: ** %s ** to %s - %s\n",data,machine,bbdisplays);
Ist BBDISPLAYS nicht gesetzt, so ist der Pointer auf NULL gesetzt. Entweder der GCC oder aber die libc machen dann im printf() einen Segfault - so wie es aussieht aber nur unter Debian Etch x86_64.

Das funktionierende 32-Bit binary nehmen? Keine Chance, einmal mehr fehlen die 32-Bit Libraries. Die Rettung war gcc --static ... - nicht schön, aber wenigstens funktional.

So schön 64-Bit Linux im HPC Umfeld ist, so viel Aerger bereitet es im täglichen Leben. Vor allem dann, wenn eine reine 64-Bit Distribution eingesetzt wird.

Permalink