Archive

Archive for November 25th, 2009

Bug unplugged

November 25th, 2009 14 comments

Since 1.23 is out a few people are experiencing a nasty map bug, or at least it manifestates in the map view – it exists elsewhere as well but is less noticeable. I crafted a small Javascriptlet to get around this bug, but it’s not a solution that can be applied on the productive system. So here’s a javascriptlet that can help you temporarily:

Seit dem Release von Version 1.23 haben einige wenige Leute Probleme mit einem ärgerlichen Kartenbug, zumindest zeigt sich der Bug in der Karte am deutlichsten – er existiert vermutlich noch an anderen Stellen, tritt dort dann aber nicht so prominent in Erscheinung. Ich habe ein kleines Javascriptlet gebastelt mit dem man temporär um den Bug drumherum kommt, allerdings kann dieser quickfix nicht im Produktivsystem integriert werden. Den folgenden Codeschnippsel kann man in die Adressleiste vom Browser einfügen um zumindest die Karte wieder zum Vorschein zu bringen:

javascript:WMap.mapData = new MapData(); WMap.scroll_map_to_char(); void(0);
javascript:WMap.mapData = new MapData(); WMap.scroll_map_to_char(); void(0);

If you copy that line of code into your browser’s addressbar, you can bypass the bug for a while at least.

Nun aber zur wichtigeren Frage: Was ist die Matrix der Bug?

Die Antwort darauf ist eher kompliziert, ich würde sogar behaupten das dies einer der bemerkenswertesten Bugs ist, denen ich je über den Weg gelaufen bin. Bemerkesenwert insofern als dass die Reproduzierbarkeit extrem Bizarr ist. In der Firma gibt es zur Zeit keinen mir bekannten Rechner, bei dem der Bug reproduzierbar wäre, allerdings besitze ich einen Asus eee auf dem der Bug reproduzierbar auftritt, wie ich zuhause herausgefunden habe.

Am Montag habe ich das Netbook also mitgenommen (eigentlich habe ich es immer dabei weil ich Zug viel rumtippe damit). Ich habe es mit dem Firmennetzwerk verbudnen, konnte den Bug aber mit meiner Entwicklermaschine nicht reproduzieren, seltsam, allerdings läuft auf meiner Maschine auch ein anderer Webserver. Mit der Entwicklerkiste von einem Kollegen konnte der Bug aber tatsächlich relativ Zuverlässig reproduziert werden.

Wir haben den ganzen Tag versucht dahinterzukommen, wie der Bug entsteht. Wir haben herausgefunden dass der Bug in diesem Fall nicht in unserem PHP Programm zu suchen ist – PHP wird nie aufgerufen. Nachdem wir mit Wireshark die Verbindung aufgezeichnet haben haben wir herausgefunden dass die Anfragen einfach versanden. Wir hörten auf als die Batterien des Geräts leer waren (nach etwas mehr als 6 Stunden…)

Am nächsten Tag hatte ich mein Ladegerät mitgenommen damit wir nicht mehr von den Batterien abhängig sein würden. Ich hab den Browser gestartet, die Seite aufgerufen – und es ging. Einfach so. Wir konnten keinen Unterschied feststellen. Der Server lief mit dem gleichen Programm, das Testgerät auch, egal wie oft wir F5 drückten, es blieb beim alten, der Bug war weg.

Bis ich den Stecker zog und die Seite aktualisierte. Da kam zuverlässig der Bug wieder zum Vorschein. Ich steckte das Gerät wieder an und der Bug war weg. Ich bin mir ziemlich sicher dass das schwer zu glauben sein muss, aber wie ich schon sagte, dies ist einer der seltsamsten Bugs denen ich je begegnet bin, aber es ist Wahr! Es ist nur dann reproduzierbar wenn das Notebook ausgesteckt ist und die CPU und Chipsätze im Sparmodus sind (was jede Menge Nebeneffekte bzgl. des Timings im Netzwerkverkehr nach sich zieht, in diesem Falle mit gravierenden Folgen). Wer’s nicht glaubt soll sich das Video anschauen! Ich aktualiere dort mehrfach den Browser (Internet Explorer 6 in diesem Fall), in eingesteckten und nichteingesteckten Modus.

But now the more important question: What is the Matrix bug?

The answer is rather complicated and I would say that this is among one of the most notable bugs that I have experienced so far. Noteable because the reproduceabilty is extremely weird. The company does not have any computer where this bug can be reproduced, however I possess an Asus eee, a device that can reproduce the bug as I found out at home.

So on monday I took it to work (like always, I type a lot of stuff when I am on the train). I connected it with the company’s network and the first thing I noticed is that my local developer machine cannot reproduce the bug with my machine. Weird. But well, I am using a different webserver. So I connected to my collegue’s webserver and the bug worked as expected.

We tried the whole day to get behind this bug. We found out that it is not the fault of our PHP programs – PHP is never called. The client’s request simply vanishes at some point. We used wireshark and looked at everything – but we could not make any progress here. The requests arrive at the webserver but there, the requests simply die. At the end of the day my netbook’s battery was drained (they lastet for more than 6 hours).

The next day I brought my charger with me, just to get over the day a bit longer. I fired up the browser, requested the page in question – and it worked. Out of the box. We couldn’t figure out what was different. The server was unchanged, the software was and no matter how often we pressed F5, we couldn’t get the bug working again.

Until I unplugged the device and refreshed the browser. And there the bug surfaced again. I put the netbook on the charger and the bug vanished. I am pretty sure that this must be hard to believe, as I said, this is one of the weirdest bugs that I’ve ever faced, but this is true! It is only reproduceable if the netbook is running in battery mode where the CPU and other chips are running in battery-safe mode (which is of course influencing the timing in the network traffic, which can have side effects, in this case with grave effects)! You still don’t believe it? Watch the video! I am refreshing the browser (Internet Explorer 6 in this case) several times, sometimes unplugged, sometimes plugged in.


[youtube]HuR8XK393cc[/youtube]

Although this bug appears to be funny, I can reassure you that we are taking it very serious and that we are working on a solution to fix it.

Obwohl der Bug sehr witzig erscheinen mag kann ich versichern dass wir das Problem sehr ernst nehmen und dass wir an einer Lösung dafür arbeiten.

Categories: Uncategorized Tags: