Potential race in WMessageResourceBundle with WServer::setLocalizedStrings
For static resources where WServer::setLocalizedStrings is provided a WMessageResourceBundle on which refresh() has not been called, it appears that multiple threads can attempt to initialize the WMessageResourceBundle simultaneously. This can result in a segfault.
I noticed this with an earlier github version of Wt 3.3.3-25-g7023b38 when attempting to retrieve several static resources in parallel. I have attached a lightly edited backtrace demonstrating one failure path. I would have liked to provide a self-contained reproducible example, but hopefully this is sufficient.
NOTE: A workaround that seems to help is to call refresh() on the WMessageResourceBundle before passing it to setLocalizedStrings, e.g.
auto message_bundle = new WMessageResourceBundle(); message_bundle->use(server.appRoot() + "report"); // prevent race condition on first use of message_bundle message_bundle->refresh(); server.setLocalizedStrings(message_bundle);