Print full PSIO error message to cerr as well #2997
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
For some poorly understood confluence of reasons, for some users error messages can sometimes get completely lost when Psi4 exits with a
PSIEXCEPTION
, especially when a PSIO error happens.This can be observed in recent bug reports, see:
In both of these cases the users were only seeing the error message that has been written to
cerr
, but not the string thatPSIEXCEPTION
should have printed.IIRC when I tried to research this quite a while ago, I have found this may be a bug in some versions of libstdc++. This PR adds a simple workaround: the exception message is also printed to
cerr
inpsio_error
.The only side effect, is that some users, who are currently not affected by the lost message problem, may start getting the same error message twice when a PSIO error happens. Spammy error exits are not great, but PSIO errors are not supposed to happen too often, and when they do loosing the error message is more annoying than having it be duplicated.
User API & Changelog headlines
cerr
, fixing an issue where (under some circumstances) large parts of the error message would never reach the user,Dev notes & details
PSIEXCEPTION
is now printed tocerr
before throwing inpsio_error
Checklist
Status