[PyQt] sip: Accessing members results in incorrect/missing data

Matthijs van der Burgh MatthijsBurgh at outlook.com
Sun Jan 12 23:11:18 GMT 2020


Hey All,

I think my problem is related to http://python.6.x6.nabble.com/sip-Member-objects-and-GC-td4503261.html, but this thread doesn't provide me any solution.

I have been using the following library for a long time: https://github.com/orocos/orocos_kinematics_dynamics

I have been using ubuntu 16.04 with sip 4.15.5 for a long time. Now I am moving to ubuntu 18.04 and sip 4.15.5 isn't working anymore.

Some versions of SIP will cause a segmentation fault on import of PyKDL, others will cause the following issue.

By accessing a member directly after calling a constructor or other operations which will return a new instance, the data of the member is incorrect.

By executing the following code:
```
# Part of an unittest.Testcase
v=Vector(3,4,5)
v1=Vector(4,-2,1)
w=Wrench(Vector(7,-1,3),Vector(2,-3,3))
t=Twist(Vector(6,3,5),Vector(4,-2,7))
R = Rotation.EulerZYX(radians(10),radians(20),radians(-10))
F = Frame(R, v1)
F2 = Frame(F)
v2 = Frame(F).p
self.assertEqual(F,F2)
self.assertEqual(F.p,Frame(F).p)
```
This last line will result in the following error:
```
ts/framestest.py", line 150, in testFrame
    self.assertEqual(F.p,Frame(F).p)
AssertionError: [           4,          -2,           1] != [           0,          -2,           1]
```
I have tried to locate the changes which caused the problem. I did this on ubuntu 16.04 as there 4.15.5 does work. I used the master branch of the KDL libary. I have started from 4.15.5 up to newer version till the error started to show up. I found that 4.16.8 is the first version which breaks the bindings. Especially changeset 11a92ebd4840, https://www.riverbankcomputing.com/hg/sip/rev/11a92ebd4840.

I hope you could help.

Kind regards,
Matthijs van der Burgh

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20200112/b01363d1/attachment.html>


More information about the PyQt mailing list