Environment
- OS: Windows 11
- Python: 3.14.3
- cve-bin-tool: 3.4
- aiohttp: 3.13.3
Steps to reproduce
pip install cve-bin-tool # installs under Python 3.14
cve-bin-tool --input-file requirements.txt
Expected
CVE database downloads successfully
Actual
Crashes at ~67% with:
ClientPayloadError: Response payload is not completed:
<ContentLengthError: 400, message='Not enough data to satisfy content length header.'>
Full traceback
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\aiohttp\client_proto.py:144 in connection_lost
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\cli.py:891 in main
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\cvedb.py:316 in get_cvelist_if_stale
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\cvedb.py:299 in refresh_cache_and_update_db
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\async_utils.py:90 in run_coroutine
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\cvedb.py:293 in refresh
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\data_sources\nvd_source.py:100 in get_cve_data
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\data_sources\nvd_source.py:418 in fetch_cves
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\data_sources\nvd_source.py:541 in cache_update
ContentLengthError: 400, message='Not enough data to satisfy content length header.'
ClientPayloadError: Response payload is not completed: <ContentLengthError: 400, message='Not enough data to satisfy content length header.'>
Root cause hypothesis
aiohttp's async HTTP parser behavior changed in Python 3.14.
The ContentLengthError originates in aiohttp/client_proto.py:144
during connection_lost, suggesting the asyncio event loop
integration has a breaking change in 3.14.
Same aiohttp version (3.13.3) works correctly under Python 3.11.
Workaround
Install and run under Python 3.11.
Environment
Steps to reproduce
pip install cve-bin-tool # installs under Python 3.14
cve-bin-tool --input-file requirements.txt
Expected
CVE database downloads successfully
Actual
Crashes at ~67% with:
ClientPayloadError: Response payload is not completed:
<ContentLengthError: 400, message='Not enough data to satisfy content length header.'>
Full traceback
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\aiohttp\client_proto.py:144 in connection_lost
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\cli.py:891 in main
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\cvedb.py:316 in get_cvelist_if_stale
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\cvedb.py:299 in refresh_cache_and_update_db
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\async_utils.py:90 in run_coroutine
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\cvedb.py:293 in refresh
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\data_sources\nvd_source.py:100 in get_cve_data
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\data_sources\nvd_source.py:418 in fetch_cves
C:\Users\cheta\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\cve_bin_tool\data_sources\nvd_source.py:541 in cache_update
ContentLengthError: 400, message='Not enough data to satisfy content length header.'
ClientPayloadError: Response payload is not completed: <ContentLengthError: 400, message='Not enough data to satisfy content length header.'>
Root cause hypothesis
aiohttp's async HTTP parser behavior changed in Python 3.14.
The ContentLengthError originates in aiohttp/client_proto.py:144
during connection_lost, suggesting the asyncio event loop
integration has a breaking change in 3.14.
Same aiohttp version (3.13.3) works correctly under Python 3.11.
Workaround
Install and run under Python 3.11.