The best solution really depends on the UX you want and the scenarios in which this can happen. An extension can restart itself through the
chrome.runtime.reload method. It's up to you when to call this, though. You can surface it through the extension icon's menu by adding a menu item on the action through the
contextMenus API, or you could try and detect a bad state in some other way.
Note that reloading the extension will result in closing any open extension tabs, severing all port connections, etc, so it should be used sparingly.