Exceção perdida
Um recurso interessante do Emscripten: ao iniciar um loop de jogo via emscripten_set_main_loop, você deve lembrar que o tratamento de exceções deve ser adicionado novamente via try catch diretamente no método loop, porque o tempo de execução perde o bloco try catch de fora.
A maneira mais fácil é exibir o texto do erro usando o navegador usando alerta javascript:
catch (const std::exception &exc)
{
const char *errorText = exc.what();
cout << "Exception: " << errorText << "; Stop execution" << endl;
EM_ASM_(
{
var errorText = UTF8ToString($0);
alert(errorText);
}, errorText);
abort();
Expressão regular muito complexa
A implementação padrão de regex pode lançar uma exceção error_complexity se considerar que a expressão regular é muito complexa. Isso acontece na implementação atual do emscripten, então sugiro que você implemente testes para análise por meio de expressões regulares ou use implementações de regex de terceiros.