Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED]unable to shutdown system because of bluetoothd
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware
View previous topic :: View next topic  
Author Message
Wadewilson
n00b
n00b


Joined: 09 Nov 2022
Posts: 33

PostPosted: Mon Apr 08, 2024 2:47 pm    Post subject: [SOLVED]unable to shutdown system because of bluetoothd Reply with quote

Hello,

I have openrc init system and when I shutdown my machine, it keeps on waiting for `bluetoothd` service to stop and that never stops and system never shuts down. I have to force shutdown by pressing power button.

openrc shutdown log:
Code:
Saving random number generator seed Seeding 256 bits and crediting

Saving 256 bits of creditable seed for next boot

Executings/lib/rc/sh/openre-run.sh/lib/rc/sh/openre-run.sh/etc/init.d/save-termencoding stop

Executingi /lib/rc/sh/openre-run.sh /lib/rc/sh/openrc-run.sh/etc/ Init. d/save-keymaps stop

Unmounting ng network filesystems...

Executingi/lib/rc/sh/openre-run.sh/lib/rc/sh/openrc-run.sh /etc/init.d/netmount stop

Lok 1

[ok 1

Executingi /lib/rc/sh/openre-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/net.enp7s0 stop Executingi /lib/rc/sh/openre-run.sh /lib/rc/sh/openrc-run.sh/etc/init. d/loopback stop Executingi /lib/rc/sh/openrc-run.sh /lib/rc/ /sh/openrc-run.sh/etc/init.d/keymaps stop Executingi/lib/rc/sh/openrc-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/elogind stop

Stopping elogind... Will step PID 1600

Sending signal 15 to PID 1600...

Executing/lib/rc/sh/openrc-run.sh/lib/rc/sh/openre-run.sh/etc/init.d/dheped stop

Stopping DHCP Client Daemon

Vill stop/sbin/dheped Vill stop PID 2030

Vill stop processes of /sbin/dheped Sending signal 15 to PID 2030...

Executingi/lib/rc/sh/openre-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/cronie stop

Lok 1

Cok 1

[ok 1

[ok 1

ok

Stopping cronie... Will stop/usr/sbin/crond

Will stop PID 1974 Will stop processes of /usr/sbin/crond

Sending signal 15 to PID 1974... Executings/lib/re/sh/openrc-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/sysklogd stop

Stopping sysklogd...

stop/usr/sbin/syslogd Will stop PID 1946

Will stop processes of /usr/sbin/syslogd Sending signal 15 to PID 1946...

start-stop-daemoni 1 process refused to stop Failed to stop sysklogd

ERROR: sysklogd failed to stop

Executing /lib/rc/sh/openrc-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/consolefont stop Executing: /lib/rc/sh/openrc-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/terwencoding stop Executing: /lib/rc/sh/openrc-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/chronyd Stopping chronyd... stop

Will step FID 1911

Sending signal 15 to PID 1911...

Executings/lib/rc/sh/openrc-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/cgroups stop Executing /lib/rc/sh/openrc-run.sh/lib/rc/sh/openrc-run.sh/etc/init.d/bluetooth stop

Stopping bluetooth... Will stop /usr/libexec/bluetooth/bluetoothd

• Vill stop PID 1867

Vill stop processes of '/usr/libexec/bluetooth/bluetoothd' Sending signal 15 to PID 1867...


Quote:
Please bear with the spelling mistakes as I had to use google lens OCR for this



Quote:
/etc/rc.conf

Code:

# Global OpenRC configuration settings

# Set to "YES" if you want the rc system to try and start services
# in parallel for a slight speed improvement. When running in parallel we
# prefix the service output with its name as the output will get
# jumbled up.
# WARNING: whilst we have improved parallel, it can still potentially lock
# the boot process. Don't file bugs about this unless you can supply
# patches that fix it without breaking other things!
rc_parallel="NO"

# Set rc_interactive to "YES" and you'll be able to press the I key during
# boot so you can choose to start specific services. Set to "NO" to disable
# this feature. This feature is automatically disabled if rc_parallel is
# set to YES.
rc_interactive="YES"

# If we need to drop to a shell, you can specify it here.
# If not specified we use $SHELL, otherwise the one specified in /etc/passwd,
# otherwise /bin/sh
# Linux users could specify /sbin/sulogin
rc_shell=/sbin/sulogin

# Do we allow any started service in the runlevel to satisfy the dependency
# or do we want all of them regardless of state? For example, if net.eth0
# and net.eth1 are in the default runlevel then with rc_depend_strict="NO"
# both will be started, but services that depend on 'net' will work if either
# one comes up. With rc_depend_strict="YES" we would require them both to
# come up.
rc_depend_strict="No"

# rc_hotplug controls which services we allow to be hotplugged.
# A hotplugged service is one started by a dynamic dev manager when a matching
# hardware device is found.
# Hotplugged services appear in the "hotplugged" runlevel.
# If rc_hotplug is set to any value, we compare the name of this service
# to every pattern in the value, from left to right, and we allow the
# service to be hotplugged if it matches a pattern, or if it matches no
# patterns. Patterns can include shell wildcards.
# To disable services from being hotplugged, prefix patterns with "!".
#If rc_hotplug is not set or is empty, all hotplugging is disabled.
# Example - rc_hotplug="net.wlan !net.*"
# This allows net.wlan and any service not matching net.* to be hotplugged.
# Example - rc_hotplug="!net.*"
# This allows services that do not match "net.*" to be hotplugged.

# rc_logger launches a logging daemon to log the entire rc process to
# /var/log/rc.log
# NOTE: Linux systems require the devfs service to be started before
# logging can take place and as such cannot log the sysinit runlevel.
rc_logger="YES"

# Through rc_log_path you can specify a custom log file.
# The default value is: /var/log/rc.log
rc_log_path="/var/log/rc.log"

# If you want verbose output for OpenRC, set this to yes. If you want
# verbose output for service foo only, set it to yes in /etc/conf.d/foo.
rc_verbose=yes

# By default we filter the environment for our running scripts. To allow other
# variables through, add them here. Use a * to allow all variables through.
#rc_env_allow="VAR1 VAR2"

# By default we assume that all daemons will start correctly.
# However, some do not - a classic example is that they fork and return 0 AND
# then child barfs on a configuration error. Or the daemon has a bug and the
# child crashes. You can set the number of milliseconds start-stop-daemon
# waits to check that the daemon is still running after starting here.
# The default is 0 - no checking.
#rc_start_wait=100

# rc_nostop is a list of services which will not stop when changing runlevels.
# This still allows the service itself to be stopped when called directly.
#rc_nostop=""

# rc will attempt to start crashed services by default.
# However, it will not stop them by default as that could bring down other
# critical services.
#rc_crashed_stop=NO
#rc_crashed_start=YES

# Set rc_nocolor to yes if you do not want colors displayed in OpenRC
# output.
rc_nocolor=NO

##############################################################################
# MISC CONFIGURATION VARIABLES
# There variables are shared between many init scripts

# Set unicode to NO to turn off unicode support for keyboards and screens.
unicode="YES"

# This is how long fuser should wait for a remote server to respond. The
# default is 60 seconds, but  it can be adjusted here.
#rc_fuser_timeout=60

# Below is the default list of network fstypes.
#
# afs ceph cifs coda davfs fuse fuse.glusterfs fuse.sshfs gfs glusterfs lustre
# ncpfs nfs nfs4 ocfs2 shfs smbfs
#
# If you would like to add to this list, you can do so by adding your
# own fstypes to the following variable.
#extra_net_fs_list=""

##############################################################################
# SERVICE CONFIGURATION VARIABLES
# These variables are documented here, but should be configured in
# /etc/conf.d/foo for service foo and NOT enabled here unless you
# really want them to work on a global basis.
# If your service has characters in its name which are not legal in
# shell variable names and you configure the variables for it in this
# file, those characters should be replaced with underscores in the
# variable names as shown below.

# Some daemons are started and stopped via start-stop-daemon.
# We can set some things on a per service basis, like the nicelevel.
# These need to be exported
#export SSD_NICELEVEL="0"
# Or the ionice level. The format is class[:data] , just like the
# --ionice start-stop-daemon parameter.
#export SSD_IONICELEVEL="0:0"
# Or the OOM score adjustment.
#export SSD_OOM_SCORE_ADJ="0"

# Pass ulimit parameters
# If you are using bash in POSIX mode for your shell, note that the
# ulimit command uses a block size of 512 bytes for the -c and -f
# options
#rc_ulimit="-u 30"

# It's possible to define extra dependencies for services like so
#rc_config="/etc/foo"
#rc_need="openvpn"
#rc_use="net.eth0"
#rc_after="clock"
#rc_before="local"
#rc_provide="!net"

# You can also enable the above commands here for each service. Below is an
# example for service foo.
#rc_foo_config="/etc/foo"
#rc_foo_need="openvpn"
#rc_foo_after="clock"

# Below is an example for service foo-bar. Note that the '-' is illegal
# in a shell variable name, so we convert it to an underscore.
# example for service foo-bar.
#rc_foo_bar_config="/etc/foo-bar"
#rc_foo_bar_need="openvpn"
#rc_foo_bar_after="clock"

# You can also remove dependencies.
# This is mainly used for saying which services do NOT provide net.
#rc_net_tap0_provide="!net"

# This is the subsystem type.
# It is used to match against keywords set by the keyword call in the
# depend function of service scripts.
#
# It should be set to the value representing the environment this file is
# PRESENTLY in, not the virtualization the environment is capable of.
# If it is commented out, automatic detection will be used.
#
# The list below shows all possible settings as well as the host
# operating systems where they can be used and autodetected.
#
# ""               - nothing special
# "docker"         - Docker container manager (Linux)
# "jail"           - Jail (DragonflyBSD or FreeBSD)
# "lxc"            - Linux Containers
# "openvz"         - Linux OpenVZ
# "prefix"         - Prefix
# "rkt"            - CoreOS container management system (Linux)
# "subhurd"        - Hurd subhurds (to be checked)
# "systemd-nspawn" - Container created by systemd-nspawn (Linux)
# "uml"            - Usermode Linux
# "vserver"        - Linux vserver
# "xen0"           - Xen0 Domain (Linux and NetBSD)
# "xenU"           - XenU Domain (Linux and NetBSD)
#rc_sys=""

# if  you use openrc-init, which is currently only available on Linux,
# this is the default runlevel to activate after "sysinit" and "boot"
# when booting.
#rc_default_runlevel="default"

# on Linux and Hurd, this is the number of ttys allocated for logins
# It is used in the consolefont, keymaps, numlock and termencoding
# service scripts.
rc_tty_number=12

##############################################################################
# LINUX CGROUPS RESOURCE MANAGEMENT

# This sets the mode used to mount cgroups.
# "hybrid" mounts cgroups version 2 on /sys/fs/cgroup/unified and
# cgroups version 1 on /sys/fs/cgroup.
# "legacy" mounts cgroups version 1 on /sys/fs/cgroup
# "unified" mounts cgroups version 2 on /sys/fs/cgroup
#rc_cgroup_mode="unified"

# This is a list of controllers which should be enabled for cgroups version 2
# when hybrid mode is being used.
# Controllers listed here will not be available for cgroups version 1.
#rc_cgroup_controllers=""

# This variable contains the cgroups version 2 settings for your services.
# If this is set in this file, the settings will apply to all services.
# If you want different settings for each service, place the settings in
# /etc/conf.d/foo for service foo.
# The format is to specify the setting and value followed by a newline.
# Multiple settings and values can be specified.
# For example, you would use this to set the maximum memory and maximum
# number of pids for a service.
#rc_cgroup_settings="
#memory.max 10485760
#pids.max max
#"
#
# For more information about the adjustments that can be made with
# cgroups version 2, see Documentation/cgroups-v2.txt in the linux kernel
# source tree.
#rc_cgroup_settings=""

# This switch controls whether or not cgroups version 1 controllers are
# individually mounted under
# /sys/fs/cgroup in hybrid or legacy mode.
#rc_controller_cgroups="YES"

# The following setting turns on the memory.use_hierarchy setting in the
# root memory cgroup for cgroups v1.
# It must be set to yes in this file if you want this functionality.
#rc_cgroup_memory_use_hierarchy="NO"

# The following settings allow you to set up values for the cgroups version 1
# controllers for your services.
# They can be set in this file;, however, if you do this, the settings
# will apply to all of your services.
# If you want different settings for each service, place the settings in
# /etc/conf.d/foo for service foo.
# The format is to specify the names of the settings followed by their
# values. Each variable can hold multiple settings.
# For example, you would use this to set the cpu.shares setting in the
# cpu controller to 512 for your service.
# rc_cgroup_cpu="
# cpu.shares 512
# "
#
# For more information about the adjustments that can be made with
# cgroups version 1, see Documentation/cgroups-v1/* in the linux kernel
# source tree.

# Set the blkio controller settings for this service.
#rc_cgroup_blkio=""

# Set the cpu controller settings for this service.
#rc_cgroup_cpu=""

# Add this service to the cpuacct controller (any value means yes).
#rc_cgroup_cpuacct=""

# Set the cpuset controller settings for this service.
#rc_cgroup_cpuset=""

# Set the devices controller settings for this service.
#rc_cgroup_devices=""

# Set the hugetlb controller settings for this service.
#rc_cgroup_hugetlb=""

# Set the memory controller settings for this service.
#rc_cgroup_memory=""

# Set the net_cls controller settings for this service.
#rc_cgroup_net_cls=""

# Set the net_prio controller settings for this service.
#rc_cgroup_net_prio=""

# Set the pids controller settings for this service.
#rc_cgroup_pids=""

# Set this to YES if you want all of the processes in a service's cgroup
# killed when the service is stopped or restarted.
# Be aware that setting this to yes means all of a service's
# child processes will be killed. Keep this in mind if you set this to
# yes here instead of for the individual services in
# /etc/conf.d/<service>.
# To perform this cleanup manually for a stopped service, you can
# execute cgroup_cleanup with /etc/init.d/<service> cgroup_cleanup or
# rc-service <service> cgroup_cleanup.
# If the kernel includes support for cgroup2's cgroup.kill, this is used
# to reliably teardown the cgroup.
# If this fails, the process followed in this cleanup is the following:
# 1. send stopsig (sigterm if it isn't set) to all processes left in the
# cgroup immediately followed by sigcont.
# 2. Send sighup to all processes in the cgroup if rc_send_sighup is
# yes.
# 3. delay for rc_timeout_stopsec seconds.
# 4. send sigkill to all processes in the cgroup unless disabled by
# setting rc_send_sigkill to no.
# rc_cgroup_cleanup="NO"

# If this is yes, we will send sighup to the processes in the cgroup
# immediately after stopsig and sigcont.
rc_send_sighup="YES"

# This is the amount of time in seconds that we delay after sending sigcont
# and optionally sighup, before we optionally send sigkill to all
# processes in the # cgroup.
# The default is 90 seconds.
rc_timeout_stopsec="15"

# If this is set to no, we do not send sigkill to all processes in the
# cgroup.
rc_send_sigkill="YES"


How do I fix this?


Last edited by Wadewilson on Sun Apr 28, 2024 4:50 pm; edited 1 time in total
Back to top
View user's profile Send private message
logrusx
Veteran
Veteran


Joined: 22 Feb 2018
Posts: 1550

PostPosted: Mon Apr 08, 2024 4:03 pm    Post subject: Re: unable to shutdown system because of bluetoothd service Reply with quote

Wadewilson wrote:
Hello,

I have openrc init system and when I shutdown my machine, it keeps on waiting for `bluetoothd` service to stop and that never stops and system never shuts down. I have to force shutdown by pressing power button.


How do I fix this?


Fix your bluez configuration. As a start you can try to stop blootooth manually and debug it. Check with the documentation how to enable debug output. I'm not sure if it stores user configuration in your home dir but you could try to locate it, usually in .config or .cache or something like .bluez and delete it. Maybe try to unpair all devices something like that.

Depending on your DE it may be in some kind of registry like Gnome dconf.

Best Regards,
Georgi
Back to top
View user's profile Send private message
Wadewilson
n00b
n00b


Joined: 09 Nov 2022
Posts: 33

PostPosted: Sun Apr 28, 2024 4:49 pm    Post subject: Reply with quote

Quote:
Fix your bluez configuration. As a start you can try to stop blootooth manually and debug it.


@logrusx, thanks. But the issue was not in bluetoothd or bluez config itself. After I disabled it, I saw the same issue, but the log had stopped at a different service, which got me thinking.

After trying to reproduce the same mutliple times (took a couple of days), I saw that this happened when the last or penultimate service to close was syslogd. I replaced syslogd with syslog-ng and everything works fine now with the bluetoothd service enabled. Been more than 15 days, and I have not seen any issues so far.

Apologies, for the misinformation on the issue.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Kernel & Hardware All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum