Archive for November 7, 2014

Friday, November 7, 2014

Tracking Down a WebKit Crasher

Daniel Jalkut:

I love it when customers take the time to write something about the circumstances surrounding a crash. Often even a little clue can be enough to lead to the unique series of steps that will ultimately reproduce the problem.

[…]

This is where the open-sourced nature of WebKit is both a blessing and a curse. If this issue had been revealed to exist somewhere deep within AppKit, or any of Apple’s other closed-source frameworks, I most certainly would have thrown up my arms, filed a bug, and hoped for the best. But Apple’s WebKit framework is something I can download, build, and debug. Sure, it takes nearly all day to build, and there is a steep learning curve to debugging it, but why did I become a software developer if I’m not up for a challenge?

[…]

To make a long, long, long, long, story very short: I used Instruments and its “pairing” functionality, which lets you hide balanced pairs of retain/release calls so that you are left with a more manageable subset of calls to examine and scrutinize. After scratching my head over this for hours and not making much headway, I finally came upon a specific call stack that had a very suspicious heritage. I confirmed through Instruments and then by direct examination of WebKit source code, that the WebView instance in question was in fact retaining and then autoreleasing itself as part of its dealloc method.

The Future of Unison

Cabel Sasser:

Unison’s end is bittersweet. The market for a Usenet client in 2014 isn’t exactly huge. But if you know Panic, you know we do our very best to never drop things awkwardly — we like to leave our apps in a good place for our (very) valued users.

So we’re excited to release a nice, final update to Unison.

c4 Compiler

Robert Swierczek has written a minimal C compiler in about 500 lines of code (via Michael Feathers).

Update (2014-11-21): Hacker News comments.

Fire in the Valley, Third Edition

The Pragmatic Bookshelf (Amazon):

This completely revised and expanded third edition brings the story to its completion, chronicling the end of the personal computer revolution and the beginning of the post-PC era. It covers the departure from the stage of major players with the deaths of Steve Jobs and Douglas Engelbart and the retirements of Bill Gates and Steve Ballmer; the shift away from the PC to the cloud and portable devices; and what the end of the PC era means for issues such as personal freedom and power, and open source vs. proprietary software.

The earlier edition that I read was good.

Update (2015-01-18): Paul Freiberger and Michael Swaine are interviewed on the Floppy Days podcast.

ECC RAM

James Hamilton in 2009 (via Accidental Tech Podcast):

An excellent paper was just released that puts hard data behind this point and shows conclusively that ECC is absolutely needed. In DRAM Errors in the Wild: A Large Scale Field Study, Bianca Schroeder, Eduardo Pinheiro, and Wolf-Dietrich Weber show conclusively that you really do need ECC memory in server applications. Wolf was also an author of the excellent Power Provisioning in a Warehouse-Sized Computer that I mentioned in my blog post Slides From Conference on Innovative Data Systems Research where the authors described a technique to over-sub subscribe data center power.

I continue to believe that client systems should also be running ECC and strongly suspect that a great many kernel and device driver failures are actually the result of memory fault. We don’t have the data to prove it conclusively from a client population but I’ve long suspected that the single most effective way for Windows to reduce their blue screen rate would be to require ECC as a required feature for Windows Hardware Certification.