IXXAT: timestamps read 1.5 x wall time plus adapter uptime (misplaced parenthesis in _timeoffset; start tick never captured in vcinpl2)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 88/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- python
- Domaine
- backend, networking
Piste de recherche
Commencez dans can/interfaces/ixxat/canlib_vcinpl.py autour des lignes 629 et 705, puis comparez avec can/interfaces/ixxat/canlib_vcinpl2.py autour des lignes 735 et 843, en vous concentrant sur la configuration du décalage d’epoch et la gestion de CAN_INFO_START. Exécutez la reproduction fournie de bus.recv avec du trafic IXXAT et vérifiez que les horodatages s’alignent sur time.time, tandis que l’espacement des trames dérivé du matériel reste inchangé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
On the IXXAT backend every received Message.timestamp reads about 28 years in the future, plus the adapter's uptime. Measured on a USB-to-CAN V2 compact (VCI V4 driver 4.1.264.0, fd=False, python-can 4.6.1, Windows 11, Python 3.12): the first frame after Bus(interface="ixxat", channel=0, bitrate=500000) stamped 2684545240.8 while time.time() read 1789696744.2 — a ratio of 1.5000001. The excess over 1.5 * time.time() grew from 142.4 s to 146.5 s across two opens 4.1 s apart, i.e. it is the adapter's own tick counter since power-up, never rebased.
Two lines cause it, both present on main today:
-
A misplaced parenthesis in the epoch offset, in both backends:
can/interfaces/ixxat/canlib_vcinpl.pyline 629can/interfaces/ixxat/canlib_vcinpl2.pyline 735
self._timeoffset = start_begin + (start_end - start_begin / 2)This evaluates to
1.5 * start_begin + start_endinstead of the midpointstart_begin + (start_end - start_begin) / 2. Hence the 1.5 x wall-clock epoch. -
The start tick is never captured in
canlib_vcinpl2.py(line 843): theCAN_INFO_STARTcheck is anelifsibling of theCAN_MSGTYPE_INFObranch rather than nested inside it, so an INFO message is consumed by the firstelifand_starttickoffsetstays0. Every timestamp then carries the adapter's uptime.canlib_vcinpl.pyonmainhas this check nested correctly (line 705); the FD backend does not.elif self._message.uMsgInfo.Bits.type == constants.CAN_MSGTYPE_INFO: log.info(...) # Handle CAN start info message elif self._message.abData[0] == constants.CAN_INFO_START: # never reached for INFO messages self._starttickoffset = self._message.dwTime
The spacing between frames is correct and hardware-derived (10.014 s of frame time against 10.014 s of wall time over 10 s, never a step backwards, 9 µs resolution), so this is purely the epoch.
To Reproduce
import time, can
bus = can.Bus(interface="ixxat", channel=0, bitrate=500000)
msg = bus.recv(5)
print(msg.timestamp, time.time(), msg.timestamp / time.time())
# 2684545240.8 1789696744.2 1.5000001
Any bus with traffic reproduces it; the ratio of timestamp / time.time() is 1.5 rather than 1.0.
Expected behaviour
Message.timestamp should be Unix time to within the open call, as the other backends provide, with the adapter's own tick spacing preserved.
Additional context
- python-can 4.6.1 (also present on
mainat the lines cited above) - IXXAT USB-to-CAN V2 compact, HMS VCI V4 4.1.264.0, Windows 11, Python 3.12
- Working around it downstream by adding one constant settled from the first frame's arrival when the bus's offset lies outside the open call; happy to open a PR for the two one-line fixes if that is welcome.
- Langage dominant
- Python
- Étoiles
- 1.6k
- Forks
- 697
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de hardbyte/python-can
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
hardbyte/python-can#2077 · 1 commentaire · 1 réaction ·
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
hardbyte/python-can#1922 · 1 réaction ·
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
hardbyte/python-can#2102 ·
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
hardbyte/python-can#2092 ·
-
bug
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
hardbyte/python-can#2091 ·
Toutes les issues de hardbyte/python-can
Issues similaires
-
bug priority:low
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
CyberAgent/psd2svg#436 ·
-
area/install-update comp/cli comp/desktop P3 sweeper:risk-compatibility type/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
NousResearch/hermes-agent#122386 · 1 commentaire ·
-
ai-generated
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
vllm-project/production-stack#1105 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100