I just spent half the day hunting down a tricky bug in (probably) Internet Explorer.
Situation: We were working on a piece of documentation consisting of multiple HTML files using frames. It was planned to burn this directory structure to a CD, and the CD would then be delivered to the customer.
While checking the docs for browser compatibility, we found out, that on some computers (I still don’t know the pattern… all running Windows XP SP2, although some of them have a chinese language version, some of them have an english language version installed) the left navigation frame just didn’t work, as in nothing happened when clicking on the links. The linked URLs were correct, the files existed, but the browser in question (Internet Explorer) just didn’t open them. BUT: This happened only, when the html files were stored on the local hard drive. When we accessed them via SAMBA on a network share, everything was fine! In Firefox it worked perfectly fine from everywhere.
After a lot of searching, following wrong assumptions and so on, I found out, that when I accessed the docs on the local hard drive, Internet Explorer switched to ‘Unknown zone (mixed)’. When accessing them on the SAMBA share, Internet Explorer always showed ‘Internet’ zone. I tried to find out what could trigger Internet Explorer to do that, but didn’t find anything useful. Due to closed source and no debugging possibilities I didn’t see any way to find it out on my own.
Another couple of hours later, I converted the HTML file containing the navigation menu from DOS/Windows style line breaks (\r\n) to UNIX style line breaks (\n) with ‘dos2unix’. I did this, because I wanted to use sed on my Linux system to remove a big amount of empty lines in the file (I’d like to know how they got there in the first place, but that’s another story).
And suddenly it worked. From local disk. I couldn’t believe it at first, and converted the file back to UNIX style (using ‘unix2dos’), and it stopped working again, so I was sure it was this change what caused the bug to not being triggered anymore.
So to sum up: we have to convert one of the HTML files (which were generated on a Windows machine) in the package (consisting of hundreds of files) from Windows style line breaks to UNIX style line breaks to make the whole thing work on a Windows target system.
And who may I thank for all of this? Beloved Microsoft Corporation.