On 2021/05/03 18:06, Jun Omae wrote: > Hi, > > On Wed, Apr 28, 2021 at 5:39 PM Rick van der Zwet > <i...@rickvanderzwet.nl> wrote: >>> Ack, but the backtrace does go through Subversion's swig-py bindings and >>> libsvn_fs_fs, so we might be involved nevertheless. >> >> ... >> >> error which seems to be related to the Trac code, I filled it over >> there: https://trac.edgewall.org/ticket/13401 > > The root cause is that sub pool is doubly destroyed because weakref's > callback is > not invoked when the pools are finalized by cyclic garbage collector > in Python 3. > > See also https://bugs.python.org/issue40312 > > Proposed patch is attached. > > [[[ > swig-py: Fix doubly destroying memory pool because weakref's callback is not > invoked when it is finalized by cyclic garbage collector. > > * subversion/bindings/swig/include/proxy_apr.swg > (apr_pool_t.valid): Check whether parent pool is valid. > > * subversion/bindings/swig/python/tests/pool.py > (PoolTestCase): Add tests for pools referred from circular reference. > }}}
The patch looks good to me. Also I confirmed that the test crash before apply patch to proxy_apr.swg with signal 10 or signal 11 and that the test passed without crash on Python 3.7 and 3.9, on FreeBSD 12. On Python 2.7, the test passed without crash both with/without patch to proxy_apr.swg, as it would be expected. +1 to commit. Cheers, -- Yasuhito FUTATSUKI <futat...@yf.bsclub.org>