bus.send() fails with `No buffer space available` despite not reaching the timeout
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- linux, python
- Ambito
- networking
Direzione di ricerca
Inizia in can/interfaces/socketcan/socketcan.py, in particolare in send() e _send_once(), usando come punto di partenza l’errore SocketCAN segnalato. Riproduci il problema con tests/cantest.py e conferma che gli invii ripetuti vengano ritentati finché il timeout rimane attivo; il lavoro è completato quando il caso di 100 frames non genera più un errore anticipato quando lo spazio nel buffer è temporaneamente non disponibile.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
When sending a lot of packets very quickly to a physical socketcan bus, bus.send() raises a can.exceptions.CanOperationError: Failed to transmit: No buffer space available [Error Code 105] despite the timeout not being reached.
To Reproduce
Send 100 frames to a physical socketcan bus with timeout=1.0 for each frame and no delay between sending the frames.
Expected behavior
can.send() should retry transmission until buffer space is available or the timeout is exceeded.
Additional context
OS and version: Ubuntu 24.04
Python version: 3.12.3
python-can version: 4.6.1
python-can interface/s (if applicable): socketcan (for a CANable 2.0 running CANnectivity)
Traceback and logs
$ ip -d link show pcan-e
12: pcan-e: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can promiscuity 0 allmulti 0 minmtu 0 maxmtu 0
can state ERROR-ACTIVE restart-ms 0
bitrate 1024096 sample-point 0.746
tq 5 prop-seg 61 phase-seg1 62 phase-seg2 42 sjw 21 brp 1
gs_usb: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp_inc 1
clock 170000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536 parentbus usb parentdev 1-7.3:1.0
$ time python tests/cantest.py
Traceback (most recent call last):
File "/home/gos/gena-sidl/Integration-Tests/env/lib/python3.12/site-packages/can/interfaces/socketcan/socketcan.py", line 889, in _send_once
sent = self.socket.send(data)
^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 105] No buffer space available
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/gos/gena-sidl/Integration-Tests/tests/cantest.py", line 12, in <module>
bus.send(msg, timeout=1.0)
File "/home/gos/gena-sidl/Integration-Tests/env/lib/python3.12/site-packages/can/interfaces/socketcan/socketcan.py", line 874, in send
sent = self._send_once(data, channel)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gos/gena-sidl/Integration-Tests/env/lib/python3.12/site-packages/can/interfaces/socketcan/socketcan.py", line 891, in _send_once
raise can.CanOperationError(
can.exceptions.CanOperationError: Failed to transmit: No buffer space available [Error Code 105]
SocketcanBus was not properly shut down
real 0m0.112s
user 0m0.099s
sys 0m0.013s
with the following test script:
#!/usr/bin/env python3
import can
N_PACKETS = 100
bus = can.Bus(interface="socketcan", channel="pcan-e")
data = bytes([0xAB] * 8)
for _ in range(N_PACKETS):
msg = can.Message(arbitration_id=1, is_extended_id=True, data=data)
bus.send(msg, timeout=1.0)
bus.shutdown()
- Lingua principale
- Python
- Stelle
- 1.6k
- Fork
- 697
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di hardbyte/python-can
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
hardbyte/python-can#2103 ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
hardbyte/python-can#2077 · 1 commento · 1 reazione ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
hardbyte/python-can#1922 · 1 reazione ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
hardbyte/python-can#2102 ·
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
hardbyte/python-can#2092 ·
Tutte le issue di hardbyte/python-can
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
canonical/paas-charm#368 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
addition to tracking list Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
StevenBlack/hosts#3256 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
qualcomm/qai-appbuilder#275 ·