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

Reply via email to