When an instance is hung, then the list-instances command hangs too until asadmin finally times out after 600 seconds.
The reason for this is that list-instances (via InstanceState) uses InstanceCommandExecutor to run the __locations command on the instance. This class runs the command without any timeout.
To fix this bug, the connection to the instance should timeout after some reasonable interval (less than the time asadmin is waiting).
This issue is being raised due to hang problems that have been experienced with AIX testing. With these hangs, it is possible to initiate a TCP connection to the process, but the connection attempt just hangs; it isn't processed and it isn't refused. To simulate this, set a breakpoint in the __locations command of the instance and see what list-instances does.
The desirable output from list-instances in this situation is that the state of the instance would be reported as "non-responsive" or "hung".