Closed rbeldin closed 7 years ago
I'm able to reproduce this. It seems that purple_image_get_path()
called from smiley_get_uniqid()
returns NULL
for a PurpleSmiley.
There were some changes concerning PurpleImage and smileys merged to Pidgin default recently. Perhaps @grimmy could comment?
A more detailed backtrace:
(gdb) bt full
#0 0x00007ffff77d4c50 in g_str_hash (v=0x0) at ././glib/ghash.c:1876
p = 0x0
h = 5381
#1 0x00007ffff77d4129 in g_hash_table_lookup_node (hash_return=<synthetic pointer>, key=0x0, hash_table=0x7fff4c7a5120) at ././glib/ghash.c:375
node_hash = <optimized out>
hash_value = <optimized out>
have_tombstone = 0
step = 0
node_index = <optimized out>
first_tombstone = 0
node_hash = <optimized out>
__func__ = "g_hash_table_lookup"
#2 0x00007ffff77d4129 in g_hash_table_lookup (hash_table=0x7fff4c7a5120, key=0x0) at ././glib/ghash.c:1147
node_hash = <optimized out>
__func__ = "g_hash_table_lookup"
#3 0x00007fffefb95206 in purple_smiley_list_get_unique (list=0xc18d70 [PurpleSmileyList]) at /home/haakon/ws/sipe/pidgin/./libpurple/smiley-list.c:355
smiley = 0x87be80 [PurpleSmiley]
path = 0x0
unique = 0x0
it = 0x8ff3a0
unique_map = 0x7fff4c7a5120
priv = 0xc18d40
__func__ = "purple_smiley_list_get_unique"
#4 0x00007ffff7b9033b in insert_smiley_cb (smiley=0x1666b70 [GtkToggleAction], toolbar=0xea8480 [PidginWebViewToolbar]) at /home/haakon/ws/sipe/pidgin/./pidgin/gtkwebviewtoolbar.c:840
priv = 0xea8270
smileys_from_theme = 0xc18d70 [PurpleSmileyList]
smileys_from_custom = 0x0
theme_smileys = 0x0
custom_smileys = 0x0
it = 0x0
it_next = 0x7fffefe75b47 <g_object_unref+103>
webview_format = -2201
dialog = 0x1
vbox = 0x1666b80
smiley_table = 0x0
supports_custom = 0
req = {width = 0, height = 0}
scrolled = 0x0
viewport = 0x0
#8 0x00007fffefe8bfbf in <emit signal ??? on instance 0x1666b70 [GtkToggleAction]> (instance=instance@entry=0x1666b70, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffff9780, reg_save_area = 0x7fffffff96c0}}
#5 0x00007fffefe70f75 in g_closure_invoke (closure=0x164a160, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffff94f0, invocation_hint=invocation_hint@entry=0x7fffffff9470) at ././gobject/gclosure.c:804
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x164a140
__func__ = "g_closure_invoke"
#6 0x00007fffefe82f82 in signal_emit_unlocked_R (node=node@entry=0xc20240, detail=detail@entry=0, instance=instance@entry=0x1666b70, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffff94f0) at ././gobject/gsignal.c:3635
tmp = <optimized out>
handler = 0x167adc0
accumulator = 0x0
emission = {next = 0x7fffffff98d0, instance = 0x1666b70, ihint = {signal_id = 281, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
handler_list = 0x167adc0
return_accu = 0x0
accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 281
max_sequential_handler_number = 11017
return_value_altered = 1
#7 0x00007fffefe8bbdc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffff96a0) at ././gobject/gsignal.c:3391
instance_and_params = 0x7fffffff94f0
signal_return_type = <optimized out>
param_values = 0x7fffffff9508
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#9 0x00007ffff1b1d740 in _gtk_action_emit_activate (action=0x1666b70 [GtkToggleAction]) at ././gtk/deprecated/gtkaction.c:909
group = 0x16793a0 [GtkActionGroup]
#10 0x00007ffff1b1dd4d in gtk_action_activate (action=<optimized out>) at ././gtk/deprecated/gtkaction.c:942
__func__ = "gtk_action_activate"
#11 0x00007ffff1da3599 in button_clicked (widget=<optimized out>, button=0x1686570 [GtkToggleToolButton]) at ././gtk/gtktoolbutton.c:952
action = <optimized out>
#15 0x00007fffefe8bfbf in <emit signal ??? on instance 0xe9e4a0 [GtkToggleButton]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ././gobject/gsignal.c:3447
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffff9bf0, reg_save_area = 0x7fffffff9b30}}
#12 0x00007fffefe70f75 in g_closure_invoke (closure=0xe9f020, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffff9960, invocation_hint=invocation_hint@entry=0x7fffffff98e0) at ././gobject/gclosure.c:804
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0xe9f000
__func__ = "g_closure_invoke"
#13 0x00007fffefe82f82 in signal_emit_unlocked_R (node=node@entry=0x6fad10, detail=detail@entry=0, instance=instance@entry=0xe9e4a0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffff9960) at ././gobject/gsignal.c:3635
tmp = <optimized out>
handler = 0xe9c380
accumulator = 0x0
emission = {next = 0x7fffffff9d70, instance = 0xe9e4a0, ihint = {signal_id = 182, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
handler_list = 0xe9c380
return_accu = 0x0
accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 182
max_sequential_handler_number = 11016
return_value_altered = 1
#14 0x00007fffefe8bbdc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffff9b10) at ././gobject/gsignal.c:3391
instance_and_params = 0x7fffffff9960
signal_return_type = <optimized out>
param_values = 0x7fffffff9978
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#16 0x00007ffff1ba0d7d in gtk_button_do_release (button=0xe9e4a0 [GtkToggleButton], emit_clicked=<optimized out>) at ././gtk/gtkbutton.c:1843
priv = <optimized out>
emit_clicked = <optimized out>
button = 0xe9e4a0 [GtkToggleButton]
priv = <optimized out>
#17 0x00007ffff1ba0de5 in gtk_real_button_released (button=0xe9e4a0 [GtkToggleButton]) at ././gtk/gtkbutton.c:1961
#21 0x00007fffefe8bfbf in <emit signal ??? on instance 0xe9e4a0 [GtkToggleButton]> (instance=instance@entry=0xe9e4a0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffa090, reg_save_area = 0x7fffffff9fd0}}
#18 0x00007fffefe70f75 in g_closure_invoke (closure=closure@entry=0x71ca30, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffff9e00, invocation_hint=invocation_hint@entry=0x7fffffff9d80) at ././gobject/gclosure.c:804
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x71ca10
__func__ = "g_closure_invoke"
#19 0x00007fffefe8295c in signal_emit_unlocked_R (node=node@entry=0x6fbcf0, detail=detail@entry=0, instance=instance@entry=0xe9e4a0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffff9e00) at ././gobject/gsignal.c:3565
accumulator = 0x0
emission = {next = 0x7fffffffa4a0, instance = 0xe9e4a0, ihint = {signal_id = 181, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 7256448}
handler_list = <optimized out>
return_accu = 0x0
accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 181
max_sequential_handler_number = 11016
return_value_altered = <optimized out>
#20 0x00007fffefe8bbdc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffff9fb0) at ././gobject/gsignal.c:3391
instance_and_params = 0x7fffffff9e00
signal_return_type = <optimized out>
param_values = 0x7fffffff9e18
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#22 0x00007ffff1b9f1e0 in multipress_released_cb (gesture=0x14c4690 [GtkGestureMultiPress], n_press=<optimized out>, x=<optimized out>, y=<optimized out>, widget=0xe9e4a0 [GtkToggleButton]) at ././gtk/gtkbutton.c:666
button = 0xe9e4a0 [GtkToggleButton]
priv = 0xe9e320
sequence = <optimized out>
#23 0x00007fffe5c49038 in ffi_call_unix64 () at /usr/lib/x86_64-linux-gnu/libffi.so.6
#24 0x00007fffe5c48a9a in ffi_call () at /usr/lib/x86_64-linux-gnu/libffi.so.6
#25 0x00007fffefe71c8a in g_cclosure_marshal_generic_va (closure=0xe9dde0, return_value=0x0, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=3, param_types=0x656680) at ././gobject/gclosure.c:1604
rtype = 0x7fffe5c49420 <ffi_type_void>
rvalue = 0x7fffffffa260
n_args = 5
atypes = 0x7fffffffa220
args = 0x7fffffffa1e0
storage = 0x7fffffffa1b0
i = <optimized out>
cif = {abi = FFI_UNIX64, nargs = 5, arg_types = 0x7fffffffa220, rtype = 0x7fffe5c49420 <ffi_type_void>, bytes = 0, flags = 2048}
cc = 0xe9dde0
enum_tmpval = <optimized out>
tmpval_used = 0
args_copy = {{gp_offset = 32, fp_offset = 80, overflow_arg_area = 0x7fffffffa680, reg_save_area = 0x7fffffffa5c0}}
#26 0x00007fffefe711a4 in _g_closure_invoke_va (closure=closure@entry=0xe9dde0, return_value=return_value@entry=0x0, instance=instance@entry=0x14c4690, args=args@entry=0x7fffffffa5a0, n_params=<optimized out>, param_types=0x656680) at ././gobject/gclosure.c:867
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0xe9ddc0
__func__ = "_g_closure_invoke_va"
#27 0x00007fffefe8b8cd in g_signal_emit_valist (instance=0x14c4690, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffa5a0) at ././gobject/gsignal.c:3300
return_accu = <optimized out>
accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
accumulator = 0x0
emission = {next = 0x7fffffffa830, instance = 0x14c4690, ihint = {signal_id = 265, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 11498224}
signal_id = <optimized out>
instance_type = <optimized out>
emission_return = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
rtype = 4
static_scope = 0
fastpath_handler = <optimized out>
closure = <optimized out>
run_type = <optimized out>
l = <optimized out>
fastpath = <optimized out>
instance_and_params = <optimized out>
signal_return_type = <optimized out>
param_values = <optimized out>
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#28 0x00007fffefe8bfbf in g_signal_emit (instance=instance@entry=0x14c4690, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffa680, reg_save_area = 0x7fffffffa5c0}}
#29 0x00007ffff1c5ab71 in gtk_gesture_multi_press_end (gesture=0x14c4690 [GtkGestureMultiPress], sequence=<optimized out>) at ././gtk/gtkgesturemultipress.c:282
multi_press = 0x14c4690 [GtkGestureMultiPress]
current = <optimized out>
x = 11
y = 25
#30 0x00007fffefe73d27 in g_cclosure_marshal_VOID__BOXEDv (closure=0xb0d850, return_value=<optimized out>, instance=0x14c4690, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0xb0d880) at ././gobject/gmarshal.c:1950
cc = 0xb0d850
data1 = <optimized out>
data2 = <optimized out>
callback = <optimized out>
arg0 = 0x0
args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffaa10, reg_save_area = 0x7fffffffa950}}
#31 0x00007fffefe711a4 in _g_closure_invoke_va (closure=closure@entry=0xb0d850, return_value=return_value@entry=0x0, instance=instance@entry=0x14c4690, args=args@entry=0x7fffffffa930, n_params=<optimized out>, param_types=0xb0d880) at ././gobject/gclosure.c:867
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0xb0d830
__func__ = "_g_closure_invoke_va"
#32 0x00007fffefe8b8cd in g_signal_emit_valist (instance=0x14c4690, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffa930) at ././gobject/gsignal.c:3300
return_accu = <optimized out>
accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
accumulator = 0x0
emission = {next = 0x7fffffffacb0, instance = 0x14c4690, ihint = {signal_id = 260, detail = 0, run_type = G_SIGNAL_RUN_LAST}, state = EMISSION_RUN, chain_type = 11498224}
signal_id = <optimized out>
instance_type = <optimized out>
emission_return = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
rtype = 4
static_scope = 0
fastpath_handler = <optimized out>
closure = <optimized out>
run_type = <optimized out>
l = <optimized out>
fastpath = <optimized out>
instance_and_params = <optimized out>
signal_return_type = <optimized out>
param_values = <optimized out>
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#33 0x00007fffefe8bfbf in g_signal_emit (instance=instance@entry=0x14c4690, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffaa10, reg_save_area = 0x7fffffffa950}}
#34 0x00007ffff1c57e3e in _gtk_gesture_set_recognized (sequence=0x0, recognized=0, gesture=0x14c4690 [GtkGestureMultiPress]) at ././gtk/gtkgesture.c:345
has_matching_touchpoints = <optimized out>
#35 0x00007ffff1c57e3e in _gtk_gesture_check_recognized (gesture=gesture@entry=0x14c4690 [GtkGestureMultiPress], sequence=sequence@entry=0x0) at ././gtk/gtkgesture.c:386
has_matching_touchpoints = <optimized out>
#36 0x00007ffff1c5946b in gtk_gesture_handle_event (controller=0x14c4690 [GtkGestureMultiPress], event=0x16822a0) at ././gtk/gtkgesture.c:777
gesture = 0x14c4690 [GtkGestureMultiPress]
sequence = 0x0
source_device = <optimized out>
was_recognized = 1
#37 0x00007ffff1c5c0ed in gtk_gesture_single_handle_event (controller=0x14c4690 [GtkGestureMultiPress], event=0x16822a0) at ././gtk/gtkgesturesingle.c:222
sequence = <optimized out>
source_device = <optimized out>
source = GDK_SOURCE_MOUSE
button = 1
i = <optimized out>
retval = <optimized out>
test_touchscreen = <optimized out>
#38 0x00007ffff1c2955e in gtk_event_controller_handle_event (controller=0x14c4690 [GtkGestureMultiPress], event=event@entry=0x16822a0) at ././gtk/gtkeventcontroller.c:230
controller_class = 0xaf69b0
retval = 0
__func__ = "gtk_event_controller_handle_event"
#39 0x00007ffff1dee2db in _gtk_widget_run_controllers (widget=0xe9e4a0 [GtkToggleButton], event=0x16822a0, phase=GTK_PHASE_BUBBLE) at ././gtk/gtkwidget.c:7359
controller_phase = <optimized out>
next = 0x0
data = 0xe9d980
handled = 0
priv = 0xe9e3b0
l = <optimized out>
#40 0x00007ffff1ca3ba1 in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x66c880, return_value=0x7ffffffface0, instance=0xe9e4a0, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x621b20) at ././gtk/gtkmarshalers.c:131
cc = 0x66c880
data1 = <optimized out>
data2 = <optimized out>
callback = <optimized out>
arg0 = 0x16822a0
args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffae90, reg_save_area = 0x7fffffffadd0}}
v_return = <optimized out>
__func__ = "_gtk_marshal_BOOLEAN__BOXEDv"
#41 0x00007fffefe711a4 in _g_closure_invoke_va (closure=closure@entry=0x66c880, return_value=return_value@entry=0x7ffffffface0, instance=instance@entry=0xe9e4a0, args=args@entry=0x7fffffffadb0, n_params=<optimized out>, param_types=0x621b20) at ././gobject/gclosure.c:867
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x66c860
__func__ = "_g_closure_invoke_va"
#42 0x00007fffefe8b3a1 in g_signal_emit_valist (instance=0xe9e4a0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffadb0) at ././gobject/gsignal.c:3300
return_accu = <optimized out>
accu = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
accumulator = 0x621be0
emission = {next = 0x0, instance = 0xe9e4a0, ihint = {signal_id = 61, detail = 0, run_type = G_SIGNAL_RUN_LAST}, state = EMISSION_RUN, chain_type = 7256448}
signal_id = <optimized out>
instance_type = <optimized out>
emission_return = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
rtype = 20
static_scope = 0
fastpath_handler = <optimized out>
closure = <optimized out>
run_type = <optimized out>
l = <optimized out>
fastpath = <optimized out>
instance_and_params = <optimized out>
signal_return_type = <optimized out>
param_values = <optimized out>
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#43 0x00007fffefe8bfbf in g_signal_emit (instance=instance@entry=0xe9e4a0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffae90, reg_save_area = 0x7fffffffadd0}}
#44 0x00007ffff1df057c in gtk_widget_event_internal (widget=0xe9e4a0 [GtkToggleButton], event=0x16822a0) at ././gtk/gtkwidget.c:7724
signal_num = <optimized out>
handled = 0
event = 0x16822a0
widget = 0xe9e4a0 [GtkToggleButton]
#45 0x00007ffff1ca0b2e in propagate_event_up (topmost=<optimized out>, event=<optimized out>, widget=0xe9e4a0 [GtkToggleButton]) at ././gtk/gtkmain.c:2578
tmp = <optimized out>
handled_event = <optimized out>
handled_event = 0
#46 0x00007ffff1ca0b2e in propagate_event (widget=<optimized out>, event=0x16822a0, captured=<optimized out>, topmost=0x0) at ././gtk/gtkmain.c:2680
handled_event = 0
#47 0x00007ffff1ca2bee in gtk_main_do_event (event=0x16822a0) at ././gtk/gtkmain.c:1901
event_widget = <optimized out>
grab_widget = 0xe9e4a0 [GtkToggleButton]
topmost_widget = <optimized out>
window_group = 0x8f7c10 [GtkWindowGroup]
rewritten_event = <optimized out>
device = 0x664000 [GdkX11DeviceCore]
tmp_list = <optimized out>
__func__ = "gtk_main_do_event"
#48 0x00007ffff17b3e15 in _gdk_event_emit (event=event@entry=0x16822a0) at ././gdk/gdkevents.c:73
#49 0x00007ffff17e4ea2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ././gdk/x11/gdkeventsource.c:367
display = <optimized out>
event = 0x16822a0
#50 0x00007ffff77e57f7 in g_main_dispatch (context=0x640dc0) at ././glib/gmain.c:3203
dispatch = 0x7ffff17e4e80 <gdk_event_source_dispatch>
prev_source = 0x0
was_in_call = 0
user_data = 0x0
callback = 0x0
cb_funcs = <optimized out>
cb_data = <optimized out>
need_destroy = <optimized out>
source = 0x60a240
current = 0x694c80
i = 0
#51 0x00007ffff77e57f7 in g_main_context_dispatch (context=context@entry=0x640dc0) at ././glib/gmain.c:3856
#52 0x00007ffff77e5a60 in g_main_context_iterate (context=0x640dc0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3929
max_priority = 2147483647
timeout = 315
some_ready = 1
nfds = 14
allocated_nfds = 15
fds = <optimized out>
#53 0x00007ffff77e5d82 in g_main_loop_run (loop=0x14d7810) at ././glib/gmain.c:4125
__func__ = "g_main_loop_run"
#54 0x00007ffff1ca1d55 in gtk_main () at ././gtk/gtkmain.c:1312
loop = 0x14d7810
#55 0x00007ffff7b99910 in pidgin_start (argc=2, argv=0x7fffffffd5a8) at /home/haakon/ws/sipe/pidgin/./pidgin/libpidgin.c:848
opt_force_online = 0
opt_help = 0
opt_login = 0
opt_nologin = 0
opt_version = 0
opt_si = 1
opt_config_dir_arg = 0x0
opt_login_arg = 0x0
opt_session_arg = 0x0
search_path = 0xae84e0 "/home/haakon/.config/gplugin"
provider = 0x7f72e0 [GtkCssProvider]
screen = 0x0
accounts = 0x7
sig_indx = 1
sigset = {__val = {82950, 0 <repeats 15 times>}}
errmsg = "\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\336\367\377\177\000\000\001\000\000\000\377\177\000\000\300\231\361\367\377\177", '\000' <repeats 12 times>, "\302\t\275\357\377\377\200\353\334\343\377\177\000\000\337`\336\367\377\177\000\000\001\000\000\000\377\177\000\000\350\223\361\367\377\177\000\000P\263\377\377\377\177\000\000\000\000\302\t\275\357\377\377\370aX\344\377\177\000\000\337`\336\367\377\177\000\000\001\000\000\000\377\177\000\000\360\216\361\367\377\177\000\000\200\263\377\377\377\177\000\000\000\000\302\t\275\357\377\377\350aX\344\377\177\000\000\337`\336\367\377\177\000\000\001\000\000\000\377\177\000\000\360\211\361\367\377\177\000\000\260\263\377\377\377\177\000\000\000\000"...
signal_channel = 0x640ea0
signal_status = G_IO_STATUS_NORMAL
signal_channel_watcher = 1
segfault_message_tmp = 0x640fb0 "\260", <incomplete sequence \352\214>
opt = -1
gui_check = 0
debug_enabled = 1
debug_colored = 0
active_accounts = 0xd65aa0
st = {st_dev = 65026, st_ino = 6164527, st_nlink = 2, st_mode = 16877, st_uid = 10000, st_gid = 10000, __pad0 = 0, st_rdev = 0, st_size = 4096, st_blksize = 4096, st_blocks = 8, st_atim = {tv_sec = 1406232328, tv_nsec = 786017533}, st_mtim = {tv_sec = 1433936244, tv_nsec = 914702663}, st_ctim = {tv_sec = 1433936244, tv_nsec = 914702663}, __glibc_reserved = {0, 0, 0}}
error = 0x67ab20
long_options = {{name = 0x7ffff7bb7c03 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x7ffff7bb7c0a "debug", has_arg = 2, flag = 0x0, val = 100}, {name = 0x7ffff7bb7c10 "force-online", has_arg = 0, flag = 0x0, val = 102}, {name = 0x7ffff7bb7c1d "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x7ffff7bb7c22 "login", has_arg = 2, flag = 0x0, val = 108}, {name = 0x7ffff7bb7c28 "multiple", has_arg = 0, flag = 0x0, val = 109}, {name = 0x7ffff7bb7c31 "nologin", has_arg = 0, flag = 0x0, val = 110}, {name = 0x7ffff7bb7c39 "session", has_arg = 1, flag = 0x0, val = 115}, {name = 0x7ffff7bb7327 "version", has_arg = 0, flag = 0x0, val = 118}, {name = 0x7ffff7bb7c41 "display", has_arg = 1, flag = 0x0, val = 68}, {name = 0x7ffff7bb7c49 "sync", has_arg = 0, flag = 0x0, val = 83}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
#56 0x00000000004008cd in main (argc=2, argv=0x7fffffffd5a8) at /home/haakon/ws/sipe/pidgin/./pidgin/pidgin.c:50
test_prgname = 0x0
Why oh why are you running purple/pidgin3?! Those are a not supported versions which are seeing heavy traffic for API instability.
That said, yes a pull request that was open for 6 months was finally merged.
That said I'm not sure when I can look at this, but these seems like a perfect use case for some unit testing...
Well, I'm getting pidgin from the ppa:
apt-cache madison pidgin pidgin | 1:3.0.0~collab-1+201706050632~ubuntu17.04.1 | http://ppa.launchpad.net/sipe-collab/ppa/ubuntu zesty/main amd64 Packages pidgin | 1:2.12.0-1ubuntu1 | http://us.archive.ubuntu.com/ubuntu zesty/universe amd64 Packages pidgin | 1:2.12.0-1ubuntu1 | http://us.archive.ubuntu.com/ubuntu zesty/universe Sources
@rbeldin my comments were directed at @xhaakon.
Also that PPA is not from Pidgin itself. Pidgin has not released libpurple3/pidgin3 and we offer no guarantees on it's stability or anything as it is unreleased. That said, it should mostly work, but there are big issues coming up that are going to cause some serious problems for users.
@xhaakon if you want to drop by devel@conference.pidgin.im or contact me in another fashion we can go over these issues in more detail. That said, sorry for the bug, but thanks for finding it, I'm going to try to prioritize it to get it knocked out.
A proposed fix can be found here https://bitbucket.org/pidgin/main/pull-requests/203
@grimmy I'm well aware Pidgin 3 is under development and there are no guarantees. I included you into this conversation just to let you know about the bug we found, not to complain something got broken :)
I checked the pull request and confirm the crash is gone. Thanks for your quick response and fix!
The reasons for us using Pidgin 3.0 go back to when 2.x libpurple didn't support GStreamer 1.0, which we needed for implementing call encryption and other stuff. Although those media features have been ported back to the stable Pidgin branch since then, 3.0 has worked well enough, so we stuck with it in our PPA builds.
That said, thanks again for your hard work.
@rbeldin I've rebuilt pidgin in PPA with grimmy's fix, so please update.
@xhaakon Works perfectly. Thanks very much.
@xhaakon note, there may be changes to that in the future as it's not merged to mainline yet...
I have Ubuntu 17.04 and pidgin will core dump if I click on the emoji (smiley face) button in the main chat window. This happens reliably and as far as I know, did not happen until recently:
I am not sure that this provides all the libraries. If there are others to collect, please let me know.
Stack trace:
I can provide a core if you like.