I can reproduce this reliably with a fresh install of pidgin on 26.04 by
going to Tools>Preferences>Voice/Video and clicking "Test Audio".
It seems like libpurple is passing garbage into
gst_device_get_device_class. It gets device2 from the "gst-device"
property of a PurpleMediaElementInfo, which is untyped according to GDB,
(gdb) list
2249 device2 = g_object_get_data(G_OBJECT(info),
"gst-device");
2250 if (device2) {
2251 gchar *name2;
2252 gchar *device_class2;
2253
2254 name2 = gst_device_get_display_name(device2);
2255 device_class2 =
gst_device_get_device_class(device2);
2256
2257 if (purple_strequal(name, name2) &&
2258 purple_strequal(device_class,
device_class2)) {
(gdb) p device2
$14 = 0x642caaf16160
Then GStreamer is crashing due to the type check,
(gdb) up
#1 0x0000794048632cd8 in purple_media_manager_unregister_gst_device (
manager=0x642caab80af0 [PurpleMediaManager], device=<optimised out>)
at ../../libpurple/mediamanager.c:2254
2254 name2 = gst_device_get_display_name(device2);
(gdb) do
#0 0x00007940493ff575 in gst_device_get_display_name
(device=device@entry=0x642caaf16160)
at ../gst/gstdevice.c:263
263 g_return_val_if_fail (GST_IS_DEVICE (device), NULL)
So I don't believe this is a GStreamer issue.
Full backtrace for reference,
#0 0x00007940493ff575 in gst_device_get_display_name
(device=device@entry=0x642caaf16160)
at ../gst/gstdevice.c:263
__inst = 0x642caaf16160
__t = 0x794028013010 [GstDevice/GstObject/GInitiallyUnowned]
__r = <optimised out>
_g_boolean_var_12 = 0
#1 0x0000794048632cd8 in purple_media_manager_unregister_gst_device
(manager=0x642caab80af0 [PurpleMediaManager], device=<optimised out>)
at ../../libpurple/mediamanager.c:2254
name2 = <optimised out>
device_class2 = <optimised out>
info = 0x642caaee3f80 [PurpleMediaElementInfo]
next = 0x642caaf21c50 = {0x642caaed8bd0, 0x642caaef0020,
0x642caaf52040, 0x642caaee6a30, 0x642caaf06950, 0x642caaedf4a0, 0x642caaf38db0,
0x642caaf38d70, 0x642caaf21410, 0x642caaf21390, 0x642caaf21350, 0x7940280187a0,
0x642caaee7d50, 0x642caaf37d70, 0x642caaf04580, 0x642caaef5480, 0x642caadc7590,
0x642caadc74f0, 0x642caadc7450, 0x642caadc73b0, 0x642caadc7310, 0x642caadc7270,
0x642caadc71d0, 0x642caadc7130, 0x642caadc7070, 0x642caadc6ff0}
device2 = 0x642caaf16160
i = 0x642caaf21c50 = {0x642caaed8bd0, 0x642caaef0020, 0x642caaf52040,
0x642caaee6a30, 0x642caaf06950, 0x642caaedf4a0, 0x642caaf38db0, 0x642caaf38d70,
0x642caaf21410, 0x642caaf21390, 0x642caaf21350, 0x7940280187a0, 0x642caaee7d50,
0x642caaf37d70, 0x642caaf04580, 0x642caaef5480, 0x642caadc7590, 0x642caadc74f0,
0x642caadc7450, 0x642caadc73b0, 0x642caadc7310, 0x642caadc7270, 0x642caadc71d0,
0x642caadc7130, 0x642caadc7070, 0x642caadc6ff0}
name = 0x642cab6bc8a0 "unknown"
device_class = 0x642cab6daa10 "Stream/Output/Audio"
done = 0
#2 device_monitor_bus_cb
(bus=<optimised out>, message=<optimised out>, user_data=0x642caab80af0)
at ../../libpurple/mediamanager.c:2299
manager = <optimised out>
message_type = <optimised out>
device = 0x79402c01e5c0 [GstPipeWireDevice|pipewiredevice18]
#3 device_monitor_bus_cb
(bus=<optimised out>, message=<optimised out>, user_data=0x642caab80af0)
at ../../libpurple/mediamanager.c:2286
manager = 0x642caab80af0 [PurpleMediaManager]
message_type = <optimised out>
device = 0x79402c01e5c0 [GstPipeWireDevice|pipewiredevice18]
#4 0x00007940493f2ff1 in gst_bus_source_dispatch
(source=0x642caab92a50, callback=0x794048632bf0 <device_monitor_bus_cb>,
user_data=0x642caab80af0) at ../gst/gstbus.c:841
handler = 0x794048632bf0 <device_monitor_bus_cb>
bsource = 0x642caab92a50
message = <optimised out>
keep = <optimised out>
bus = 0x642caadc7940 [GstBus|bus0]
#5 0x00007940488b0c3b in g_main_dispatch (context=0x642caaa9f0f0)
at ../../../glib/gmain.c:3565
user_data = 0x642caab80af0
callback = 0x794048632bf0 <device_monitor_bus_cb>
gaig_temp = <optimised out>
gaig_temp = <optimised out>
cb_data = 0x642caadc7cc0
need_destroy = <optimised out>
dispatch = 0x7940493f2f60 <gst_bus_source_dispatch>
prev_source = 0x0
was_in_call = 0
cb_funcs = 0x7940489a6380 <g_source_callback_funcs>
begin_time_nsec = 147273708869144
source = 0x642caab92a50
current = 0x642cab053980
i = 0
#6 0x00007940488b2277 in g_main_context_dispatch_unlocked
(context=0x642caaa9f0f0)
at ../../../glib/gmain.c:4425
#7 g_main_context_iterate_unlocked
(context=0x642caaa9f0f0, block=block@entry=1, dispatch=dispatch@entry=1,
self=<optimised out>) at ../../../glib/gmain.c:4490
max_priority = 2147483647
timeout_usec = 9318276
some_ready = 1
nfds = 7
allocated_nfds = <optimised out>
fds = 0x642cab464fb0
begin_time_nsec = <optimised out>
#8 0x00007940488b2617 in g_main_loop_run (loop=0x642cab466fd0) at
../../../glib/gmain.c:4695
self = <optimised out>
#9 0x0000794048f55971 in gtk_main () at
/usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#10 0x0000642c734b1aaa in main ()
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2136313
Title:
Pidgin crashed with SIGSEGV in g_type_check_instance_is_a()
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/pidgin/+bug/2136313/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs