On 2026-Feb-23, Bryan Green wrote:
> I have implemented DuplicateHandle and closed the handle in the
> appropriate places. I also reset backtrace_process to NULL if
> SymInitialize() fails. Patch is attached.
Hmm, should then backtrace_cleanup() cope with the case where it's NULL?
Also, I wonder what happens if one "backtraceable" error occurs, and we
fail to SymInitialize(), then another backtraceable error occurs.
Should we do the DuplicateHandle()+SymInitialize() dance again, or
should we just give up? The current implementation does the former, I
think; but the latter is also easily achievable by setting
backtrace_symbols_initialized to true and leaving backtrace_process as
NULL; then this case can be detected specifically in set_backtrace() and
treated as a case where we just return NULL before attempting anything
else.
--
Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/