> The problem comes when PyErr_SetObject triggers garbage collection which
> runs python code (finalizers...).
Mmmh, normally this shouldn't change the value of tstate->exc_value once
that Python code returns. That's what exception stacking is for.
Having a snippet deterministically reproducing the problem would really
help in any case.
> An obvious fix is to save exc_value near the "/* Implicit exception
> chaining */" comment.
Well, it may be a fix for the crash but I'm not sure it makes the
semantics correct. If tstate->exc_value was really changed, there is a
reason and I'm not sure it should be ignored. |