#1135675 pidgin: Segmentation fault in `gst_device_get_display_name`; trigger unclear

Package:
pidgin
Source:
pidgin
Description:
graphical multi-protocol instant messaging client
Submitter:
Jan
Date:
2026-05-17 22:41:02 UTC
Severity:
normal
#1135675#5
Date:
2026-05-04 13:09:12 UTC
From:
To:
Dear Maintainer,

since a recent version upgrade, Pidgin crashed at seemingly random intervals on my KDE-based system.
I have a vague feeling those crashes are related to transitioning the system to standby (S3) but could not verify this.


I tried running in GDB, following https://wiki.debian.org/HowToGetABacktrace to get debug information.
But these seem to be missing for the relevant source file.


Excerpt from the GDB session:

Thread 1 "pidgin" received signal SIGSEGV, Segmentation fault.
Download failed: Invalid argument.  Continuing without source file ./obj-x86_64-linux-gnu/../gst/gstdevice.c.
0x00007fa3dc4a49bd in gst_device_get_display_name (device=device@entry=0x563d080ed0a0) at ../gst/gstdevice.c:263
⚠ warning: 263 ../gst/gstdevice.c: No such file or directory
(gdb) bt
#0  0x00007fa3dc4a49bd in gst_device_get_display_name (device=device@entry=0x563d080ed0a0) at ../gst/gstdevice.c:263
#1  0x00007fa3db6cf8cb in purple_media_manager_unregister_gst_device
    (manager=0x563d07f61350 [PurpleMediaManager], device=<optimized out>) at ../../libpurple/mediamanager.c:2254
#2  device_monitor_bus_cb (bus=<optimized out>, message=<optimized out>, user_data=0x563d07f61350)
    at ../../libpurple/mediamanager.c:2299
#3  device_monitor_bus_cb (bus=<optimized out>, message=<optimized out>, user_data=0x563d07f61350)
    at ../../libpurple/mediamanager.c:2286
#4  0x00007fa3dc490f79 in gst_bus_source_dispatch
    (source=0x563d07fec1e0, callback=0x7fa3db6cf7e0 <device_monitor_bus_cb>, user_data=0x563d07f61350) at ../gst/gstbus.c:841
#5  0x00007fa3db94566e in g_main_dispatch (context=context@entry=0x563d07f010a0) at ../../../glib/gmain.c:3591
#6  0x00007fa3db9489ff in g_main_context_dispatch_unlocked (context=0x563d07f010a0) at ../../../glib/gmain.c:4451
#7  g_main_context_iterate_unlocked
    (context=0x563d07f010a0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4516
#8  0x00007fa3db94948f in g_main_loop_run (loop=0x563d08b1fe50) at ../../../glib/gmain.c:4721
#9  0x00007fa3dbf4171f in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#10 0x0000563ce2b4aa9c in main (argc=<optimized out>, argv=<optimized out>) at ../../pidgin/gtkmain.c:948
(gdb) list
258     in ../gst/gstdevice.c
(gdb) disass
Dump of assembler code for function gst_device_get_display_name:
   0x00007fa3dc4a49a0 <+0>:     endbr64
   0x00007fa3dc4a49a4 <+4>:     push   %rbx
   0x00007fa3dc4a49a5 <+5>:     mov    %rdi,%rbx
   0x00007fa3dc4a49a8 <+8>:     call   0x7fa3dc4a4820 <gst_device_get_type>
   0x00007fa3dc4a49ad <+13>:    test   %rbx,%rbx
   0x00007fa3dc4a49b0 <+16>:    je     0x7fa3dc4a49f0 <gst_device_get_display_name+80>
   0x00007fa3dc4a49b2 <+18>:    mov    %rax,%rsi
   0x00007fa3dc4a49b5 <+21>:    mov    (%rbx),%rax
   0x00007fa3dc4a49b8 <+24>:    test   %rax,%rax
   0x00007fa3dc4a49bb <+27>:    je     0x7fa3dc4a49c2 <gst_device_get_display_name+34>
=> 0x00007fa3dc4a49bd <+29>:    cmp    %rsi,(%rax)
   0x00007fa3dc4a49c0 <+32>:    je     0x7fa3dc4a49ce <gst_device_get_display_name+46>
   0x00007fa3dc4a49c2 <+34>:    mov    %rbx,%rdi
   0x00007fa3dc4a49c5 <+37>:    call   0x7fa3dc46b630 <g_type_check_instance_is_a@plt>
   0x00007fa3dc4a49ca <+42>:    test   %eax,%eax
   0x00007fa3dc4a49cc <+44>:    je     0x7fa3dc4a49f0 <gst_device_get_display_name+80>
   0x00007fa3dc4a49ce <+46>:    mov    0x58(%rbx),%rax
   0x00007fa3dc4a49d2 <+50>:    pop    %rbx
   0x00007fa3dc4a49d3 <+51>:    mov    0x10(%rax),%rdi
   0x00007fa3dc4a49d7 <+55>:    lea    0xa4a74(%rip),%rax        # 0x7fa3dc549452
   0x00007fa3dc4a49de <+62>:    test   %rdi,%rdi
   0x00007fa3dc4a49e1 <+65>:    cmove  %rax,%rdi
   0x00007fa3dc4a49e5 <+69>:    jmp    0x7fa3dc46c420 <g_strdup@plt>
   0x00007fa3dc4a49ea <+74>:    nopw   0x0(%rax,%rax,1)
   0x00007fa3dc4a49f0 <+80>:    lea    0xa1c17(%rip),%rdx        # 0x7fa3dc54660e
   0x00007fa3dc4a49f7 <+87>:    lea    0xc11f2(%rip),%rsi        # 0x7fa3dc565bf0 <__func__.5>
   0x00007fa3dc4a49fe <+94>:    lea    0x9fa17(%rip),%rdi        # 0x7fa3dc54441c
   0x00007fa3dc4a4a05 <+101>:   call   0x7fa3dc46b2f0 <g_return_if_fail_warning@plt>
   0x00007fa3dc4a4a0a <+106>:   xor    %eax,%eax
   0x00007fa3dc4a4a0c <+108>:   pop    %rbx
   0x00007fa3dc4a4a0d <+109>:   ret
End of assembler dump.



As stated before, I have not yet found a way to reliably trigger this crash.
But when the crash does happen, it's always on the same line according to GDB.


Best regards,
Jan

#1135675#10
Date:
2026-05-09 11:58:41 UTC
From:
To:
Hi, I am hitting this bug too, and I can reproduce it every time by invoking xscreensaver.

Same crash, it seems:

Thread 1 "pidgin" received signal SIGSEGV, Segmentation fault.
0x00007ffff7d459bd in gst_device_get_display_name () from /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
(gdb) bt
#0  0x00007ffff7d459bd in gst_device_get_display_name () at /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#1  0x00007ffff6f898cb in ??? () at /usr/lib/x86_64-linux-gnu/libpurple.so.0
#2  0x00007ffff7d31f79 in ??? () at /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#3  0x00007ffff71fd3c5 in ??? () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007ffff71ff5f7 in ??? () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007ffff720005f in g_main_loop_run () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x00007ffff793e86f in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#7  0x0000555555590a39 in main ()
(gdb) list
warning: 1	../sysdeps/unix/sysv/linux/dl-vdso-setup.c: No such file or directory
(gdb) disass
Dump of assembler code for function gst_device_get_display_name:
   0x00007ffff7d459a0 <+0>:	endbr64
   0x00007ffff7d459a4 <+4>:	push   %rbx
   0x00007ffff7d459a5 <+5>:	mov    %rdi,%rbx
   0x00007ffff7d459a8 <+8>:	call   0x7ffff7d45820 <gst_device_get_type>
   0x00007ffff7d459ad <+13>:	test   %rbx,%rbx
   0x00007ffff7d459b0 <+16>:	je     0x7ffff7d459f0 <gst_device_get_display_name+80>
   0x00007ffff7d459b2 <+18>:	mov    %rax,%rsi
   0x00007ffff7d459b5 <+21>:	mov    (%rbx),%rax
   0x00007ffff7d459b8 <+24>:	test   %rax,%rax
   0x00007ffff7d459bb <+27>:	je     0x7ffff7d459c2 <gst_device_get_display_name+34>
=> 0x00007ffff7d459bd <+29>:	cmp    %rsi,(%rax)
   0x00007ffff7d459c0 <+32>:	je     0x7ffff7d459ce <gst_device_get_display_name+46>
   0x00007ffff7d459c2 <+34>:	mov    %rbx,%rdi
   0x00007ffff7d459c5 <+37>:	call   0x7ffff7d0c630 <g_type_check_instance_is_a@plt>
   0x00007ffff7d459ca <+42>:	test   %eax,%eax
   0x00007ffff7d459cc <+44>:	je     0x7ffff7d459f0 <gst_device_get_display_name+80>
   0x00007ffff7d459ce <+46>:	mov    0x58(%rbx),%rax
   0x00007ffff7d459d2 <+50>:	pop    %rbx
   0x00007ffff7d459d3 <+51>:	mov    0x10(%rax),%rdi
   0x00007ffff7d459d7 <+55>:	lea    0xa4a74(%rip),%rax        # 0x7ffff7dea452
   0x00007ffff7d459de <+62>:	test   %rdi,%rdi
   0x00007ffff7d459e1 <+65>:	cmove  %rax,%rdi
   0x00007ffff7d459e5 <+69>:	jmp    0x7ffff7d0d420 <g_strdup@plt>
   0x00007ffff7d459ea <+74>:	nopw   0x0(%rax,%rax,1)
   0x00007ffff7d459f0 <+80>:	lea    0xa1c17(%rip),%rdx        # 0x7ffff7de760e
   0x00007ffff7d459f7 <+87>:	lea    0xc11f2(%rip),%rsi        # 0x7ffff7e06bf0
   0x00007ffff7d459fe <+94>:	lea    0x9fa17(%rip),%rdi        # 0x7ffff7de541c
   0x00007ffff7d45a05 <+101>:	call   0x7ffff7d0c2f0 <g_return_if_fail_warning@plt>
   0x00007ffff7d45a0a <+106>:	xor    %eax,%eax
   0x00007ffff7d45a0c <+108>:	pop    %rbx
   0x00007ffff7d45a0d <+109>:	ret
End of assembler dump.
(gdb)

- Mark

#1135675#15
Date:
2026-05-09 22:22:05 UTC
From:
To:
Hi,
  Is this the one fixed here:

https://issues.imfreedom.org/issue/PIDGIN-18155/Pidgin-is-crashing-with-GStreamer-gstdevicegetdeviceclass-assertion-GSTISDEVICE-device-failed

I think it triggers when any type of audio/video device reconfiguration
happens.

Dave

#1135675#20
Date:
2026-05-16 02:54:44 UTC
From:
To:
^ works for me.  I manually patched libpurple with the code changes
above and Pidgin no longer crashes when I invoke xscreensaver like it
did before.

- Mark

#1135675#25
Date:
2026-05-17 22:39:08 UTC
From:
To:
Hello,

Mark Kamichoff, le ven. 15 mai 2026 21:54:44 -0500, a ecrit:

I can confirm that the patch fixes the crashes for me. I was getting
them very frequently, on e.g. finishing watching a video on youtube, or
such operation that changes the list of devices or such.

It would be very important to backport the fix, as otherwise pidgin is
basically unusable for me.

Samuel