[ros-users] [Discourse.ros.org] [Next Generation ROS] Error using python3 nodes on ARM64 & CoreDX

Brannon King ros.discourse at gmail.com
Wed Nov 1 16:31:02 UTC 2017



>Do you happen to have a backtrace?

I can't seem to create one. No core dump is produced even with `ulimit -c unlimited`. The error must be caught (but subscription not created).

>Does it fail when you create a subscription or when you try to deserialize a message?

Definitely when creating the subscription.

>Do you have the same problem with message types that are of known size (like uint64t) ?

Yes, I do.

>Can you reproduce it with a pure C communication?

No, I cannot.

> running test_messages_c...

All the rclcpp tests from `test_communications` pass and all the rclpy tests fail with the same error:
`[test_subscriber] *** Error in `/usr/bin/python3': free(): invalid pointer: 0x0000007f9753f768 ***`

I question the `PyMem_Free` call here (and in similar contexts throughout the file): https://github.com/ros2/rclpy/blob/ec2220239d089f7b5d03a6ed1f6a3136e7c4d049/rclpy/src/rclpy/_rclpy.c#L1183
I'm no Python extension expert, but surely it's not a best-practice to destroy objects passed in by the user. That would be the user/caller's responsibility. What if the same QoS object was passed to multiple subscription calls but the first one destroyed it? In looking around online, it seems that the right approach is to call `Py_XDECREF` on each object created via `PyArg_ParseTuple` (every parameter with type "O", other types having their individual cleanup instructions).





---
[Visit Topic](https://discourse.ros.org/t/error-using-python3-nodes-on-arm64-coredx/3057/3) or reply to this email to respond.




More information about the ros-users mailing list