Merkwürdiger Bug

15.04.2006 Manchmal gibt es schon recht eigenartige Bugs, auf die man sich erst überhaupt keinen Reim machen kann. Beim Testen meiner Forensoftware mit Opera 8.5 bin ich so einem merkwürdigem Fehler begegnet, dem ich erst nach einigen Stunden auf den Grund kam.

Nach dem Einloggen verfasste ich einen Testeintrag, soweit nichts außergewöhnliches. Als ich diese Seite dann aber aktualisierte, wurde ich ausgeloggt. Das komische daran: auf den anderen Seiten war ich weiterhin eingeloggt, nur eben nicht auf dieser einen Unterseite. Mit Firefox und dem Internet Explorer konnte ich diesen Effekt nicht reproduzieren, ebenso wenig mit Opera auf einem anderen Forum, das exakt derselben Version entsprach.

Nach einiger Zeit stellte ich fest, dass dieses Ausloggen dann erfolgte, wenn ich eine Seite des Forums mit einem Anker aufrief:

http://forum-2.joergkrusesweb.de/opera-ausgeloggt-t-82-1.html#p1

Nach dem Schreiben eines Beitrages wurde ich ja auf den Anker dieses Beitrag weitergeleitet - das Ausloggen erfolgte aber auch bei anderen Seiten, wenn ich diese mit einem Ankern mehrfach aufrief. Wie ich dann herausfand, übermittelte Opera in diesen Fällen nicht mehr den Inhalt des Cookies, so dass das Forum mich als Gast identifizierte. Die Ursache für dieses Verhalten des Browsers kannte ich aber immer noch nicht. Das andere Forum, das diesen Bug nicht aufwies, unterschied sich in der Konfiguration, der URL sowie den in der Datenbank gespeicherten Inhalten. Statt systematisch diese Unterschiede auszutesten, überprüfte ich nur die Faktoren, die mir als potentielle Auslöser in Frage kamen, wie z.B. den Cookienamen.

Nachdem das Stochern im Nebel erfolglos blieb, blieb mir irgendwann aber nichts anderes übrig, als alle Faktoren durchzutesten, auch wenn sie mir noch so abwegig schienen. Dadurch bin ich dann schließlich auch relativ schnell auf den auslösenden Faktor gekommen: Ich hatte in der Konfiguration keine URL für ein Favicon angegeben. Dummerweise hatte ich diesen Fall bei der Programmierung des Forums nicht berücksichtigt, so dass der HTML-Quelltext dann ein link Element mit leerem href Attribut enthält

<link rel="shortcut icon" href="" />

Wenn der Verweis auf das Favicon ins Leere führt, und die betreffenden URL der Seite mehr als einmal mit einem Anker aufgerufen wird, bringt das Opera tatsächlich soweit aus dem Tritt, dass er den Inhalt des Cookies nicht mehr übermittelt. So einen Zusammenhang hatte ich nicht vermutet - dieses Beispiel zeigt mir wieder mal, dass ab einem bestimmten Punkt nur eine systematische Bugsuche noch weiterhelfen kann.