Spent about six or seven hours finding out why the HAL daemon would suddenly exit with exit code 1. After building a new D-BUS RPM that respects the DBUS_VERBOSE environment variable, I found out that I was constructing garbage messages and the system bus daemon kicked me off which resulted in exit() being called somewhere in libdbus in my client (the HAL daemon). Hmm...
Yay, now HAL does the right thing when a user removes media without unmounting it - the code is quite ugly, polling and stuff, but it seems to work quite well at least for the limited set of devices (Compact Flash, CD and DVD discs) that I can test with.
Applications can now catch a D-BUS event saying that HAL unmounted, lazy-style even, the filesystems on the unplugged media.
I'm currently at the curling rink between games in Danish Open - 802.11b is indeed pervasive. Had some coworkers from Jerusalem visiting this week; went out for beer wednesday; nice.