Skip to content

MPD module crash #4875

@viliuspovilaika

Description

@viliuspovilaika

Hello, been chasing this one for a while. Waybar reliably crashes after roughly half a day to 2 days of uptime.

Environment

  • waybar version: v0.15.0
  • OS: Arch, 6.18.7 kernel
  • WM: Hyprland 0.53.3
  • libmpdclient version: 2.23-1

What happens

Attached GDB to the process after reproducing it. The crash is a SIGABRT originating from glibc's __fdelt_warn, which fires after mpd_connection_new()

__fdelt_warn() → __fortify_fail() → abort()
← __fortify_fail
← __fdelt_warn
← mpd_connection_new
← [waybar MPD module internals]

So it looks like somewhere in the MPD reconnection logic, fds are leaking over time. Once the process fd count gets high enough the next call to mpd_connection_new() with that fd makes glibc abort.

Reproducing

Honestly just leave waybar running with the MPD module active. Crashes consistently within 12–48h for me.

GDB-GEF output

[Thread 0x7fffb03f66c0 (LWP 2328381) exited]
[Thread 0x7fffa73fc6c0 (LWP 2328380) exited]
[Thread 0x7fffa71fb6c0 (LWP 2328379) exited]
[Thread 0x7fffa77fe6c0 (LWP 2328378) exited]
[Thread 0x7fffa65f56c0 (LWP 2328377) exited]
[Thread 0x7fffa61f36c0 (LWP 2328376) exited]
[New Thread 0x7fffa75fd6c0 (LWP 2328393)]
[New Thread 0x7fffa71fb6c0 (LWP 2328394)]
[New Thread 0x7fffa61f36c0 (LWP 2328395)]
[New Thread 0x7fffb03f66c0 (LWP 2328396)]
[New Thread 0x7fffa69f76c0 (LWP 2328397)]
[New Thread 0x7fffa63f46c0 (LWP 2328398)]
[New Thread 0x7fffa73fc6c0 (LWP 2328399)]
[New Thread 0x7fffa5ff26c0 (LWP 2328400)]
[New Thread 0x7fffa6ffa6c0 (LWP 2328401)]
[New Thread 0x7fffa6df96c0 (LWP 2328402)]
[New Thread 0x7fffa5bf06c0 (LWP 2328403)]
[New Thread 0x7fffa67f66c0 (LWP 2328404)]
[New Thread 0x7fffa65f56c0 (LWP 2328405)]
[New Thread 0x7fffa6bf86c0 (LWP 2328406)]
[New Thread 0x7fffa77fe6c0 (LWP 2328407)]
[New Thread 0x7fffa5df16c0 (LWP 2328408)]
[Thread 0x7fffa5df16c0 (LWP 2328408) exited]
[Thread 0x7fffa77fe6c0 (LWP 2328407) exited]
[Thread 0x7fffa6bf86c0 (LWP 2328406) exited]
[Thread 0x7fffa65f56c0 (LWP 2328405) exited]
[Thread 0x7fffa67f66c0 (LWP 2328404) exited]
[Thread 0x7fffa5bf06c0 (LWP 2328403) exited]
[Thread 0x7fffa6df96c0 (LWP 2328402) exited]
[Thread 0x7fffa6ffa6c0 (LWP 2328401) exited]
[Thread 0x7fffa5ff26c0 (LWP 2328400) exited]
[ Legend: Modified register | Code | Heap | Stack | String ]
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── registers ────
$rax   : 0x0               
$rbx   : 0x1b680b          
$rcx   : 0x00007ffff627aa2c  →   mov r8d, eax
$rdx   : 0x6               
$rsp   : 0x00007fffffffc880  →  0x0000000000000000
$rbp   : 0x00007fffffffc8c0  →  0x00007fffffffc8e0  →  0x00007fffffffc9a0  →  0x00007fffffffcb50  →  0x00007fffffffcb60  →  0x00007fffffffcb70  →  0x00007fffffffccb0  →  0x00007fffffffcd10
$rsi   : 0x1b680b          
$rdi   : 0x1b680b          
$rip   : 0x00007ffff627aa2c  →   mov r8d, eax
$r8    : 0xffffffff        
$r9    : 0x0               
$r10   : 0x22              
$r11   : 0x246             
$r12   : 0x00007fffffffca20  →  0x0000000000000000
$r13   : 0x00007ffff3f95000  →  0x202a2a2a00001000
$r14   : 0x6               
$r15   : 0x0               
$eflags: [ZERO carry PARITY adjust sign trap INTERRUPT direction overflow resume virtualx86 identification]
$cs: 0x33 $ss: 0x2b $ds: 0x00 $es: 0x00 $fs: 0x00 $gs: 0x00 
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── stack ────
0x00007fffffffc880│+0x0000: 0x0000000000000000	← $rsp
0x00007fffffffc888│+0x0008: 0x00007fffffffca3c  →  0xffffca7800000000
0x00007fffffffc890│+0x0010: 0x00007fffffffc8c0  →  0x00007fffffffc8e0  →  0x00007fffffffc9a0  →  0x00007fffffffcb50  →  0x00007fffffffcb60  →  0x00007fffffffcb70  →  0x00007fffffffccb0
0x00007fffffffc898│+0x0018: 0x4e8b204dd2013b00
0x00007fffffffc8a0│+0x0020: 0x00007fffffffcb68  →  0x00007ffff6307635  →   cs nop WORD PTR [rax+rax*1+0x0]
0x00007fffffffc8a8│+0x0028: 0x0000000000000006
0x00007fffffffc8b0│+0x0030: 0x00007fffffffca20  →  0x0000000000000000
0x00007fffffffc8b8│+0x0038: 0x0000000000001000
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── code:x86:64 ────
   0x7ffff627aa23                  mov    edi, eax
   0x7ffff627aa25                  mov    eax, 0xea
   0x7ffff627aa2a                  syscall 
 → 0x7ffff627aa2c                  mov    r8d, eax
   0x7ffff627aa2f                  neg    r8d
   0x7ffff627aa32                  cmp    eax, 0xfffff000
   0x7ffff627aa37                  mov    eax, 0x0
   0x7ffff627aa3c                  cmova  eax, r8d
   0x7ffff627aa40                  jmp    0x7ffff627a9b7
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── threads ────
[#0] Id 9242, Name: "gly-hdl-loader", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#1] Id 9241, Name: "blocking-228", stopped 0x7ffff62fa06d in syscall (), reason: SIGABRT
[#2] Id 9240, Name: "blocking-227", stopped 0x7ffff62fa06d in syscall (), reason: SIGABRT
[#3] Id 9239, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#4] Id 9238, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#5] Id 9237, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#6] Id 9236, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#7] Id 9235, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#8] Id 9234, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#9] Id 9233, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#10] Id 9232, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#11] Id 9231, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#12] Id 9230, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#13] Id 9229, Name: "pool-99", stopped 0x7ffff62fa06d in syscall (), reason: SIGABRT
[#14] Id 9228, Name: "threaded-ml", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#15] Id 9226, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#16] Id 9225, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#17] Id 28, Name: "async-io", stopped 0x7ffff62fa06d in syscall (), reason: SIGABRT
[#18] Id 283, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#19] Id 27, Name: "gly-global-exec", stopped 0x7ffff4fed3a3 in ?? (), reason: SIGABRT
[#20] Id 278, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#21] Id 277, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#22] Id 276, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#23] Id 275, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#24] Id 274, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#25] Id 273, Name: "threaded-ml", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#26] Id 279, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#27] Id 280, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#28] Id 282, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#29] Id 11, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#30] Id 10, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#31] Id 9, Name: "waybar", stopped 0x7ffff62753be in ?? (), reason: SIGABRT
[#32] Id 8, Name: "dconf worker", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#33] Id 7, Name: "gdbus", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#34] Id 281, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#35] Id 5, Name: "gmain", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#36] Id 4, Name: "pool-spawner", stopped 0x7ffff62fa06d in syscall (), reason: SIGABRT
[#37] Id 3, Name: "[pango] fontcon", stopped 0x7ffff62fa06d in syscall (), reason: SIGABRT
[#38] Id 2, Name: "waybar", stopped 0x7ffff6280f32 in ?? (), reason: SIGABRT
[#39] Id 1, Name: "waybar", stopped 0x7ffff627aa2c in ?? (), reason: SIGABRT
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── trace ────
[#0] 0x7ffff627aa2c → mov r8d, eax
[#1] 0x7ffff62201a0 → raise()
[#2] 0x7ffff62075fe → abort()
[#3] 0x7ffff6208697 → test BYTE PTR [rbx+0x1], 0x80
[#4] 0x7ffff6307b80 → __fortify_fail()
[#5] 0x7ffff6307635 → __fdelt_warn()
[#6] 0x7ffff686669a → mov rsi, QWORD PTR [rbp-0x118]
[#7] 0x7ffff686f2c3 → mpd_connection_new()
[#8] 0x5555556f13bc → mov rdi, QWORD PTR [rbx+0x260]
[#9] 0x5555556f1dfc → mov rax, QWORD PTR [rbx+0x8]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Happy to test patches. Let me know if more info would help.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions