tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
336
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    soUrcerer soUrcerer ist offline Grünschnabel
    Registriert seit
    Jun 2004
    Beiträge
    2
    Hallo werte Community,

    ich habe ein merkwürdiges Problem mit einem unserer CGI Webservices, bin am Ende meiner Ideen angelangt und brauche dringend eure Hilfe.

    Es ist in C geschrieben und lief eigentlich wunderbar. Bei uns in der Firmenumgebung läuft es nach wie vor, jedoch beim Kunden gibt es einen Fehler 500: Premature End Of Script headers.

    Nun habe ich schon zwei Tage mit der Problemlösung verbracht und viel danach gegoogled und alls mögliche probiert, jedoch treibt mich der Fehler in den Wahnsinn.

    Zunächst konnte ich den Fehler bei uns nicht einmal reproduzieren. Irgenwann habe ich dann mit provuzierten Fehlerausgaben (perror) und filedescriptoren (STDERR_FILENO) herumgespielt (geschlossen, umgeleitet, etc.), worauf hin ich auch irgenwann diesen 500er vom Server quittiert bekam.

    Toll dachte ich, da hab ich die Lösung. Doch nach rekonstruktion des alten Quellcode und neuem kompilieren lief auch diese Binary (und auch andere definitv früher lauffähige Kompilate) nichtmehr; mit dem selben Fehler.

    Dann habe ich weiter mit den Filedescriptoren herumgespiet und irgendwann, lief der Service dann bei uns wieder. Die Binarys hab ich zum Kunden geschickt, aber sie laufen dort auch nicht. Sogar der Code in der ursprünglichen Form (der anfangs lief, dann irgendwann nichtmehr) läuft jetzt wieder.


    Ich kann mir nicht erklären, was da die Ursache ist... Frust.

    Wie kann es sein, dass ein und der selbe Code mal läuft und mal nicht? Und warum läuft er hier vor Ort, aber beim Kunden nicht (selbe Zielplattform: Solaris 10)?

    Server und Dienste habe ich mehrfach restartet (der Kunde auch).

    Der Fehler deutet ja darauf hin, dass vor der Ausgabe der HTTP Header, irgendwas anderes ausgegeben wird. Aber was?

    Ich habe den Service testweise mal auf ein Minimum reduziert:
    Code :
    1
    2
    3
    4
    5
    6
    
    int main (int argc, char **argv)
    {
        printf("Content-Type: text/html\n\n");
        printf("test");
        return 0;
    }

    Auch dieses Codeschnippselchen lief dann nichtmehr. Nach Spielerei mit den Filedescriptoren, bekam ich es aber wieder zum laufen.

    Kann es irgendwas mit Ausgaben zu tun haben, die in irgend einem Puffer hängengeblieben sind? Aber welche Puffer ist nach einem Reboot des Servers noch immer gefüllt?!

    Habt ihr eine Idee? Eine Info, wie man sowas debuggen kann, wäre auch schon hilfreich.

    Noch ein paar Infos zur Platform:

    Solaris 10
    Apache 2.0.59
    Compiler gcc 3.4.6

    Für eure Antworten bedanke ich mich jetzt schon

    viele Grüsse
    Michael
     

  2. #2
    soUrcerer soUrcerer ist offline Grünschnabel
    Registriert seit
    Jun 2004
    Beiträge
    2
    Hallo leute,

    es läuft wieder!

    Ich vermute den Erfolg hat das Abschalten der Pufferung mittels setvbuf gebracht, ganz sicher bin ich aber erst, wenn ich nochmal mit dem Admin gesprochen habe.

    Es könnte auch ein ganz banaler Konfigurationsfehler vorgelegen haben. Ich tippe aber eher auf den Puffer.


    Danke für eure Anteilnahme,

    viele Grüsse

    Michael
     

Ähnliche Themen

  1. Merkwürdiges Session Problem
    Von Baldus im Forum PHP
    Antworten: 13
    Letzter Beitrag: 10.02.08, 22:52
  2. Merkwürdiges Material Problem
    Von Simon la Croix im Forum Cinema 4D
    Antworten: 12
    Letzter Beitrag: 22.01.08, 10:51
  3. Merkwürdiges Problem mit file()
    Von Moritz123 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 20.05.05, 21:09
  4. Merkwürdiges Problem mit Dateiupload
    Von Moritz123 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 20.10.03, 19:29
  5. merkwürdiges problem
    Von Montz im Forum Flash Plattform
    Antworten: 13
    Letzter Beitrag: 15.06.01, 22:46