Skip to content

v0.28.0 - Critical Bug Fixes

Latest

Choose a tag to compare

@christoph2 christoph2 released this 01 Mar 05:14
· 24 commits to master since this release

Release v0.28.0 - 2026-03-01

πŸ› Critical Bug Fixes

This release addresses 4 production-critical bugs affecting real users:

1. DAQ InterleavedMode Fix (#210, WP-18)

  • Impact: ERR_OUT_OF_RANGE when configuring DAQ with interleavedMode=True
  • Root Cause: Sequence counter byte not included in overhead calculation
  • Fix: Correctly calculates frame overhead for interleaved mode
  • Affected: Dynamic DAQ allocation with interleaved slaves
  • Credit: @starryfei for excellent bug report

2. MDF Timestamp Conversion (Discussion #270, WP-13)

  • Impact: INCA error 'File contains reverse time stamps'
  • Root Cause: Timestamps exported as nanoseconds instead of seconds
  • Fix: Converts to seconds per ASAM MDF v4 specification
  • Affected: xmraw β†’ MDF conversion, INCA/asamdf compatibility
  • Credit: @bobejo for detailed investigation

3. DaqRecorder Unmap Error (#269, WP-12)

  • Impact: Spurious RuntimeError when stopping DAQ recording
  • Root Cause: Stale errno causing false 'Resource temporarily unavailable'
  • Fix: Clears errno before unmap() calls in C++ code
  • Affected: DaqRecorder finalize/resize operations
  • Credit: @bobejo for POSIX insights

4. xcp-profile CLI Script (Bonus Fix)

  • Impact: 'xcp-profile convert file.toml -o output.py' crashed
  • Root Cause: Incompatible trait configuration, no positional arg support
  • Fix: Added positional argument parsing and proper exit codes
  • Affected: Configuration file conversion workflow

πŸ“Š Testing

  • βœ… 312/312 tests passing
  • βœ… Validated against ETH server (interleavedMode=True)
  • βœ… Validated against CAN server (interleavedMode=False)
  • βœ… No regressions detected

πŸ“ What Changed

DAQ System:

  • \pyxcp/daq_stim/init.py: InterleavedMode overhead calculation

Recorder:

  • \pyxcp/recorder/writer.hpp: errno handling in unmap operations
  • \pyxcp/recorder/converter/init.py: MDF timestamp conversion
  • \pyxcp/examples/ex_mdf.py: MDF timestamp conversion

Configuration:

  • \pyxcp/config/init.py: xcp-profile positional arguments

πŸ™ Community Impact

Issues Resolved:

  • Closed #156: DAQ data retrieval (feature available since v0.22)
  • Fixed #210: ERR_OUT_OF_RANGE with interleavedMode
  • Fixed #269: DaqRecorder unmap error
  • Fixed Discussion #270: MDF timestamp conversion

Special Thanks:

  • @starryfei for identifying the interleavedMode sequence counter issue
  • @bobejo for two critical bug reports with excellent diagnostics

πŸš€ Upgrade Recommendation

HIGH PRIORITY if you:

  • Use DAQ with slaves that have interleavedMode=True
  • Export xmraw files to MDF format for use with INCA/Vector tools
  • Experience spurious errors when stopping DaqRecorder
  • Use xcp-profile convert command

πŸ“¦ Installation

\\οΏ½ash
pip install --upgrade pyxcp
\\

Full Changelog

See CHANGELOG.md for detailed technical information.