(1 attachment)

If you've viewed the history in a window, then quit with that window still open, Camino can take seconds to quit. Some profiling shows that we are erroneously rebuilding the history data source after expiring history entries.

This is a classic "array changing during enumeration" problem; the Obj-C data source was removing its history observer in the HistoryClosing() callback, causing one of the observers to get skipped, so the data source for that ignored observer was still receiving start/end batch notifications.
The fix is to clone the array before enumerating it.