Eddie: Formular hat 70%-ige Absturzrate - nicht rekonstruierbar

Hallo allerseits,

ich habe ein Formular, das als Schnittstelle zur Datenbank dient.

Das Prinzip ist Folgendes:

1.a) Formular anzeigen,
1.b) (eventuell) schreiben,
1.c) SPEICHERN (OK-Button)

2.a) selbes Formular wird wieder angezeigt (ggf. mit aktualisiertem Inhalt)
2.b) schreiben
2.c) ...

Tja, aber manchmal (viel zu oft) stürzt beim Empfangen des aktualisierten Formulars (2.a oder 3.a ...) der gesamte IE ab. Speichern geht also noch, die Datenbank wird sogar aktualisiert UND das Script terminiert (sendet also) - erst dann folgt der Absturz.
Das passiert auch, wenn garnichts geändert wird, sondern einfach nur die bestehende Version gesichert wird (also kein Datenbank-Update erfolgt).

Wenn ich NICHTS ändere UND ausnahmsweise kein Absturz stattfindet, gleicht sich der jeweils erhaltene Code vollkommen (also im Beispiel die Versionen 1.a und 2.a). Also scheint es auch nicht am Seiteninhalt zu liegen.

  • Der Code ist valide - sowohl in Bezug auf HTML, als auch auf CSS.
  • Eigentlich kann es auch garnicht am Code liegen, denn 1.a (im obigen Beispiel) wird zu 100% korrekt angezeigt.
  • Betroffen scheinen alle IE-Versionen zu sein, und zwar weltweit in mehreren hundert verschiedenen Internet-Cafes (dort sitzen naemlich meine "Kunden").

Was meint ihr, passiert zwischen 1.c und 2.a ? Kann es an PHP oder Apache liegen?

Danke für eure Hilfe,
Eddie

--
Old men and far travelers may lie with authority.
  1. Hello Eddie,

    was enthält denn deine Seite für Codes. AUch JavaScript?
    Ist das generierte Ergebnis valide?
    Wie groß ist die Zeilenlänge des übermittelten HTML-Codes?
    Was bedeutet: "stürzt ab"?

    Wie macht sich das denn genau bemerkbar?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hallo Tom,

      was enthält denn deine Seite für Codes. AUch JavaScript?

      ja, auch JavaScript. Ich werde mal versuchen, es ohne JavaScript zu rekonstruieren, kann mir aber nicht vorstellen, dass es daran liegt. Wie gesagt: beide Versionen (1a und 2a) enthalten EXAKT denselben Code - bis auf die redundanten Leerzeichen am Ende des Codes. Also auch EXAKT dasselbe JavaScript.

      Ist das generierte Ergebnis valide?

      Ja.

      Wie groß ist die Zeilenlänge des übermittelten HTML-Codes?

      Minimum 600 Zeilen, 22.000 Zeichen
      Geht aber auch bis 2500 Zeilen und 140.000 Zeichen (mit zunehmender Groesse des Formularinhalts) - oder sogar mehr.
      Aber Absturz-technisch gibt es zwischen der kleinen und der grossen Seite keinen Unterschied.

      Was bedeutet: "stürzt ab"?

      Eine Fehlermeldung, die es zu bestaetigen gilt ("... wird beendet"), danach schliessen sich alle IE-Fehler bedingungslos.
      Eine der Betroffenen hat mit IE5 folgende Fehlermeldung bekommen (die mir garnichts sagt):

      EXPLORER caused an invalid page fault in
      module MSHTML.DLL at 0167:7aacae04.
      Registers:
      EAX=00000000 CS=0167 EIP=7aacae04 EFLGS=00010246
      EBX=05688770 SS=016f ESP=04fde960 EBP=04fde974
      ECX=00000000 DS=016f ESI=00000000 FS=3ddf
      EDX=00000e48 ES=016f EDI=0568edfc GS=0000
      Bytes at CS:EIP:
      f6 01 20 8b 41 0c 74 01 c3 8b 40 0c eb fa 55 8b

      Hoffe, das sagt Euch was, ich bin echt aufgeschmissen,
      Eddie

      --
      Old men and far travelers may lie with authority.
      1. Hello,

        Wie groß ist die Zeilenlänge des übermittelten HTML-Codes?
        Minimum 600 Zeilen, 22.000 Zeichen
        Geht aber auch bis 2500 Zeilen und 140.000 Zeichen (mit zunehmender Groesse des Formularinhalts) - oder sogar mehr.
        Aber Absturz-technisch gibt es zwischen der kleinen und der grossen Seite keinen Unterschied.

        Ich meinte eher die maximale ZEILEN-Länge. Die darf nämlich 1000 Zeichen nicht überschreiten, auch wenn die meisten Browser eigentlich erst so bei 30.000 schlapp machen.

        Der IE macht dann ganz merkwürdige Sachen, wenn man dem eine so lange Zeile schickt. Was er dann mit dem Rest, den er verschluckt, anfängt, kann man ja von außen nicht sehen.

        Eine der Betroffenen hat mit IE5 folgende Fehlermeldung bekommen (die mir garnichts sagt):

        EXPLORER caused an invalid page fault in
        module MSHTML.DLL at 0167:7aacae04.
        Registers:
        EAX=00000000 CS=0167 EIP=7aacae04 EFLGS=00010246
        EBX=05688770 SS=016f ESP=04fde960 EBP=04fde974
        ECX=00000000 DS=016f ESI=00000000 FS=3ddf
        EDX=00000e48 ES=016f EDI=0568edfc GS=0000
        Bytes at CS:EIP:
        f6 01 20 8b 41 0c 74 01 c3 8b 40 0c eb fa 55 8b

        Das sieht mir aber eher nach den Folgen eines Virus aus. Ich hatte da auch zwei DLLs des IE, die kaputt waren.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hallo Tom,

          Ich meinte eher die maximale ZEILEN-Länge. Die darf nämlich 1000 Zeichen nicht überschreiten, auch wenn die meisten Browser eigentlich erst so bei 30.000 schlapp machen.

          Ok, die ueberschreite ich: meine laengste Zeile hat 2047 Zeichen (also fast exakt 2^11), eine JavaScript-Zeile mit document.write('...');
          Aber auch daran kann es eigentlich nicht liegen, denn beim ersten Laden (1a) macht's ja garnichts. Wie gesagt: selber Code.
          Aber das mit den 30.000 war ja mal echt interessant, werd ich mir merken.

          Der IE macht dann ganz merkwürdige Sachen, wenn man dem eine so lange Zeile schickt. Was er dann mit dem Rest, den er verschluckt, anfängt, kann man ja von außen nicht sehen.

          =========================
          EXPLORER caused an invalid page fault in
          module MSHTML.DLL at 0167:7aacae04.
          Registers:
          EAX=00000000 CS=0167 EIP=7aacae04 EFLGS=00010246
          EBX=05688770 SS=016f ESP=04fde960 EBP=04fde974
          ECX=00000000 DS=016f ESI=00000000 FS=3ddf
          EDX=00000e48 ES=016f EDI=0568edfc GS=0000
          Bytes at CS:EIP:
          f6 01 20 8b 41 0c 74 01 c3 8b 40 0c eb fa 55 8b

          Das sieht mir aber eher nach den Folgen eines Virus aus. Ich hatte da auch zwei DLLs des IE, die kaputt waren.

          Das mag sein, ich habe nur diese eine Fehlermeldung (IE5, Internet Cafe, Chiang Mai, Thailand), aber abgestuerzt sind viele - nur kann ich halt nicht alle meine Autoren nerven mit "schick mal eine Fehlermeldung"...
          Wenn's bei mir passiert, kommt nur die Meldung "lieber user, ich stuerz jetzt ab, drueck' aber davor bitte noch 'ok' ".

          Schon sehr seltsam das alles,
          Gruss, Eddie

          --
          Old men and far travelers may lie with authority.
          1. Hi!

            Das mag sein, ich habe nur diese eine Fehlermeldung (IE5, Internet Cafe, Chiang Mai, Thailand), aber abgestuerzt sind viele - nur kann ich halt nicht alle meine Autoren nerven mit "schick mal eine Fehlermeldung"...
            Wenn's bei mir passiert, kommt nur die Meldung "lieber user, ich stuerz jetzt ab, drueck' aber davor bitte noch 'ok' ".

            Das heißt Du hast das ganze auf mehreren Rechnern nachvollziehen können?

            Dann solltest Du mal nach und nach Deinen HTML-Code vereinfachen, bis am Ende nur noch

            <html>
              <head></head>
              <body>
                <form ...>
                  <input type="text" name="..." value="...">
                  <input type="submit">
                </form>
              </body>
            </html>

            da steht. Tritt das Problem dann immer noch auf?

            Grüße
            Andreas

            --
            SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
  2. Hi,

    Der IE ist ja bekanntermaßen ein kaputter Browser, deshalb fällt mir folgende mögliche Fehlerquelle ein:

    • Hast du den Cache gelehrt? (Voller Cache soll AIH ein "komisches" Verhalten des IE verursachen.)
    • Verwendest du Cookies? (Landen auch im Cache-Verzeichnis, könnten also bei der erstgenannten möglichen Fehlerquelle eine Rolle spielen.)

    Gruß
    Arx

    --
    Do it yourSELF 'cause SELFmade is bestmade.
    Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
    Selfcode entschlüsseln: http://peter.in-berlin.de/projekte/selfcode/
    Selfcode-Info: http://emmanuel.dammerer.at/selfcode.html
    Für alle Forum-Neulinge:
    1.http://de.selfhtml.org/
    2.http://suche.de.selfhtml.org/ -> http://forum.de.selfhtml.org/archiv/
    3.http://forum.de.selfhtml.org/faq/ -> http://forum.de.selfhtml.org/cgi-bin/fo_post
    1. Hallo Arx,

      • Hast du den Cache gelehrt? (Voller Cache soll AIH ein "komisches" Verhalten des IE verursachen.)

      Bisher benuetze ich folgende Meta-Tags:

      <META http-equiv="expires" CONTENT="0">
      <META http-equiv="cache-control" CONTENT="no-cache">
      <META http-equiv="Pragma" CONTENT="no-cache">

      • Verwendest du Cookies? (Landen auch im Cache-Verzeichnis, könnten also bei der erstgenannten möglichen Fehlerquelle eine Rolle spielen.)

      Ja, verwende ich. Die werden aber bei 1a und 2a genau gleich gesetzt - naemlich gleich beim Start des Scripts. Was meinst Du, wie sich das äussern könnte, wenn es damit zusammenhaengt? Dann wuerde doch der User einfach nur rausgeschmissen werden (in meinem Fall auf die Startseite), oder?

      Gruss, Eddie

      --
      Old men and far travelers may lie with authority.
      1. Moin!

        • Hast du den Cache gelehrt? (Voller Cache soll AIH ein "komisches" Verhalten des IE verursachen.)
          Bisher benuetze ich folgende Meta-Tags:

        Du hast nicht verstanden, was Arx gemeint hat.

        Geh auf "Extras/Internetoptionen", Tab "Allgemein", und klicke bei "Temporäre Internetdateien" auf "Dateien löschen...".

        Das löscht deinen Cache, der ja voll von den ganzen anderen Seiten sein dürfte, die du zuletzt angesurft hast.

        Der IE zeigt ein sehr seltsames Verhalten, wenn sein Cache voll ist. Cache-Löschen ist ein legitimer Workaround um abstruse Probleme.

        - Sven Rautenberg

  3. Hallo!

    Kannst du vielleicht mal eine Beispielseite online stellen, damit man sich das genauer anschauen kann?

    Schöne Grüße
    Julian

    1. Kannst du vielleicht mal eine Beispielseite online stellen, damit man sich das genauer anschauen kann?

      Natuerlich: http://www.umdiewelt.de/mChapter.htm
      Das ist jetzt mal ein ziemlich gross geratenes Formular (denn die Besucher koennen neue Textfelder und Bilder hinzufügen).

      Das Speichern funktioniert nicht, weil man angemeldet sein muss - ihr seht also gerade nur den HTML-Code, funktionieren tut es nicht.
      Aber stellt Euch vor, ihr wuerdet auf "Änderungen übernehmen" klicken (ohne was zu ändern) und als Resultat wieder EXAKT dieselbe Seite bekommen. Nur eben, dass ihr sie garnicht bekommt, weil davor eben alles abstürzt.

      Danke fuer Eure Zeit, Eddie

      --
      Old men and far travelers may lie with authority.
      1. Hello,

        gibt es denn ekinerlei Fehlermeldungen?
        Hast Du

        track_errors = on
        error_reporting=(E_ALL);
        Und dann auch getallheaders() benutzen und loggen

        Und das Logging mal in eine Datei umlenken, damit es keine Probleme mit den Headern gibt.

        Ich vermute einfach mal, dass Deine Speichergrenze erreicht ist, und da vielleicht noch eine "halbe Ausgabe" generiert wird, die abgeschickt wird, wenn das Script terminiert.

        Ist die Speicherbegrenzung aktiviert?

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  4. Sorry fuer dieses Posting, aber ich hab keinen Bock drauf, dass mir der Thread ins Archiv wandert, ich will naemlich noch drauf antworten. Meiner Meinung nach eine ziemlich nervige Eigenschaft des Forums.

    Sitze immer noch an der Fehlersuche, dauert noch ein bisschen

    Eddie

    --
    Old men and far travelers may lie with authority.
    1. Hi,

      Sorry fuer dieses Posting, aber ich hab keinen Bock drauf, dass mir der Thread ins Archiv wandert, [...] . Meiner Meinung nach eine ziemlich nervige Eigenschaft des Forums.

      Die Archivierung ist IMHO sinnvoll, da die Forumsstartseite sonst noch länger würde. Stell dir mal vor, da würden alle jemals geschriebenen Beiträge aufgelistet...

      Gruß
      Arx

      --
      Do it yourSELF 'cause SELFmade is bestmade.
      Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
      Selfcode entschlüsseln: http://peter.in-berlin.de/projekte/selfcode/
      Selfcode-Info: http://emmanuel.dammerer.at/selfcode.html
      Für alle Forum-Neulinge:
      1.http://de.selfhtml.org/
      2.http://suche.de.selfhtml.org/ -> http://forum.de.selfhtml.org/archiv/
      3.http://forum.de.selfhtml.org/faq/ -> http://forum.de.selfhtml.org/cgi-bin/fo_post
      1. Hi Arx,

        Die Archivierung ist IMHO sinnvoll, da die Forumsstartseite sonst noch länger würde. Stell dir mal vor, da würden alle jemals geschriebenen Beiträge aufgelistet...

        Da stimme ich Dir voll zu. Nur sollte es eine Moeglichkeit geben, alte Beitraege wieder aus dem Archiv hervorzuholen - also bspw. durch Antwort.
        Bei anderen Foren gibt's zwar kein Archiv, aber dafuer die Seiten 2/999 bis 999/999, also aus den Augen, aber nicht aus dem Sinn.

        Naja, wenn es keine Einwaende dagegen gibt, dass ich die Haltbarkeit dieses Threads verlaengere, mach ich das vielleicht nochmal. Oder sollte ich am Wochenende (oder wann immer ich mit der Fehlersuche so weit bin) nochmal einen neuen Thread eroeffnen? Nicht, dass es dann heisst: "Vorsicht Doppelposting" ...

        Gruss, Eddie

        1. Hi,

          Die Archivierung ist IMHO sinnvoll, da die Forumsstartseite sonst noch länger würde. Stell dir mal vor, da würden alle jemals geschriebenen Beiträge aufgelistet...
          Da stimme ich Dir voll zu. Nur sollte es eine Moeglichkeit geben, alte Beitraege wieder aus dem Archiv hervorzuholen - also bspw. durch Antwort.

          IMHO schlechte Idee. Dann würden unter Umständen alte Kamellen ständig wieder aufgewärmt.

          Bei anderen Foren gibt's zwar kein Archiv, aber dafuer die Seiten 2/999 bis 999/999, also aus den Augen, aber nicht aus dem Sinn.

          Ich glaube nicht, dass sich jemand die Mühe macht, auf Seite 457 (oder ähnlich...) nachzusehen, ob da ein neuer Beitrag ist.

          Naja, wenn es keine Einwaende dagegen gibt, dass ich die Haltbarkeit dieses Threads verlaengere, mach ich das vielleicht nochmal. Oder sollte ich am Wochenende (oder wann immer ich mit der Fehlersuche so weit bin) nochmal einen neuen Thread eroeffnen? Nicht, dass es dann heisst: "Vorsicht Doppelposting" ...

          IMHO solltest du diesen Thread (und damit die Datendateien auf dem Server) nicht durch "keepAlive"-Beiträge unnötig aufblähen. Stattdessen solltest du nur etwas posten, wenn es sich auf das eigentliche Thema des Threads bezieht. Und wenn du in ein paar Tagen wieder eine Frage zu dem Thema hast und feststellst, dass dein Thread ins Archiv gewandert ist, eröffnest du eben einen neuen Thread und verweist mit einem Link auf den alten.

          Gruß
          Arx

          --
          Do it yourSELF 'cause SELFmade is bestmade.
          Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
          Selfcode entschlüsseln: http://peter.in-berlin.de/projekte/selfcode/
          Selfcode-Info: http://emmanuel.dammerer.at/selfcode.html
          Für alle Forum-Neulinge:
          1.http://de.selfhtml.org/
          2.http://suche.de.selfhtml.org/ -> http://forum.de.selfhtml.org/archiv/
          3.http://forum.de.selfhtml.org/faq/ -> http://forum.de.selfhtml.org/cgi-bin/fo_post
        2. Hi Eddie,

          Naja, wenn es keine Einwaende dagegen gibt, dass ich die Haltbarkeit dieses Threads verlaengere, mach ich das vielleicht nochmal. Oder sollte ich am Wochenende (oder wann immer ich mit der Fehlersuche so weit bin) nochmal einen neuen Thread eroeffnen? Nicht, dass es dann heisst: "Vorsicht Doppelposting" ...

          Lass den alten ins Archiv wandern und eröffne dann später einen neuen Thread. Du kannst den alten dann dort verlinken und/oder die bisherigen Diskussionsergebnisse zusammenfassen.

          Viele Grüße
          Mathias Bigge