Skip to content
  • Damien George's avatar
    py/gc: Execute finaliser code in a protected environment. · c7e8c6f7
    Damien George authored
    If a finaliser raises an exception then it must not propagate through the
    GC sweep function.  This patch protects against such a thing by running
    finaliser code via the mp_call_function_1_protected call.
    
    This patch also adds scheduler lock/unlock calls around the finaliser
    execution to further protect against any possible reentrancy issues: the
    memory manager is already locked when doing a collection, but we also don't
    want to allow any scheduled code to run, KeyboardInterrupts to interupt the
    code, nor threads to switch.
    c7e8c6f7