scorpion-26 / gBar

Blazingly fast status bar written with GTK
MIT License
459 stars 17 forks source link

Segmentation fault when battery monitoring enabled #58

Closed h3ss closed 9 months ago

h3ss commented 9 months ago

Describe the bug

gBar crashes moments after startup. This occurs if the BatteryFolder configuration option is present. When this is disabled, no crash occurs.

This behavior only started after commit 6e71e8a titled "Add battery charging indication"

Steps to Reproduce

  1. Include a BatteryFolder option in the configuration file
  2. Execute gBar bar 0

Expected behavior

Battery monitoring should be able to be enabled without resulting in segmentation fault.

Screenshots/Error logs

GDB backtrace

#0  0x000056015cf821c0 in  ()
#1  0x000056015cf9d575 in  ()
#2  0x000056015cfa7c22 in  ()
#3  0x00007ff1e3f553ee in g_timeout_dispatch
    (source=0x56015da6b650, callback=<optimized out>, user_data=<optimized out>)
    at ../glib/glib/gmain.c:5121
#4  0x00007ff1e3f53f69 in g_main_dispatch (context=0x56015d95f3c0)
    at ../glib/glib/gmain.c:3476
#5  0x00007ff1e3fb2327 in g_main_context_dispatch_unlocked (context=0x56015d95f3c0)
    at ../glib/glib/gmain.c:4284
#6  g_main_context_iterate_unlocked.isra.0
    (context=0x56015d95f3c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4349
#7  0x00007ff1e3f54b97 in g_main_loop_run (loop=0x56015d9d64c0)
    at ../glib/glib/gmain.c:4551
#8  0x00007ff1e45ecf6f in gtk_main () at ../gtk/gtk/gtkmain.c:1329
#9  0x000056015cf7fdf0 in main ()

Output of stdout prior to crash:

Set value for CPUThermalZone: /sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon2/temp1_input
Set value for LockCommand: ~/.config/scripts/sys.sh lock
Set value for ExitCommand: killall Hyprland
Set value for BatteryFolder: /sys/class/power_supply/BAT1
Set value for DiskPartition: /
Set value for WidgetsLeft: [Workspaces]
Set value for WidgetsCenter: []
Set value for WidgetsRight: [Time, Tray, Packages, Network, Disk, VRAM, GPU, RAM, CPU, Battery]
Set value for WorkspaceSymbol: 1,󰎦
Set value for WorkspaceSymbol: 2,󰎩
Set value for WorkspaceSymbol: 3,󰎬
Set value for WorkspaceSymbol: 4,󰎮
Set value for WorkspaceSymbol: 5,󰎰
Set value for WorkspaceSymbol: 6,󰎵
Set value for WorkspaceSymbol: 7,󰎸
Set value for WorkspaceSymbol: 8,󰎻
Set value for WorkspaceSymbol: 9,󰎾
Set value for WorkspaceSymbol: 10,󰽾
Set value for DefaultWorkspaceSymbol: 󰈩
Set value for WorkspaceScrollOnMonitor: true
Set value for WorkspaceScrollInvert: false
Set value for NumWorkspaces: 6
Set value for UseHyprlandIPC: true
Set value for Location: R
Set value for IconsAlwaysUp: true
Set value for CenterTime: true
Set value for TimeSpace: 100
Set value for DateTimeStyle: %I\n%M\n%S
Set value for AudioInput: false
Set value for AudioRevealer: true
Set value for AudioScrollSpeed: 5
Set value for AudioNumbers: true
Set value for CheckPackagesCommand: p="$(checkupdates)"; e=$?; if [ $e -eq 127 ] ; then exit 127; fi; if [ $e -eq 2 ] ; then echo "0" && exit 0; fi; echo "$p" | wc -l
Set value for CheckUpdateInterval: 300
Set value for NetworkAdapter: enp3s0
Set value for NetworkWidget: false
Set value for SensorTooltips: true
Set value for EnableSNI: false
Set value for SNIIconSize: *, 25
Set value for MinDownloadBytes: 0
Set value for MaxDownloadBytes: 10485760
Set value for MinUploadBytes: 0
Set value for MaxUploadBytes: 5242880
Wayland: Registering monitor eDP-1 at ID 0
NVML not found, disabling Nvidia GPU
AMD GPU not found, disabling AMD GPU
PulseAudio: Context is ready!
PulseAudio: Update info
CSS found and loaded successfully!
Warning: Unkwown widget name !
    Known names are: Workspaces, Time, Tray, Packages, Audio, Bluetooth, Network, Sensors, Disk, VRAM, GPU, RAM, CPU, Battery, Power
zsh: segmentation fault (core dumped)  gBar bar 0

Config file (comments/whitepace omitted):

CPUThermalZone: /sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon2/temp1_input
LockCommand: ~/.config/scripts/sys.sh lock
ExitCommand: killall Hyprland
BatteryFolder: /sys/class/power_supply/BAT1
DiskPartition: /
WidgetsLeft: [Workspaces]
WidgetsCenter: []
WidgetsRight: [Time, Tray, Packages, Network, Disk, VRAM, GPU, RAM, CPU, Battery]
WorkspaceSymbol: 1,󰎦
WorkspaceSymbol: 2,󰎩
WorkspaceSymbol: 3,󰎬
WorkspaceSymbol: 4,󰎮
WorkspaceSymbol: 5,󰎰
WorkspaceSymbol: 6,󰎵
WorkspaceSymbol: 7,󰎸
WorkspaceSymbol: 8,󰎻
WorkspaceSymbol: 9,󰎾
WorkspaceSymbol: 10,󰽾
DefaultWorkspaceSymbol: 󰈩
WorkspaceScrollOnMonitor: true
WorkspaceScrollInvert: false
NumWorkspaces: 6
UseHyprlandIPC: true
Location: R
IconsAlwaysUp: true
CenterTime: true
TimeSpace: 100
DateTimeStyle: %I\n%M\n%S
AudioInput: false
AudioRevealer: true
AudioScrollSpeed: 5
AudioNumbers: true
CheckPackagesCommand: p="$(checkupdates)"; e=$?; if [ $e -eq 127 ] ; then exit 127; fi; if [ $e -eq 2 ] ; then echo "0" && exit 0; fi; echo "$p" | wc -l
CheckUpdateInterval: 300
NetworkAdapter: enp3s0
NetworkWidget: false
SensorTooltips: true
EnableSNI: false
SNIIconSize: *, 25
MinDownloadBytes: 0
MinUploadBytes:   0

Core file is attached

Information about your system and gBar

h3ss commented 9 months ago

Threads:

(gdb) info threads
  Id   Target Id                          Frame 
* 1    Thread 0x7ff1e260a9c0 (LWP 273236) 0x000056015cf821c0 in ?? ()
  2    Thread 0x7ff1dcf7f6c0 (LWP 273245) 0x00007ff1e3a0f56c in __GI___libc_read (
    nbytes=4096, buf=0x7ff1bc000d90, fd=20) at ../sysdeps/unix/sysv/linux/read.c:26
  3    Thread 0x7ff1deffd6c0 (LWP 273242) 0x00007ff1e3a0ef6f in __GI___poll (
    fds=0x7ff1d4000b90, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
  4    Thread 0x7ff1de3ff6c0 (LWP 273243) syscall ()
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
  5    Thread 0x7ff1dffff6c0 (LWP 273240) syscall ()
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
  6    Thread 0x7ff1df7fe6c0 (LWP 273241) 0x00007ff1e3a0ef6f in __GI___poll (
    fds=0x56015d957a20, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
  7    Thread 0x7ff1ddbfe6c0 (LWP 273244) 0x00007ff1e3a0ef6f in __GI___poll (
    fds=0x7ff1c8000b90, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29

Bt thread 2

#0  0x00007ff1e3a0f56c in __GI___libc_read (nbytes=4096, buf=0x7ff1bc000d90, fd=20)
    at ../sysdeps/unix/sysv/linux/read.c:26
#1  __GI___libc_read (fd=20, buf=0x7ff1bc000d90, nbytes=4096)
    at ../sysdeps/unix/sysv/linux/read.c:24
#2  0x00007ff1e398ff83 in _IO_new_file_underflow (fp=0x7ff1bc000b70)
    at /usr/src/debug/glibc/glibc/libio/libioP.h:1030
#3  0x00007ff1e399231f in __GI__IO_default_uflow (fp=0x7ff1bc000b70)
    at /usr/src/debug/glibc/glibc/libio/libioP.h:1030
#4  0x00007ff1e398503b in __GI__IO_getline_info
    (fp=fp@entry=0x7ff1bc000b70, buf=buf@entry=0x7ff1dcf7e3a0 "", n=n@entry=2055, delim=delim@entry=10, extract_delim=extract_delim@entry=1, eof=eof@entry=0x0)
    at iogetline.c:60
#5  0x00007ff1e398513c in __GI__IO_getline
    (fp=fp@entry=0x7ff1bc000b70, buf=buf@entry=0x7ff1dcf7e3a0 "", n=n@entry=2055, delim=delim@entry=10, extract_delim=extract_delim@entry=1) at iogetline.c:34
#6  0x00007ff1e3983de0 in _IO_fgets (buf=0x7ff1dcf7e3a0 "", n=2056, fp=0x7ff1bc000b70)
    at iofgets.c:53
#7  0x000056015cf89a59 in  ()
#8  0x000056015cf8a39a in  ()
#9  0x00007ff1e3ce1943 in std::execute_native_thread_routine(void*)
    (__p=0x56015da38b20) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
#10 0x00007ff1e39989eb in start_thread (arg=<optimized out>) at pthread_create.c:444
#11 0x00007ff1e3a1c7cc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Bt thread 3

#0  0x00007ff1e3a0ef6f in __GI___poll (fds=0x7ff1d4000b90, nfds=3, timeout=-1)
    at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ff1e3fb2276 in g_main_context_poll_unlocked
    (priority=2147483647, n_fds=3, fds=0x7ff1d4000b90, timeout=<optimized out>, context=0x56015d964950) at ../glib/glib/gmain.c:4653
#2  g_main_context_iterate_unlocked.isra.0
    (context=0x56015d964950, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4344
#3  0x00007ff1e3f54b97 in g_main_loop_run (loop=0x56015d964a80)
    at ../glib/glib/gmain.c:4551
#4  0x00007ff1e41ba14c in gdbus_shared_thread_func (user_data=0x56015d95b0d0)
    at ../glib/gio/gdbusprivate.c:284
#5  0x00007ff1e3f859f5 in g_thread_proxy (data=0x56015d960af0)
    at ../glib/glib/gthread.c:831
#6  0x00007ff1e39989eb in start_thread (arg=<optimized out>) at pthread_create.c:444
#7  0x00007ff1e3a1c7cc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Bt thread 4

#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ff1e3fadc93 in g_cond_wait_until
    (cond=<optimized out>, mutex=0x56015d950070, end_time=<optimized out>)
    at ../glib/glib/gthread-posix.c:1677
#2  0x00007ff1e3f1f185 in g_async_queue_pop_intern_unlocked
    (queue=0x56015d950070, wait=1, end_time=345168875653)
    at ../glib/glib/gasyncqueue.c:428
#3  0x00007ff1e3f1f2e7 in g_async_queue_timeout_pop
    (queue=0x56015d950070, timeout=<optimized out>) at ../glib/glib/gasyncqueue.c:551
#4  0x00007ff1e3f8836e in g_thread_pool_wait_for_new_pool ()
    at ../glib/glib/gthreadpool.c:181
#5  g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/glib/gthreadpool.c:408
#6  0x00007ff1e3f859f5 in g_thread_proxy (data=0x7ff1d8000b90)
    at ../glib/glib/gthread.c:831
#7  0x00007ff1e39989eb in start_thread (arg=<optimized out>) at pthread_create.c:444
#8  0x00007ff1e3a1c7cc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Bt thread 5

#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ff1e3fad2b7 in g_cond_wait (cond=0x56015d950b68, mutex=0x56015d950b60)
    at ../glib/glib/gthread-posix.c:1552
#2  0x00007ff1e3f1f1b4 in g_async_queue_pop_intern_unlocked
    (queue=0x56015d950b60, wait=1, end_time=-1) at ../glib/glib/gasyncqueue.c:425
#3  0x00007ff1e3f87a7e in g_thread_pool_spawn_thread (data=<optimized out>)
    at ../glib/glib/gthreadpool.c:311
#4  0x00007ff1e3f859f5 in g_thread_proxy (data=0x56015d956ea0)
    at ../glib/glib/gthread.c:831
#5  0x00007ff1e39989eb in start_thread (arg=<optimized out>) at pthread_create.c:444
#6  0x00007ff1e3a1c7cc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Bt thread 6

#0  0x00007ff1e3a0ef6f in __GI___poll (fds=0x56015d957a20, nfds=1, timeout=-1)
    at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ff1e3fb2276 in g_main_context_poll_unlocked
    (priority=2147483647, n_fds=1, fds=0x56015d957a20, timeout=<optimized out>, context=0x56015d9577b0) at ../glib/glib/gmain.c:4653
#2  g_main_context_iterate_unlocked.isra.0
    (context=context@entry=0x56015d9577b0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4344
#3  0x00007ff1e3f52162 in g_main_context_iteration
    (context=0x56015d9577b0, may_block=may_block@entry=1) at ../glib/glib/gmain.c:4414
#4  0x00007ff1e3f521b2 in glib_worker_main (data=<optimized out>)
    at ../glib/glib/gmain.c:6574
#5  0x00007ff1e3f859f5 in g_thread_proxy (data=0x56015d9579c0)
    at ../glib/glib/gthread.c:831
#6  0x00007ff1e39989eb in start_thread (arg=<optimized out>) at pthread_create.c:444
#7  0x00007ff1e3a1c7cc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Bt thread 7

#0  0x00007ff1e3a0ef6f in __GI___poll (fds=0x7ff1c8000b90, nfds=1, timeout=-1)
    at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007ff1e3fb2276 in g_main_context_poll_unlocked
    (priority=2147483647, n_fds=1, fds=0x7ff1c8000b90, timeout=<optimized out>, context=0x56015d9b5870) at ../glib/glib/gmain.c:4653
#2  g_main_context_iterate_unlocked.isra.0
    (context=context@entry=0x56015d9b5870, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4344
#3  0x00007ff1e3f52162 in g_main_context_iteration
    (context=context@entry=0x56015d9b5870, may_block=may_block@entry=1)
    at ../glib/glib/gmain.c:4414
#4  0x00007ff1e205afde in dconf_gdbus_worker_thread (user_data=0x56015d9b5870)
    at ../dconf/gdbus/dconf-gdbus-thread.c:82
#5  0x00007ff1e3f859f5 in g_thread_proxy (data=0x56015d999760)
    at ../glib/glib/gthread.c:831
#6  0x00007ff1e39989eb in start_thread (arg=<optimized out>) at pthread_create.c:444
#7  0x00007ff1e3a1c7cc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
scorpion-26 commented 9 months ago

Fixed :)

h3ss commented 9 months ago

Fix verified, thanks @scorpion-26!