[FreeBSD] freebsd/sensors.c: Unhandled error from sysctlbyname on systems without coretemp (eg anything AMD)
Author: agrajag9Created Sep 18, 2026Updated Sep 18, 2026
Labelsbugfreebsdbadexc
sysctlbyname() returns ERR#2 'No such file or directory' on AMD and other non-coretemp systems.
There is no error handling code around this, which ultimately causes psutil.sensors_temperatures() to fail, despite being able to return current temperatures.
On my AMD 5950X with amdtemp.ko loaded:
$ sysctl -a | egrep -E ': [0-9\.]{1,4}C$'
dev.amdtemp.0.ccd1: 72.1C
dev.amdtemp.0.ccd0: 67.0C
dev.amdtemp.0.core0.sensor0: 72.1C
dev.cpu.31.temperature: 72.1C
dev.cpu.30.temperature: 72.1C
dev.cpu.29.temperature: 72.1C
dev.cpu.28.temperature: 72.1C
dev.cpu.27.temperature: 72.1C
dev.cpu.26.temperature: 72.1C
dev.cpu.25.temperature: 72.1C
dev.cpu.24.temperature: 72.1C
dev.cpu.23.temperature: 72.1C
dev.cpu.22.temperature: 72.1C
dev.cpu.21.temperature: 72.1C
dev.cpu.20.temperature: 72.1C
dev.cpu.19.temperature: 72.1C
dev.cpu.18.temperature: 72.1C
dev.cpu.17.temperature: 72.1C
dev.cpu.16.temperature: 72.1C
dev.cpu.15.temperature: 72.1C
dev.cpu.14.temperature: 72.1C
dev.cpu.13.temperature: 72.1C
dev.cpu.12.temperature: 72.1C
dev.cpu.11.temperature: 72.1C
dev.cpu.10.temperature: 72.1C
dev.cpu.9.temperature: 72.1C
dev.cpu.8.temperature: 72.1C
dev.cpu.7.temperature: 72.1C
dev.cpu.6.temperature: 72.1C
dev.cpu.5.temperature: 72.1C
dev.cpu.4.temperature: 72.1C
dev.cpu.3.temperature: 72.1C
dev.cpu.2.temperature: 72.1C
dev.cpu.1.temperature: 72.1C
dev.cpu.0.temperature: 72.1CSteps to recreate:
>>> import psutil
>>> psutil.sensors_temperatures()
FileNotFoundError: [Errno 2] No such file or directory (originated from sysctlbyname('dev.cpu.0.coretemp.tjmax'))
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.12/site-packages/psutil/__init__.py", line 2325, in sensors_temperatures
rawdict = _psplatform.sensors_temperatures()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/psutil/_psbsd.py", line 425, in sensors_temperatures
current, high = cext.sensors_cpu_temperature(cpu)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SystemError: <built-in function sensors_cpu_temperature> returned a result with an exception setIf we hook python with truss we can see exactly the syscall and returned error:
43 80471: 3.171309199 __sysctl("hw.ncpu",2,0x7fffffffd844,0x7fffffffd838,0x0,0) = 0 (0x0)
44 80471: 3.171371820 __sysctlbyname("dev.cpu.0.temperature",21,0x7fffffffd81c,0x7fffffffd6c8,0x0,0) = 0 (0x0)
45 80471: 3.171405861 __sysctlbyname("dev.cpu.0.coretemp.tjmax",24,0x7fffffffd818,0x7fffffffd6c8,0x0,0) ERR#2 'No such file or directory'
46 80471: 3.171548793 write(2,"FileNotFoundError: [Errno 2] No such file or directory (originated from sysctlbyname('dev.cpu.0.coretemp.tjmax'))\n",114) = 114 (0x72)Source: giampaolo/psutil