[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: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Sun, 17 May 2020 19:51:12 +0200

On Sun, May 17, 2020 at 3:43 PM Jun Omae <jun66j5_at_gmail.com> wrote:
>
> On Sat, May 16, 2020 at 9:13 PM Johan Corveleyn <jcorvel_at_gmail.com> wrote:
> > If I apply your patch, I get this assertion with Python 3.8.2 and SWIG 3.0.12:
> >
> > [[[
> > C:\research\svn\dev\trunk>python win-tests.py --log-level=DEBUG
> > --debug --swig=python R:\test_py
> > Testing Debug configuration on local repository.
> > -- Running Swig Python tests --
> > Assertion failed: PyTuple_Check(args), file
> > d:\a\1\s\objects\typeobject.c, line 3707
> > [Test runner reported failure]
> > ]]]
> >
> > I don't see the other assertion that you got with SWIG 3.0.12. Perhaps
> > because I'm using Python 3.8.2? Or because I'm using the 32-bit
> > builds? I don't know.
>
> PyTuple_Check(args) asserts when Python 3.7.x - 3.8.x with SWIG 3.0.12.
> The issue is due to SWIG 3.0.x and has been fixed in SWIG 4.0.1.
> ref. https://github.com/swig/swig/issues/1321
>
> Assertion for negative ref count is raised from test_conflict
> (client.SubversionClientTestCase).
> 1.10.x through trunk have the issue.
>
> Summary tested with Python debug builds on Linux amd64:
>
> | Source | Python | SWIG | Result
> |--------|--------|--------|--------
> | trunk | 3.8.3 | 4.0.1 | _Py_NegativeRefcount: Assertion failed:
> object has negative ref count
> | trunk | 3.8.3 | 3.0.12 | excess_args: Assertion `PyTuple_Check(args)' failed
> | trunk | 3.7.7 | 4.0.1 | Fatal Python error:
> ../Objects/dictobject.c:1905 object at ... has negative ref count -...
> | trunk | 3.7.7 | 3.0.12 | excess_args: Assertion `PyTuple_Check(args)' failed
> | trunk | 3.6.10 | 4.0.1 | Fatal Python error:
> ../Objects/dictobject.c:2017 object at ... has negative ref count -...
> | trunk | 3.6.10 | 3.0.12 | Fatal Python error:
> ../Objects/dictobject.c:2017 object at ... has negative ref count -...
> | trunk | 3.5.2 | 4.0.1 | Fatal Python error:
> ../Objects/dictobject.c:354 object at ... has negative ref count -...
> | trunk | 3.5.2 | 3.0.12 | Fatal Python error:
> ../Objects/dictobject.c:354 object at ... has negative ref count -...
> | trunk | 2.7.12 | 3.0.12 | Fatal Python error:
> subversion/bindings/swig/python/svn_client.c:28085 object at ... has
> negative ref count -...
> | 1.13.x | 2.7.12 | 3.0.12 | Fatal Python error:
> subversion/bindings/swig/python/svn_client.c:28085 object at ... has
> negative ref count -...
> | 1.10.x | 2.7.12 | 3.0.12 | Fatal Python error:
> subversion/bindings/swig/python/svn_client.c:26916 object at ... has
> negative ref count -...
>
>
> trunk on Python 3.8.3 with SWIG 4.0.1
> ========
> .............................../Include/object.h:541:
> _Py_NegativeRefcount: Assertion failed: object has negative ref count
> <object at 0x7f9efefb1050 is freed>
> Fatal Python error: _PyObject_AssertFailed
> Python runtime state: initialized
>
>
> trunk on Python 3.8.3 with SWIG 3.0.12
> ========
> python3.8-dbg: ../Objects/typeobject.c:3707: excess_args: Assertion
> `PyTuple_Check(args)' failed.
>
>
> trunk on Python 3.7.7 with SWIG 4.0.1
> ========
> .............................Fatal Python error:
> ../Objects/dictobject.c:1905 object at 0x7f8f739ced10 has negative ref
> count -2459565876494606884
>
>
> trunk on Python 3.7.7 with SWIG 3.0.12
> ========
> python3.7-dbg: ../Objects/typeobject.c:3670: excess_args: Assertion
> `PyTuple_Check(args)' failed.
>
>
> trunk on Python 3.6.10 with SWIG 4.0.1
> ========
> .............................Fatal Python error:
> ../Objects/dictobject.c:2017 object at 0x7f9c30277878 has negative ref
> count -2604246222170760230
>
>
> trunk on Python 3.6.10 with SWIG 3.0.12
> ========
> .............................Fatal Python error:
> ../Objects/dictobject.c:2017 object at 0x7f83bf511400 has negative ref
> count -2604246222170760230
>
>
> trunk on Python 3.5.2 with SWIG 4.0.1
> ========
> .............................Fatal Python error:
> ../Objects/dictobject.c:354 object at 0x7fbd5b50d608 has negative ref
> count -2604246222170760230
>
>
> trunk on Python 3.5.2 with SWIG 3.0.12
> ========
> .............................Fatal Python error:
> ../Objects/dictobject.c:354 object at 0x7f77710cff60 has negative ref
> count -2604246222170760230
>
>
> trunk on Python 2.7.12 with SWIG 3.0.12
> ========
> ........................Fatal Python error:
> subversion/bindings/swig/python/svn_client.c:28085 object at
> 0x7f43a91de0d8 has negative ref count -2604246222170760230
>
>
> branches/1.13.x on Python 2.7.12 with SWIG 3.0.12
> ========
> ........................Fatal Python error:
> subversion/bindings/swig/python/svn_client.c:28085 object at
> 0x7fd02bba81c8 has negative ref count -2604246222170760230
>
>
> branches/1.10.x on Python 2.7.12 with SWIG 3.0.12
> ========
> ........................Fatal Python error:
> subversion/bindings/swig/python/svn_client.c:26916 object at
> 0x7fe73b53a150 has negative ref count -2604246222170760230
>
> --
> Jun Omae <jun66j5_at_gmail.com> (大前 潤)

Thank you for the thorough research!
I'm not sure what can be done further about this. Perhaps others can
chime in here.

-- 
Johan
Received on 2020-05-17 19:51:34 CEST

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