[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] fix unable to load *.pyd files with Python 3.8.x on Windows

From: Jun Omae <jun66j5_at_gmail.com>
Date: Wed, 20 May 2020 21:54:11 +0900

On Mon, May 18, 2020 at 8:25 AM Yasuhito FUTATSUKI <futatuki_at_poem.co.jp> wrote:
>
> On 2020/05/18 2:51, Johan Corveleyn wrote:
> > On Sun, May 17, 2020 at 3:43 PM Jun Omae <jun66j5_at_gmail.com> wrote:
>
> >> Assertion for negative ref count is raised from test_conflict
> >> (client.SubversionClientTestCase).
> >> 1.10.x through trunk have the issue.
>
> > Thank you for the thorough research!
> > I'm not sure what can be done further about this. Perhaps others can
> > chime in here.
>
> Jun and I found it is caused by long existing bug on SWIG Python bindings,
> since before swig-py3 branch was merged (thus this bug exists on 1.13.x
> and 1.10.3 branches). On SWIG Python bindings, APIs which have multiple
> apr_pool_t * argments cannot be wrapped correctly.
>
> If we call such a wrapper function with specifying multiple pool argments
> explicitly, only last one is used for *all* apr_pool_t * arguments when
> it calls C API.

Created global-py-pool-ref-count.diff patch to solve the multiple apr_pool *
pointers issue in Python bindings.

Verified no assertions while running check-swig-py with the following
environments:

 - (Python 3.5.2, 3.6.10, 3.7.7, 3.8.3, 3.9.0a6) x (SWIG 4.0.1)
 - (Python 2.7.12) x (SWIG 1.3.40, 2.0.12, 3.0.12)

Investigating generated C code for Perl and Ruby bindings from SWIG, it seems
that all bindings have the same issue which only apr_pool_t * pointer passed
as last argument is used.

-- 
Jun Omae <jun66j5_at_gmail.com> (大前 潤)

Received on 2020-05-20 14:54:31 CEST

This is an archived mail posted to the Subversion Dev mailing list.