Mauricio asked me to review the debdiff for Focal as well.
This debdiff is different because he had to implement some code to synchronize the destruction of the qemuProcessReconnect threads with the free'ing of the thread pool.
I looked at the new code, analyzed it as best as I could, asked a few questions to Mauricio regarding the new environment variable being created, and finally got convinced that everything seems OK. The implementation is sound and the concept is simple: qemuStateCleanupWait acts similarly to a thread barrier and makes sure that all threads previously created by qemuProcessReconnect are able to finish before qemuStateCleanup can proceed.
Mauricio asked me to review the debdiff for Focal as well.
This debdiff is different because he had to implement some code to synchronize the destruction of the qemuProcessReco nnect threads with the free'ing of the thread pool.
I looked at the new code, analyzed it as best as I could, asked a few questions to Mauricio regarding the new environment variable being created, and finally got convinced that everything seems OK. The implementation is sound and the concept is simple: qemuStateCleanu pWait acts similarly to a thread barrier and makes sure that all threads previously created by qemuProcessReco nnect are able to finish before qemuStateCleanup can proceed.
In a nutshell: LGTM, +1.