hbriese / fancon Goto Github PK
View Code? Open in Web Editor NEWA Linux fan control daemon
License: Apache License 2.0
A Linux fan control daemon
License: Apache License 2.0
This is what I get when I try to execute
hbarta@cypress:~$ fancon
------------------------------------------------------------------------------------------------------------
First use: please run 'sudo fancon test && sudo fancon -lf', then configure fan profiles in /etc/fancon.conf
------------------------------------------------------------------------------------------------------------
Usage:
fancon <command> [options]
Available commands (and options <default>):
-lf list-fans Lists the UIDs of all fans
-ls list-sensors List the UIDs of all temperature sensors
-wc write-config Writes missing fan UIDs to /etc/fancon.conf
test Tests the fan characteristic of all fans, required for usage of RPM in /etc/fancon.conf
-r retries 4 Number of retries a test does before failure, increase if you think a failing fan can pass!
start Starts the fancon daemon
-f fork Forks off the parent process
-t threads Ignores "threads=" in /etc/fancon.conf and sets maximum number of threads to run
stop Stops the fancon daemon
reload Reloads the fancon daemon
Global options:
-d debug Write debug level messages to log
-q quiet Only write error level messages to log
Segmentation fault (core dumped)
hbarta@cypress:~$ fancon -lf
------------------------------------------------------------------------------------------------------------
First use: please run 'sudo fancon test && sudo fancon -lf', then configure fan profiles in /etc/fancon.conf
------------------------------------------------------------------------------------------------------------
Segmentation fault (core dumped)
hbarta@cypress:~$ sudo -s
[sudo] password for hbarta:
root@cypress:~# fancon test
------------------------------------------------------------------------------------------------------------
First use: please run 'sudo fancon test && sudo fancon -lf', then configure fan profiles in /etc/fancon.conf
------------------------------------------------------------------------------------------------------------
/snap/fancon/11/bin/fancon: error while loading shared libraries: /snap/fancon/11/usr/lib/x86_64-linux-gnu/libboost_log.so.1.61.0: shared object not open
root@cypress:~#
The shared object seems to exist.
hbarta@cypress:~$ ls -l /snap/fancon/11/usr/lib/x86_64-linux-gnu/libboost_log.so.1.61.0
-rw-r--r-- 1 root root 778496 Aug 3 2016 /snap/fancon/11/usr/lib/x86_64-linux-gnu/libboost_log.so.1.61.0
System and snap info
hbarta@cypress:~$ cat /etc/issue
Ubuntu 18.04.2 LTS \n \l
hbarta@cypress:~$ snap list fancon
Name Version Rev Tracking Publisher Notes
fancon 0.7.2.5 11 stable hbriese -
hbarta@cypress:~$ dpkg -l snapd
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-========================-=================-=================-======================================================
ii snapd 2.37.4+18.04.1 amd64 Daemon and tooling that enable snap packages
hbarta@cypress:~$
Let me know if there is further information that would help (or if this is not the correct place to file this bug.)
I'm testing fancon_0.12.0_amd64.deb
on Ubuntu 17.04
$ fancon test
07/28 15:34 [12860] <debug> NVIDIA fan control not supported
Adding 1 new fans
Starting tests. This may take some time (to ensure accurate results)
terminate called after throwing an instance of 'std::ios_base::failure[abi:cxx11]'
what(): basic_filebuf::underflow error reading the file: iostream error
Aborted (core dumped)
the fancon.conf
contains following:
# <Fan UID> <Sensor UID> <Fan Config>
#nouveau/0:fan1
dell_smm/1:fan1
dell_smm/1:fan2
(base) zhe@zhe:~$ fancon
05/03 11:19 [18766] <debug> Failed to load libXNVCtrl.so:
libXNVCtrl.so: cannot open shared object file:
No such file or directory; see `fancon --help` for more info
段错误 (核心已转储)
In addition, i cannot find the text file configuration in /etc/fancon.conf.
Hi,
It's not working on Mac, there's some msg fancon test gives that it can't find files in /sys/class/..., messy output about pwm or similar, what doesn't surprise when you're aware that all seems to be is in /sys/devices/platform/applesmc.768/ where you can change fans via rpm. Can this be fixed? Listing fans and sensors seems ok, it's applesmc/1:fan1, applesmc/1:fan2 for fans or alike..
T2MS
Mark
Cannot build fancon despite all dependencies
mkdir build; cd build && cmake -DCMAKE_BUILD_TYPE=Release -DNVIDIA_SUPPORT=ON .. && make -j && sudo make install
$ mkdir build; cd build && cmake -DCMAKE_BUILD_TYPE=Release -DNVIDIA_SUPPORT=ON .. && make -j && sudo make install
-- The CXX compiler identification is GNU 7.5.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Boost version: 1.66.0
-- Found the following Boost libraries:
-- log
-- thread
-- system
-- filesystem
-- date_time
-- log_setup
-- chrono
-- Found Sensors: /usr/include/sensors
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib64/libX11.so
-- Found NVCtrl: /usr/include/NVCtrl
NVIDIA support enabled
-- Found Protobuf: /usr/lib64/libprotobuf.so;-lpthread (found version "3.5.0")
-- Found GRPC: /usr/lib64/libgrpc.so
-- Configuring done
CMake Error at CMakeLists.txt:54 (add_executable):
Cannot find source file:
/home/chris/Software/fancon/src/proto/DevicesSpec.grpc.pb.cc
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
CMake Error: CMake can not determine linker language for target: fancon
CMake Error: Cannot determine link language for target "fancon".
-- Generating done
-- Build files have been written to: /home/chris/Software/fancon/build
Hi
Its would be really great if instructions on how to use the program were included in the readme. I understand that it is somehow controlled through the command line but other than that I can't work it out.
A GUI would be really amazing, currently there don't seem to be any other options for Ubuntu
Thaniks very much for making this
How can I cleanly remove fancon?
I compiled git version de5bb40 on Fedora 31.
sudo ./fancon start
20/07/06 16:45 [81198] <warning> Unknown argument 'start' from statement 'start'
Starting controller
Testing fans, this may take a long time.
Don't stress your system!
Tests …
/etc/fanconf.conf
, does not write to /etc
Failed with NVIDIA control by root
user.
# LANG=C fancon
No protocol specified
20/05/06 20:27 [109117] <warning> $XAUTHORITY env variable(s) not set, set to enable NVIDIA support
20/05/06 20:27 [109117] <fatal> X11Display must be connected
terminate called after throwing an instance of 'std::exception'
what(): std::exception
But I can't run as normal user:
$ funcon
20/05/06 20:32 [109236] <fatal> Must be run as root
Seems service which needs running the Xorg should be running by non root user.
fancon
with NVIDIA supportfancon
by root
ro with systemd unit fileRun without errors with systemd unit file.
Config:
config {
update_interval: 1000
dynamic: true
smoothing_intervals: 3
top_stickiness_intervals: 2
temp_averaging_intervals: 3
}
devices {
fan {
type: SYS
label: "hwmon1/fan2"
sensor: "hwmon0/Tdie"
temp_to_rpm: "40: 0%, 50: 20%, 60: 50%, 70: 80%, 80: 100%"
rpm_to_pwm: "0: 30, 175: 34, 181: 36, 203: 38, 212: 40, 219: 42, 239: 44, 249: 46, 261: 48, 262: 50, 266: 52, 283: 54, 297: 56, 310: 58, 320: 60, 336: 62, 349: 64, 352: 66, 370: 68, 377: 70, 398: 72, 406: 74, 418: 76, 424: 78, 451: 80, 466: 82, 476: 84, 496: 86, 498: 88, 499: 90, 518: 92, 533: 94, 543: 96, 547: 98, 569: 100, 573: 102, 584: 104, 597: 106, 606: 108, 625: 110, 633: 112, 639: 114, 648: 116, 656: 118, 669: 120, 685: 122, 695: 124, 699: 126, 717: 128, 722: 130, 727: 132, 734: 134, 754: 136, 758: 138, 779: 140, 781: 142, 790: 144, 791: 146, 810: 148, 821: 150, 841: 152, 849: 154, 856: 156, 861: 158, 867: 160, 882: 162, 889: 164, 903: 166, 916: 168, 950: 170, 954: 172, 964: 174, 968: 176, 976: 178, 982: 180, 984: 182, 1000: 184, 1021: 186, 1038: 188, 1040: 190, 1042: 192, 1044: 194, 1051: 196, 1065: 198, 1094: 200, 1102: 202, 1109: 204, 1116: 206, 1128: 208, 1129: 210, 1147: 212, 1149: 214, 1159: 216, 1171: 218, 1185: 220, 1190: 222, 1198: 224, 1217: 226, 1220: 228, 1236: 230, 1250: 232, 1256: 234, 1261: 236, 1274: 238, 1275: 242, 1299: 244, 1305: 246, 1309: 250, 1323: 252, 1337: 254, 1356: 255"
pwm_path: "/sys/class/hwmon/hwmon1/pwm2"
rpm_path: "/sys/class/hwmon/hwmon1/fan2_input"
enable_path: "/sys/class/hwmon/hwmon1/pwm2_enable"
driver_flag: 5
}
fan {
type: NVIDIA
label: "1660_SUPER"
sensor: "1660_SUPER_temp"
temp_to_rpm: "60: 0%, 70: 30%, 80: 50%, 90: 100%"
rpm_to_pwm: "1315: 102, 2454: 188, 2646: 204, 3303: 255"
start_pwm: 102
}
sensor {
type: NVIDIA
label: "1660_SUPER_temp"
}
sensor {
label: "hwmon0/Tdie"
input_path: "/sys/class/hwmon/hwmon0/temp1_input"
max_path: "/sys/class/hwmon/hwmon0/temp1_max"
}
}
I tried to wwrite PKGBUILD for the Arch Linux distribution. But I faced with some problems.
Seems current version of the protobuf library not compatible with fancon sources.
Build log:
-- The CXX compiler identification is Clang 10.0.0
-- Check for working CXX compiler: /usr/lib/ccache/bin/clang++
-- Check for working CXX compiler: /usr/lib/ccache/bin/clang++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found version "1.72.0") found components: log thread system filesystem
-- Found Sensors: /usr/include/sensors
-- Found Protobuf: /usr/lib/libprotobuf.so;-lpthread (found version "3.11.4")
-- Found GRPC: /usr/lib/libgrpc.so
-- Configuring done
-- Generating done
-- Build files have been written to: /var/cache/build/src/fancon/build
Scanning dependencies of target fancon
[ 5%] Building CXX object CMakeFiles/fancon.dir/src/main.cpp.o
In file included from /var/cache/build/src/fancon/src/main.cpp:1:
In file included from /var/cache/build/src/fancon/src/main.hpp:23:
In file included from /var/cache/build/src/fancon/src/Controller.hpp:13:
In file included from /var/cache/build/src/fancon/src/Devices.hpp:6:
In file included from /var/cache/build/src/fancon/src/FanDell.hpp:4:
In file included from /var/cache/build/src/fancon/src/DellSMM.hpp:6:
In file included from /var/cache/build/src/fancon/src/FanInterface.hpp:7:
In file included from /var/cache/build/src/fancon/src/SensorInterface.hpp:8:
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:25:2: error: This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
^
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:26:2: error: incompatible with your Protocol Buffer headers. Please
#error incompatible with your Protocol Buffer headers. Please
^
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:27:2: error: regenerate this file with a newer version of protoc.
#error regenerate this file with a newer version of protoc.
^
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:215:56: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedInputStream *input) final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:217:64: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedOutputStream *output) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:219:68: error: only virtual member functions can be marked 'final'
bool deterministic, ::google::protobuf::uint8 *target) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:336:56: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedInputStream *input) final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:338:64: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedOutputStream *output) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:340:68: error: only virtual member functions can be marked 'final'
bool deterministic, ::google::protobuf::uint8 *target) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:459:56: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedInputStream *input) final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:461:64: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedOutputStream *output) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:463:68: error: only virtual member functions can be marked 'final'
bool deterministic, ::google::protobuf::uint8 *target) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:567:56: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedInputStream *input) final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:569:64: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedOutputStream *output) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:571:68: error: only virtual member functions can be marked 'final'
bool deterministic, ::google::protobuf::uint8 *target) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:800:56: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedInputStream *input) final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:802:64: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedOutputStream *output) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:804:68: error: only virtual member functions can be marked 'final'
bool deterministic, ::google::protobuf::uint8 *target) const final;
^~~~~
/var/cache/build/src/fancon/src/proto/DevicesSpec.pb.h:1010:56: error: only virtual member functions can be marked 'final'
::google::protobuf::io::CodedInputStream *input) final;
^~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [CMakeFiles/fancon.dir/build.make:83: CMakeFiles/fancon.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:96: CMakeFiles/fancon.dir/all] Error 2
make: *** [Makefile:150: all] Error 2
PKGBUILD link: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=fancon-git
Start docker container with the build environment:
docker run -t -i --rm registry.gitlab.com/aur1/utils:latest bash
Inside container:
sudo pacman --sync --refresh --sysupgrade --noconfirm
aur sync fancon-git --noview --noconfirm
Sucess build.
https://aur.archlinux.org/fancon.git fails to build on Arch, due to 404 link to https://github.com/hbriese/fancon/archive/v0.23.7.tar.gz
Actual tar.gz is published without starting "v"
Latest git https://aur.archlinux.org/fancon-git.git doesn't build as well, throws error:
CMake Error at CMakeLists.txt:65 (add_executable):
Cannot find source file:
/home/user/fancon-git/src/fancon/src/proto/DevicesSpec.pb.cc
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .h .hh .h++
.hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc
CMake Error at CMakeLists.txt:65 (add_executable):
No SOURCES given to target: fancon
CMake Generate step failed. Build files cannot be regenerated correctly.
==> ERROR: A failure occurred in build().
Aborting...
Since the instructions for Arch installation did not succeed (it seems that Boost 1.72 is too old for this project), I used Boost 1.74 and 1.73 to test. I ran the fancon service
command in one terminal, and in the other fancon
, and said y
to test the fans. The fancon service
then segfaults. Also copied is the output from Valgrind.
fancon service
output:
Service started
20/12/03 19:50 [2496] warning: hwmon2/fan1: skipping - curve not configured & sensor not configured
20/12/03 19:50 [2496] warning: hwmon2/fan2: skipping - curve not configured & sensor not configured
20/12/03 19:50 [2496] warning: hwmon2/fan7: skipping - curve not configured & sensor not configured
20/12/03 19:50 [2496] warning: hwmon2/fan3: skipping - curve not configured & sensor not configured
20/12/03 19:50 [2496] warning: hwmon2/fan6: skipping - curve not configured & sensor not configured
20/12/03 19:50 [2496] warning: hwmon2/fan4: skipping - curve not configured & sensor not configured
20/12/03 19:50 [2496] warning: hwmon2/fan5: skipping - curve not configured & sensor not configured
Segmentation fault
fancon
output:
Test devices & generate a config? (y/n): y
Add 'force' option to test already tested fans
hwmon2/fan1: 0%
20/12/03 19:50 [2545] fatal: Unable to connect to service
Start with: sudo systemctl start fancon OR sudo fancon service
20/12/03 19:50 [2545] fatal: Unable to connect to service
Start with: sudo systemctl start fancon OR sudo fancon service
20/12/03 19:50 [2545] fatal: Unable to connect to service
Start with: sudo systemctl start fancon OR sudo fancon service
20/12/03 19:50 [2545] error: hwmon2/fan1: test failed
20/12/03 19:50 [2545] fatal: Unable to connect to service
Start with: sudo systemctl start fancon OR sudo fancon service
20/12/03 19:50 [2545] fatal: Unable to connect to service
Start with: sudo systemctl start fancon OR sudo fancon service
20/12/03 19:50 [2545] fatal: Unable to connect to service
Start with: sudo systemctl start fancon OR sudo fancon service
20/12/03 19:50 [2545] error: hwmon2/fan5: test failed
20/12/03 19:50 [2545] error: hwmon2/fan3: test failed
20/12/03 19:50 [2545] fatal: Unable to connect to service
Start with: sudo systemctl start fancon OR sudo fancon service
20/12/03 19:50 [2545] error: hwmon2/fan2: test failed
20/12/03 19:50 [2545] error: hwmon2/fan6: test failed
20/12/03 19:50 [2545] error: hwmon2/fan4: test failed
20/12/03 19:50 [2545] error: hwmon2/fan7: test failed
Valgrind output for fancon service
:
==2618== Memcheck, a memory error detector
==2618== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==2618== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==2618== Command: fancon service
==2618==
Service started
20/12/03 18:47 [2618] warning: hwmon4/fan1: skipping - curve not configured & sensor not configured
20/12/03 18:47 [2618] warning: hwmon4/fan2: skipping - curve not configured & sensor not configured
20/12/03 18:47 [2618] warning: hwmon4/fan3: skipping - curve not configured & sensor not configured
20/12/03 18:47 [2618] warning: hwmon4/fan4: skipping - curve not configured & sensor not configured
20/12/03 18:47 [2618] warning: hwmon4/fan5: skipping - curve not configured & sensor not configured
20/12/03 18:47 [2618] warning: hwmon4/fan6: skipping - curve not configured & sensor not configured
20/12/03 18:47 [2618] warning: hwmon4/fan7: skipping - curve not configured & sensor not configured
terminate called after throwing an instance of 'boost::wrapexcept<boost::lock_error>'
what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument
==2618==
==2618== Process terminating with default action of signal 6 (SIGABRT): dumping core
==2618== at 0x5549615: raise (in /usr/lib/libc-2.32.so)
==2618== by 0x5532861: abort (in /usr/lib/libc-2.32.so)
==2618== by 0x5265869: __gnu_cxx::__verbose_terminate_handler() [clone .cold] (vterminate.cc:95)
==2618== by 0x5271D99: __cxxabiv1::__terminate(void (*)()) (eh_terminate.cc:48)
==2618== by 0x5271E06: std::terminate() (eh_terminate.cc:58)
==2618== by 0x2CF10E: __clang_call_terminate (in /usr/local/bin/fancon)
==2618== by 0x3C1D3F: boost::thread::get_id() const (thread.hpp:712)
==2618== by 0x3C07F5: boost::thread::join() (thread.hpp:733)
==2618== by 0x3D63F8: fc::FanTask::join() (src/FanTask.cpp:18)
==2618== by 0x3C80CB: fc::Controller::test(fc::FanInterface&, bool, bool, std::shared_ptr<fc::Util::ObservableNumber<int> >) (src/Controller.cpp:133)
==2618== by 0x3AEFE3: fc::Service::Test(grpc::ServerContext*, fc_pb::TestRequest const*, grpc::ServerWriter<fc_pb::TestResponse>*) (src/Service.cpp:211)
==2618== by 0x3677AB: fc_pb::DService::Service::Service()::$_13::operator()(fc_pb::DService::Service*, grpc::ServerContext*, fc_pb::TestRequest const*, grpc::ServerWriter<fc_pb::TestResponse>*) const (src/proto/DevicesSpec.grpc.pb.cc:579)
==2618==
==2618== HEAP SUMMARY:
==2618== in use at exit: 427,334 bytes in 2,690 blocks
==2618== total heap usage: 10,146 allocs, 7,456 frees, 1,766,496 bytes allocated
==2618==
==2618== 24 bytes in 1 blocks are possibly lost in loss record 110 of 530
==2618== at 0x483ADEF: operator new(unsigned long) (vg_replace_malloc.c:342)
==2618== by 0x4EF6280: grpc_core::Server::ChannelData::InitTransport(grpc_core::RefCountedPtr<grpc_core::Server>, grpc_channel*, unsigned long, grpc_transport*, long) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF85BF: grpc_core::Server::SetupTransport(grpc_transport*, grpc_pollset*, grpc_channel_args const*, grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode> const&, grpc_resource_user*) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E1775C: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E9818B: grpc_core::ExecCtx::Flush() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E94437: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF2B9F: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x50047D8: grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x5021B7C: grpc::Server::SyncRequestThreadManager::PollForWork(void**, bool*) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E36C: grpc::ThreadManager::MainWorkLoop() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E5BC: grpc::ThreadManager::WorkerThread::Run() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x7A8C3D3: ??? (in /usr/lib/libgpr.so.13.0.0)
==2618==
==2618== 64 bytes in 2 blocks are possibly lost in loss record 278 of 530
==2618== at 0x483ADEF: operator new(unsigned long) (vg_replace_malloc.c:342)
==2618== by 0x35A026: CreateInternal<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > &> (arena.h:511)
==2618== by 0x35A026: DoCreateMaybeMessage<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > &> (arena.h:559)
==2618== by 0x35A026: CreateMaybeMessage<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > &> (arena.h:565)
==2618== by 0x35A026: CreateNoMessage<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > &> (arena.h:585)
==2618== by 0x35A026: Create<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > &> (arena.h:324)
==2618== by 0x35A026: google::protobuf::internal::ArenaStringPtr::CreateInstance(google::protobuf::Arena*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*) (arenastring.h:373)
==2618== by 0x35A319: google::protobuf::internal::ArenaStringPtr::Mutable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*, google::protobuf::Arena*) (arenastring.h:96)
==2618== by 0x357ED6: fc_pb::TestRequest::_internal_mutable_device_label[abi:cxx11]() (src/proto/DevicesSpec.pb.h:3990)
==2618== by 0x34FD17: fc_pb::TestRequest::_InternalParse(char const*, google::protobuf::internal::ParseContext*) (src/proto/DevicesSpec.pb.cc:2782)
==2618== by 0x4AD883F: bool google::protobuf::internal::MergeFromImpl<false>(google::protobuf::io::ZeroCopyInputStream*, google::protobuf::MessageLite*, google::protobuf::MessageLite::ParseFlags) (in /usr/lib/libprotobuf.so.23.0.4)
==2618== by 0x3AD0F2: grpc::Status grpc::GenericDeserialize<grpc::ProtoBufferReader, fc_pb::TestRequest>(grpc::ByteBuffer*, google::protobuf::MessageLite*) (proto_utils.h:86)
==2618== by 0x3ACEDA: grpc::SerializationTraits<fc_pb::TestRequest, void>::Deserialize(grpc::ByteBuffer*, google::protobuf::MessageLite*) (proto_utils.h:112)
==2618== by 0x3AB6E5: grpc::internal::ServerStreamingHandler<fc_pb::DService::Service, fc_pb::TestRequest, fc_pb::TestResponse>::Deserialize(grpc_call*, grpc_byte_buffer*, grpc::Status*, void**) (method_handler.h:218)
==2618== by 0x5029B95: grpc::Server::SyncRequestThreadManager::DoWork(void*, bool, bool) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E424: grpc::ThreadManager::MainWorkLoop() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E5BC: grpc::ThreadManager::WorkerThread::Run() (in /usr/lib/libgrpc++.so.1.33.2)
==2618==
==2618== 71 bytes in 1 blocks are possibly lost in loss record 283 of 530
==2618== at 0x483ADEF: operator new(unsigned long) (vg_replace_malloc.c:342)
==2618== by 0x52B6A39: allocate (new_allocator.h:115)
==2618== by 0x52B6A39: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (basic_string.tcc:1060)
==2618== by 0x52B8779: _S_construct<char*> (basic_string.tcc:580)
==2618== by 0x52B8779: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (basic_string.tcc:565)
==2618== by 0x52B8C56: _S_construct_aux<char const*> (basic_string.h:5121)
==2618== by 0x52B8C56: _S_construct<char const*> (basic_string.h:5142)
==2618== by 0x52B8C56: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (basic_string.tcc:667)
==2618== by 0x5299039: std::runtime_error::runtime_error(char const*) (cow-stdexcept.cc:122)
==2618== by 0x498206B: boost::mutex::lock() (in /usr/lib/libboost_thread.so.1.74.0)
==2618== by 0x4978646: boost::thread::native_handle() (in /usr/lib/libboost_thread.so.1.74.0)
==2618== by 0x3C1CF1: boost::thread::get_id() const (thread.hpp:712)
==2618== by 0x3C07F5: boost::thread::join() (thread.hpp:733)
==2618== by 0x3D63F8: fc::FanTask::join() (src/FanTask.cpp:18)
==2618== by 0x3C80CB: fc::Controller::test(fc::FanInterface&, bool, bool, std::shared_ptr<fc::Util::ObservableNumber<int> >) (src/Controller.cpp:133)
==2618== by 0x3AEFE3: fc::Service::Test(grpc::ServerContext*, fc_pb::TestRequest const*, grpc::ServerWriter<fc_pb::TestResponse>*) (src/Service.cpp:211)
==2618==
==2618== 184 bytes in 1 blocks are possibly lost in loss record 348 of 530
==2618== at 0x483ADEF: operator new(unsigned long) (vg_replace_malloc.c:342)
==2618== by 0x4EF7787: grpc_core::Server::RequestRegisteredCall(grpc_core::Server::RegisteredMethod*, grpc_call**, gpr_timespec*, grpc_metadata_array*, grpc_byte_buffer**, grpc_completion_queue*, grpc_completion_queue*, void*) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF80DA: grpc_server_request_registered_call (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x50274BC: grpc::Server::SyncRequest::Request(grpc_server*, grpc_completion_queue*) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x5029C5D: grpc::Server::SyncRequestThreadManager::DoWork(void*, bool, bool) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E424: grpc::ThreadManager::MainWorkLoop() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E5BC: grpc::ThreadManager::WorkerThread::Run() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x7A8C3D3: ??? (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x48853E8: start_thread (in /usr/lib/libpthread-2.32.so)
==2618== by 0x560C292: clone (in /usr/lib/libc-2.32.so)
==2618==
==2618== 240 bytes in 1 blocks are possibly lost in loss record 365 of 530
==2618== at 0x483A77F: malloc (vg_replace_malloc.c:307)
==2618== by 0x5270BC4: __cxa_allocate_exception (eh_alloc.cc:284)
==2618== by 0x4976632: void boost::throw_exception<boost::lock_error>(boost::lock_error const&) (in /usr/lib/libboost_thread.so.1.74.0)
==2618== by 0x49820A8: boost::mutex::lock() (in /usr/lib/libboost_thread.so.1.74.0)
==2618== by 0x4978646: boost::thread::native_handle() (in /usr/lib/libboost_thread.so.1.74.0)
==2618== by 0x3C1CF1: boost::thread::get_id() const (thread.hpp:712)
==2618== by 0x3C07F5: boost::thread::join() (thread.hpp:733)
==2618== by 0x3D63F8: fc::FanTask::join() (src/FanTask.cpp:18)
==2618== by 0x3C80CB: fc::Controller::test(fc::FanInterface&, bool, bool, std::shared_ptr<fc::Util::ObservableNumber<int> >) (src/Controller.cpp:133)
==2618== by 0x3AEFE3: fc::Service::Test(grpc::ServerContext*, fc_pb::TestRequest const*, grpc::ServerWriter<fc_pb::TestResponse>*) (src/Service.cpp:211)
==2618== by 0x3677AB: fc_pb::DService::Service::Service()::$_13::operator()(fc_pb::DService::Service*, grpc::ServerContext*, fc_pb::TestRequest const*, grpc::ServerWriter<fc_pb::TestResponse>*) const (src/proto/DevicesSpec.grpc.pb.cc:579)
==2618== by 0x367742: grpc::Status std::__invoke_impl<grpc::Status, fc_pb::DService::Service::Service()::$_13&, fc_pb::DService::Service*, grpc::ServerContext*, fc_pb::TestRequest const*, grpc::ServerWriter<fc_pb::TestResponse>*>(std::__invoke_other, fc_pb::DService::Service::Service()::$_13&, fc_pb::DService::Service*&&, grpc::ServerContext*&&, fc_pb::TestRequest const*&&, grpc::ServerWriter<fc_pb::TestResponse>*&&) (invoke.h:60)
==2618==
==2618== 326 bytes in 46 blocks are definitely lost in loss record 394 of 530
==2618== at 0x483A77F: malloc (vg_replace_malloc.c:307)
==2618== by 0x559BB4E: strdup (in /usr/lib/libc-2.32.so)
==2618== by 0x49BD442: sensors_get_label (in /usr/lib/libsensors.so.5.0.0)
==2618== by 0x3D8159: fc::SensorChips::enumerate(std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::unique_ptr<fc::FanInterface, std::default_delete<fc::FanInterface> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::unique_ptr<fc::FanInterface, std::default_delete<fc::FanInterface> > > > >&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<fc::SensorInterface>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::shared_ptr<fc::SensorInterface> > > >&) (src/Devices.cpp:25)
==2618== by 0x3DA55B: fc::Devices::Devices(bool) (src/Devices.cpp:85)
==2618== by 0x3C62C0: fc::Controller::reload(bool) (src/Controller.cpp:89)
==2618== by 0x3C6079: fc::Controller::Controller(std::filesystem::__cxx11::path) (src/Controller.cpp:12)
==2618== by 0x3AD2D0: fc::Service::Service(std::filesystem::__cxx11::path const&, bool) (src/Service.cpp:4)
==2618== by 0x2CD3E6: main (src/main.cpp:34)
==2618==
==2618== 384 bytes in 1 blocks are possibly lost in loss record 407 of 530
==2618== at 0x483CB65: calloc (vg_replace_malloc.c:760)
==2618== by 0x40142EB: _dl_allocate_tls (in /usr/lib/ld-2.32.so)
==2618== by 0x488613C: pthread_create@@GLIBC_2.2.5 (in /usr/lib/libpthread-2.32.so)
==2618== by 0x7A8C5AC: grpc_core::Thread::Thread(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x4E9895A: grpc_core::Executor::SetThreading(bool) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E993EE: grpc_core::Executor::InitAll() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E9AA11: grpc_iomgr_init() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF3DDE: grpc_init (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x36F4FA: grpc::GrpcLibraryCodegen::GrpcLibraryCodegen(bool) (grpc_library.h:45)
==2618== by 0x4FFD73E: grpc::ChannelCredentials::ChannelCredentials() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x4FFD98B: grpc::InsecureChannelCredentials() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x3BF4F4: fc::Client::service_running() (src/Client.cpp:301)
==2618==
==2618== 384 bytes in 1 blocks are possibly lost in loss record 408 of 530
==2618== at 0x483CB65: calloc (vg_replace_malloc.c:760)
==2618== by 0x40142EB: _dl_allocate_tls (in /usr/lib/ld-2.32.so)
==2618== by 0x488613C: pthread_create@@GLIBC_2.2.5 (in /usr/lib/libpthread-2.32.so)
==2618== by 0x7A8C5AC: grpc_core::Thread::Thread(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x4E9895A: grpc_core::Executor::SetThreading(bool) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E993FB: grpc_core::Executor::InitAll() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E9AA11: grpc_iomgr_init() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF3DDE: grpc_init (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x36F4FA: grpc::GrpcLibraryCodegen::GrpcLibraryCodegen(bool) (grpc_library.h:45)
==2618== by 0x4FFD73E: grpc::ChannelCredentials::ChannelCredentials() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x4FFD98B: grpc::InsecureChannelCredentials() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x3BF4F4: fc::Client::service_running() (src/Client.cpp:301)
==2618==
==2618== 384 bytes in 1 blocks are possibly lost in loss record 409 of 530
==2618== at 0x483CB65: calloc (vg_replace_malloc.c:760)
==2618== by 0x40142EB: _dl_allocate_tls (in /usr/lib/ld-2.32.so)
==2618== by 0x488613C: pthread_create@@GLIBC_2.2.5 (in /usr/lib/libpthread-2.32.so)
==2618== by 0x7A8C5AC: grpc_core::Thread::Thread(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x4EAF872: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF3EBA: grpc_init (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x36F4FA: grpc::GrpcLibraryCodegen::GrpcLibraryCodegen(bool) (grpc_library.h:45)
==2618== by 0x4FFD73E: grpc::ChannelCredentials::ChannelCredentials() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x4FFD98B: grpc::InsecureChannelCredentials() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x3BF4F4: fc::Client::service_running() (src/Client.cpp:301)
==2618== by 0x2CD071: main (src/main.cpp:26)
==2618==
==2618== 384 bytes in 1 blocks are possibly lost in loss record 410 of 530
==2618== at 0x483CB65: calloc (vg_replace_malloc.c:760)
==2618== by 0x40142EB: _dl_allocate_tls (in /usr/lib/ld-2.32.so)
==2618== by 0x488613C: pthread_create@@GLIBC_2.2.5 (in /usr/lib/libpthread-2.32.so)
==2618== by 0x7A8C5AC: grpc_core::Thread::Thread(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x4EAF872: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EAFE74: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x7A8C3D3: ??? (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x48853E8: start_thread (in /usr/lib/libpthread-2.32.so)
==2618== by 0x560C292: clone (in /usr/lib/libc-2.32.so)
==2618==
==2618== 384 bytes in 1 blocks are possibly lost in loss record 411 of 530
==2618== at 0x483CB65: calloc (vg_replace_malloc.c:760)
==2618== by 0x40142EB: _dl_allocate_tls (in /usr/lib/ld-2.32.so)
==2618== by 0x488613C: pthread_create@@GLIBC_2.2.5 (in /usr/lib/libpthread-2.32.so)
==2618== by 0x7A8C5AC: grpc_core::Thread::Thread(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x502DDD8: grpc::ThreadManager::WorkerThread::WorkerThread(grpc::ThreadManager*) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E071: grpc::ThreadManager::Initialize() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x501F3D4: grpc::Server::Start(grpc::ServerCompletionQueue**, unsigned long) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x501B28F: grpc::ServerBuilder::BuildAndStart() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x3AD966: fc::Service::run() (src/Service.cpp:22)
==2618== by 0x2CD401: main (src/main.cpp:36)
==2618==
==2618== 416 bytes in 4 blocks are possibly lost in loss record 416 of 530
==2618== at 0x483A6AF: malloc (vg_replace_malloc.c:306)
==2618== by 0x7A88281: gpr_realloc (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x4EE813A: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EEA4BE: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF514F: grpc_core::Server::CallData::RecvInitialMetadataReady(void*, grpc_error*) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E12B7F: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E9818B: grpc_core::ExecCtx::Flush() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E94437: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF2B9F: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x50047D8: grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x5021B7C: grpc::Server::SyncRequestThreadManager::PollForWork(void**, bool*) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E36C: grpc::ThreadManager::MainWorkLoop() (in /usr/lib/libgrpc++.so.1.33.2)
==2618==
==2618== 504 bytes in 1 blocks are possibly lost in loss record 429 of 530
==2618== at 0x483CB65: calloc (vg_replace_malloc.c:760)
==2618== by 0x7A88243: gpr_zalloc (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x4E6FDB9: grpc_channel_stack_builder_finish(grpc_channel_stack_builder*, unsigned long, int, void (*)(void*, grpc_error*), void*, void**) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EED888: grpc_channel_create_with_builder(grpc_channel_stack_builder*, grpc_channel_stack_type) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EEDE3D: grpc_channel_create(char const*, grpc_channel_args const*, grpc_channel_stack_type, grpc_transport*, grpc_resource_user*) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF84E2: grpc_core::Server::SetupTransport(grpc_transport*, grpc_pollset*, grpc_channel_args const*, grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode> const&, grpc_resource_user*) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E1775C: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E9818B: grpc_core::ExecCtx::Flush() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E94437: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF2B9F: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x50047D8: grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x5021B7C: grpc::Server::SyncRequestThreadManager::PollForWork(void**, bool*) (in /usr/lib/libgrpc++.so.1.33.2)
==2618==
==2618== 768 bytes in 2 blocks are possibly lost in loss record 448 of 530
==2618== at 0x483CB65: calloc (vg_replace_malloc.c:760)
==2618== by 0x40142EB: _dl_allocate_tls (in /usr/lib/ld-2.32.so)
==2618== by 0x488613C: pthread_create@@GLIBC_2.2.5 (in /usr/lib/libpthread-2.32.so)
==2618== by 0x7A8C5AC: grpc_core::Thread::Thread(char const*, void (*)(void*), void*, bool*, grpc_core::Thread::Options const&) (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x502DDD8: grpc::ThreadManager::WorkerThread::WorkerThread(grpc::ThreadManager*) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E494: grpc::ThreadManager::MainWorkLoop() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E5BC: grpc::ThreadManager::WorkerThread::Run() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x7A8C3D3: ??? (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x48853E8: start_thread (in /usr/lib/libpthread-2.32.so)
==2618== by 0x560C292: clone (in /usr/lib/libc-2.32.so)
==2618==
==2618== 1,280 bytes in 4 blocks are possibly lost in loss record 472 of 530
==2618== at 0x483A77F: malloc (vg_replace_malloc.c:307)
==2618== by 0x7A8820E: gpr_malloc (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x4EE78CA: grpc_raw_compressed_byte_buffer_create (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EEA99B: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E14038: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E1123F: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E9818B: grpc_core::ExecCtx::Flush() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E94437: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF2B9F: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x50047D8: grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x5021B7C: grpc::Server::SyncRequestThreadManager::PollForWork(void**, bool*) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E36C: grpc::ThreadManager::MainWorkLoop() (in /usr/lib/libgrpc++.so.1.33.2)
==2618==
==2618== 2,880 bytes in 1 blocks are possibly lost in loss record 505 of 530
==2618== at 0x483ADEF: operator new(unsigned long) (vg_replace_malloc.c:342)
==2618== by 0x4EF62CB: grpc_core::Server::ChannelData::InitTransport(grpc_core::RefCountedPtr<grpc_core::Server>, grpc_channel*, unsigned long, grpc_transport*, long) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF85BF: grpc_core::Server::SetupTransport(grpc_transport*, grpc_pollset*, grpc_channel_args const*, grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode> const&, grpc_resource_user*) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E1775C: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E9818B: grpc_core::ExecCtx::Flush() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E94437: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF2B9F: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x50047D8: grpc::CompletionQueue::AsyncNextInternal(void**, bool*, gpr_timespec) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x5021B7C: grpc::Server::SyncRequestThreadManager::PollForWork(void**, bool*) (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E36C: grpc::ThreadManager::MainWorkLoop() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x502E5BC: grpc::ThreadManager::WorkerThread::Run() (in /usr/lib/libgrpc++.so.1.33.2)
==2618== by 0x7A8C3D3: ??? (in /usr/lib/libgpr.so.13.0.0)
==2618==
==2618== 84,945 bytes in 7 blocks are possibly lost in loss record 530 of 530
==2618== at 0x483A77F: malloc (vg_replace_malloc.c:307)
==2618== by 0x7A8820E: gpr_malloc (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x7A882C1: gpr_malloc_aligned (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x7A8AFF1: grpc_core::Arena::CreateWithAlloc(unsigned long, unsigned long) (in /usr/lib/libgpr.so.13.0.0)
==2618== by 0x4EEBE87: grpc_call_create(grpc_call_create_args const*, grpc_call**) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4EF73CE: grpc_core::Server::ChannelData::AcceptStream(void*, grpc_transport*, void const*) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E1F425: grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport*, unsigned int) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E2D8CD: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E2E739: grpc_chttp2_perform_read(grpc_chttp2_transport*, grpc_slice const&) (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E2172A: ??? (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E8DAF5: grpc_combiner_continue_exec_ctx() (in /usr/lib/libgrpc.so.13.0.0)
==2618== by 0x4E9813F: grpc_core::ExecCtx::Flush() (in /usr/lib/libgrpc.so.13.0.0)
==2618==
==2618== LEAK SUMMARY:
==2618== definitely lost: 326 bytes in 46 blocks
==2618== indirectly lost: 0 bytes in 0 blocks
==2618== possibly lost: 93,296 bytes in 30 blocks
==2618== still reachable: 333,712 bytes in 2,614 blocks
==2618== of which reachable via heuristic:
==2618== stdstring : 71 bytes in 1 blocks
==2618== newarray : 408 bytes in 2 blocks
==2618== suppressed: 0 bytes in 0 blocks
==2618== Reachable blocks (those to which a pointer was found) are not shown.
==2618== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==2618==
==2618== For lists of detected and suppressed errors, rerun with: -s
==2618== ERROR SUMMARY: 17 errors from 17 contexts (suppressed: 0 from 0)
Aborted
Run sudo fancon service
in one terminal, and fancon
in the other.
It should let me configure and test fans, I guess.
How does the logging configuration work?
$ sudo ./fancon --help
fancon argument=value ...
…
-l log-lvl Sets the logging level: info, debug, trace, warning, error (default: info)
Based on the help text I assumed one of the following invocations should work. As you can see fancon
always reports <debug> No config found
$ sudo ./fancon start -v -l=debug
20/07/07 08:49 [20757] <debug> No config found
$ sudo ./fancon start -v -l debug
20/07/07 08:50 [20844] <warning> Unknown argument 'debug' from statement 'debug'
20/07/07 08:50 [20844] <debug> No config found
Starting controller
The following packages have unmet dependencies:
fancon : Depends: libgrpc++1 but it is not installable
Depends: libprotobuf23 (>= 3.12.3) but it is not installable
After downloading from https://github.com/hbriese/fancon/releases/download/0.23.7/fancon_amd64.deb
apt install /tmp/fancon_amd64.deb
fancon installed
I'm unable to compile fancon since git commit d76e678 (I used cmake … -DNVIDIA_SUPPORT=OFF ..
).
commit d76e6780ff87fdb4a76e65934b0592d6b338ef6d
Author: Hayden Briese <[email protected]>
Date: Thu May 7 02:02:38 2020 +1000
- Fixed bug where configured NVIDIA devices may be run without NVIDIA control
Signed-off-by: Hayden Briese <[email protected]>
$ make
Scanning dependencies of target fancon
[ 5%] Building CXX object CMakeFiles/fancon.dir/src/main.cpp.o
[ 11%] Building CXX object CMakeFiles/fancon.dir/src/Controller.cpp.o
…/upstream.git/src/Controller.cpp:12:3: error: use of undeclared identifier 'NV'
NV::init();
^
1 error generated.
make[2]: *** [CMakeFiles/fancon.dir/build.make:148: CMakeFiles/fancon.dir/src/Controller.cpp.o] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:96: CMakeFiles/fancon.dir/all] Fehler 2
make: *** [Makefile:150: all] Fehler 2
compilation works
link error when build form source
cd fancon/build
cmake ../
make -j
link successfully
root@master-node:/home/ubuntu/WorkAtHome/fancon/build# make -j
Scanning dependencies of target fancon
[ 4%] Building CXX object CMakeFiles/fancon.dir/src/main.cpp.o
[ 9%] Building CXX object CMakeFiles/fancon.dir/src/proto/DevicesSpec.grpc.pb.cc.o
[ 14%] Building CXX object CMakeFiles/fancon.dir/src/proto/DevicesSpec.pb.cc.o
[ 19%] Building CXX object CMakeFiles/fancon.dir/src/Service.cpp.o
[ 23%] Building CXX object CMakeFiles/fancon.dir/src/Client.cpp.o
[ 28%] Building CXX object CMakeFiles/fancon.dir/src/SensorInterface.cpp.o
[ 33%] Building CXX object CMakeFiles/fancon.dir/src/FanInterface.cpp.o
[ 38%] Building CXX object CMakeFiles/fancon.dir/src/FanSysfs.cpp.o
[ 42%] Building CXX object CMakeFiles/fancon.dir/src/Devices.cpp.o
[ 47%] Building CXX object CMakeFiles/fancon.dir/src/NvidiaDevices.cpp.o
[ 52%] Building CXX object CMakeFiles/fancon.dir/src/Controller.cpp.o
[ 57%] Building CXX object CMakeFiles/fancon.dir/src/NvidiaNvml.cpp.o
[ 61%] Building CXX object CMakeFiles/fancon.dir/src/DellSMM.cpp.o
[ 66%] Building CXX object CMakeFiles/fancon.dir/src/NvidiaUtil.cpp.o
[ 71%] Building CXX object CMakeFiles/fancon.dir/src/FanDell.cpp.o
[ 76%] Building CXX object CMakeFiles/fancon.dir/src/SensorSysfs.cpp.o
[ 80%] Linking CXX executable fancon
CMakeFiles/fancon.dir/src/Service.cpp.o:在函数‘fc::Service::SubscribeDevices(grpc::ServerContext*, fc_pb::Empty const*, grpc::ServerWriter<fc_pb::Devices>)’中:
/home/ubuntu/WorkAtHome/fancon/src/Service.cpp:78:对‘grpc::ServerContextBase::IsCancelled() const’未定义的引用
CMakeFiles/fancon.dir/src/Service.cpp.o:在函数‘operator()’中:
/home/ubuntu/WorkAtHome/fancon/src/Service.cpp:64:对‘grpc::ServerContextBase::IsCancelled() const’未定义的引用
CMakeFiles/fancon.dir/src/Service.cpp.o:在函数‘fc::Service::SubscribeFanStatus(grpc::ServerContext, fc_pb::Empty const*, grpc::ServerWriter<fc_pb::FanStatus>*)’中:
/home/ubuntu/WorkAtHome/fancon/src/Service.cpp:150:对‘grpc::ServerContextBase::IsCancelled() const’未定义的引用
CMakeFiles/fancon.dir/src/Service.cpp.o:在函数‘operator()’中:
/home/ubuntu/WorkAtHome/fancon/src/Service.cpp:130:对‘grpc::ServerContextBase::IsCancelled() const’未定义的引用
/home/ubuntu/WorkAtHome/fancon/src/Service.cpp:137:对‘grpc::ServerContextBase::IsCancelled() const’未定义的引用
clang: error: linker command failed with exit code 1 (use -v to see invocation)
CMakeFiles/fancon.dir/build.make:396: recipe for target 'fancon' failed
make[2]: *** [fancon] Error 1
CMakeFiles/Makefile2:94: recipe for target 'CMakeFiles/fancon.dir/all' failed
make[1]: *** [CMakeFiles/fancon.dir/all] Error 2
Makefile:148: recipe for target 'all' failed
make: *** [all] Error 2
On a Kubuntu x64 16.04.05:
╰─$ sudo dpkg -i fancon_0.12.0_amd64.deb
dpkg: warning: downgrading fancon from 0.12.8 to 0.12.0
(Reading database ... 393708 files and directories currently installed.)
Preparing to unpack fancon_0.12.0_amd64.deb ...
Unpacking fancon (0.12.0) over (0.12.8) ...
dpkg: dependency problems prevent configuration of fancon:
fancon depends on libboost-atomic1.62.0; however:
Package libboost-atomic1.62.0 is not installed.
fancon depends on libboost-chrono1.62.0; however:
Package libboost-chrono1.62.0 is not installed.
fancon depends on libboost-date-time1.62.0; however:
Package libboost-date-time1.62.0 is not installed.
fancon depends on libboost-filesystem1.62.0; however:
Package libboost-filesystem1.62.0 is not installed.
fancon depends on libboost-log1.62.0; however:
Package libboost-log1.62.0 is not installed.
fancon depends on libboost-system1.62.0; however:
Package libboost-system1.62.0 is not installed.
fancon depends on libboost-thread1.62.0; however:
Package libboost-thread1.62.0 is not installed.
fancon depends on libstdc++6 (>= 6); however:
Version of libstdc++6:amd64 on system is 5.4.0-6ubuntu1~16.04.10.
fancon depends on libc++-helpers; however:
Package libc++-helpers is not installed.
dpkg: error processing package fancon (--install):
dependency problems - leaving unconfigured
Processing triggers for systemd (229-4ubuntu21.10) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
fancon
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.