Digging a little deeper into the future source, _M_set_result() seems to only throw std::future_error for the promise_already_satisfied condition. This unhandled exception is tearing down the scope.
We have 2 places in code where getCredentials() is called:
click::CredentialsService::getToken()
& InstalledPreview::get_consumer_key()
I suspect that during "QCoreApplication::processEvents();" in click::CredentialsService::getToken(), we may risk processing 2 getCredentials() calls in parallel, causing multiple callbacks into the signal handler.
This change adds a safety net which may or may not make the issue go away completely, but it certainly shouldn't make things any worse.
Looking at:
https:/ /errors. ubuntu. com/problem/ f271ff40a203e6d 22ab0bf36beb8f6 f6adddb90a,
we can see that the crash originates from:
ubuntuone_ credentials. cpp:63 -> "promise. set_value( token); "
Digging a little deeper into the future source, _M_set_result() seems to only throw std::future_error for the promise_ already_ satisfied condition. This unhandled exception is tearing down the scope.
We have 2 places in code where getCredentials() is called: :CredentialsSer vice::getToken( ) w::get_ consumer_ key()
click:
& InstalledPrevie
I suspect that during "QCoreApplicati on::processEven ts();" in click:: CredentialsServ ice::getToken( ), we may risk processing 2 getCredentials() calls in parallel, causing multiple callbacks into the signal handler.
This change adds a safety net which may or may not make the issue go away completely, but it certainly shouldn't make things any worse.