After blogging recently that KHTML on Solaris was suddenly broken, the KHTML team (or part of it at least) hunted me down, shook me around and said “let us help you fix it.” Or something like that. Maybe if I was a better writer of noir fiction I could make it sound more impressive, but Maksim sat down (virtually) with me to go bughunting, and after some binary search of the commit space we settled on r.796955, an otherwise innocuous commit. It took a further 15 minutes of staring to finally spot the missing “return” statement. That got drowned out in other compiler output and we just missed it. Duh, but a simple fix and KHTML renders things with tables nicely again (that’s nearly every webpage out there – very few use no tables at all).

So then we moved on to stack handling in KJS. I originally added a gross hack to work around the fact that Solaris doesn’t have pthread_getattr_np(); that got KHTML to compile, but anything with Javascript crashed as soon as the garbage collector was used (web pages with no JS are rare and I think even clicking a link activates the GC). With the help of some friends, and some friends friends, and some friends friends friends who happen to own a major interstellar trucking company, we got to use some fairly obscure Solaris API (but that’s fine in KDE SVN: there’s a real need for exactly this bit of obscurity, and it’s even documented as … is typically used by debuggers, garbage collectors, and similar applications. Most applications should not require such information. Good thing this is GC code.)

So thanks to him, now I have a KHTML that renders right and supports JS, so I can use it to browse my webcomics again. And applying Konqueror on Solaris to Acid3 gives the same 73/100 score it gets elsewhere (although there are some freezes and slows, so something else is wrong somewhere). So thanks, KHTML folk, for following up on the lazyweb form of vague complaining.

The Wayback Machine ⏲ does not archive everything. Broken image links are marked with a 💔.