Icon display improvements

- call update_icon() at the right time
- badge icon shows “?” on error