If the server broadcasts a message on crash recovery (perhaps "I just recovered from a crash"), and if the response of a user that had been awaiting an acknowledgement is to re-pose their request, while the response of a user to which the resource had been granted is to assert that they have not yet relinquished, the system can be made fault tolerant. In the event that no user replies "I have the resource", the server learns that the resource is free and available to the first process posing a request.
Another solution would be to have requesting processes periodically re-pose their requests, and to have processes holding resources periodically re-assert their claim on the resource. This way, no broadcast is required.
However! If two processes are competing for two resources, no matter what mutual exclusion mechanism we use, deadlock is possible. The question in the book specifically asks about independent critical regions. If we interpret the word independent to mean that the regions are not nested or allowed to overlap, then no process can simultaneously enter more than one region, which is equivalent to saying that no process can simultaneously hold more than one resource. This reading eliminates the possibility of deadlock.
It is more likely, however, that Tannenbaum intended the word independent to mean that entry and exit from the different critical regions may each be done at any time. This is the typical case with real parallel programs, where processes may indeed hold multiple resources simultaneously and where nested critical sections are common. In this case, deadlock is certainly possible, but this does not depend on the specific use of Ricart and Argawala's algorithm.