New release: v2.3.2, v2.2.8 and v2.1.10

2 minute read

v2.3.2, v2.2.8 and v2.1.10 have just been released. These are minor releases containing only bugfixes.

Bug fixes

The following bugs have been fixed in all three versions:

  • GCC 12 is now supported. All build warnings have been fixed.
  • Several clang warnings have been fixed. And the -Wno-static-in-inline flag has been added to $CFLAGS to suppress warnings about the use of extern inline.
  • The r[ead] p[do] and w[rite] p[do] commands in coctl (and the ASCII gateway) mimick RPDO/TPDO access to the local object dictionary. These commands now correctly ignore the AccessType to prevent errors.
  • coctl no longer changes tries to change the bitrate if it was already correct, or if retrieving the bitrate fails. This prevents the network interface from being left in a down state after initialization.
  • A potential use-after-free in the user-defined destructor of a promise has been fixed.
  • Potential race conditions in ev_future_submit() and ev_future_when_all_n() have been fixed.
  • The Server-SDO now copies the CRC support flag from the Client-SDO request to its own response. Even though the server supports CRC in SDO block transfers, reporting this when the client does not may result in an error in some clients. To prevent confusion, if the client does not support CRC, we pretend to not support it either.
  • The CAN frame receiver now uses strict CAN ID matching and does not mask unused bits before comparison. This prevents situations where a CAN frame is sent to a receiver even though the ID differs from what the receiver expects, which may result in assertion failures.

The following additional issues have been addressed in v2.3.2 and v2.2.8:

  • dcfgen now explicitly generates an SDO request to disable the heartbeat consumer, if necessary.
  • The EDS/DCF Python tools now accept a LastEDS key in the FileInfo section of EDS/DCF files.
  • The CAN network interface in liblely-io2 now correctly reports the read/write error count to the user-defined callback function. Previously, the last error code was supplied to the callback instead of the error count.

The following additional issues have been addressed in v2.3.2:

  • --disable-diag (LELY_NO_DIAG) no longer results in build errors.
  • SDO/PDO communication parameters and PDO mapping parameter records are now copied explicity instead of with memcpy(). This fixes potential errors when sub-objects are missing from the local object dictionary.
  • Receiving an empty string via SDO no longer results in an std::string instance being initialized with a null pointer, which is undefined behavior.

Known issues

The following known issues are still present:

  • When compiling with clang with C17 support, the following error is reported for multiple files:
    error: macro 'ATOMIC_VAR_INIT' has been marked as deprecated [-Werror,-Wdeprecated-pragma]
    

    This cannot be easily fixed, since the ATOMIC_VAR_INIT macro is also used in the <lely/libc/stdatomic.h> compatibility layer for compilers without support for C11 atomics. For now, the error can be fixed by adding -std=c11 to $CFLAGS when compiling with clang.

Download

You can download the source from GitLab or the Ubuntu packages from our PPA.

Categories:

Updated: