rhythmbox crashed with SIGSEGV in itdb_playlist_remove_track
Submitted by gno..@..il.com
Link to original bug (#773793)
Description
(gdb) bt full
#0 0x00007ffff68ef350 in g_list_remove (list=0x7ffff6bcecf0 <g_cclosure_marshal_VOID__VOIDv>, data=0x55555783c200) at ././glib/glist.c:516
tmp = 0x854d127420000000
#1 0x00007fffdc8a2d7b in itdb_playlist_remove_track (pl=pl@entry=0x5555577a00d0, track=track@entry=0x55555783c200) at ../../../src/itdb_playlist.c:1490
__func__ = "itdb_playlist_remove_track"
#2 0x00007fffdcb28e6f in rb_ipod_db_remove_from_playlist (track=0x55555783c200, playlist=0x5555577a00d0, ipod_db=0x555556efcc80 [RbIpodDb]) at rb-ipod-db.c:438
priv = <optimized out>
#3 0x00007fffdcb28e6f in rb_ipod_db_remove_from_playlist (ipod_db=0x555556efcc80 [RbIpodDb], playlist=0x5555577a00d0, track=0x55555783c200) at rb-ipod-db.c:554
priv = <optimized out>
#7 0x00007ffff6be7faf in <emit signal ??? on instance 0x5555578a51a0 [RhythmDBQueryModel]> (instance=<optimized out>, signal_id=signal_id@entry=449, detail=detail@entry=0) at ././gobject/gsignal.c:3447
var_args = {{
gp_offset = 32,
fp_offset = 48,
overflow_arg_area = 0x7fffffffc890,
reg_save_area = 0x7fffffffc7d0
}}
#4 0x00007ffff6bccf75 in g_closure_invoke (closure=0x555557982c40, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffc5f0, invocation_hint=invocation_hint@entry=0x7fffffffc570)
at ././gobject/gclosure.c:804
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x555557982c20
__func__ = "g_closure_invoke"
#5 0x00007ffff6bdef82 in signal_emit_unlocked_R (node=node@entry=0x555555992820, detail=detail@entry=0, instance=instance@entry=0x5555578a51a0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffc5f0) at ././gobject/gsignal.c:3635
tmp = <optimized out>
handler = 0x55555797f640
accumulator = 0x0
emission = {
next = 0x7fffffffc9d0,
instance = 0x5555578a51a0,
ihint = {
signal_id = 449,
detail = 0,
run_type = G_SIGNAL_RUN_FIRST
},
state = EMISSION_RUN,
chain_type = 4
}
handler_list = 0x555557967840
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 = 449
max_sequential_handler_number = 36338
return_value_altered = 1
#6 0x00007ffff6be7bcc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffc7b0) at ././gobject/gsignal.c:3391
instance_and_params = 0x7fffffffc5f0
signal_return_type = <optimized out>
param_values = 0x7fffffffc608
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#8 0x00007ffff7b25ece in rhythmdb_query_model_remove_entry (model=<optimized out>, entry=0x5555562c56b0) at rhythmdb-query-model.c:1818
__FUNCTION__ = "rhythmdb_query_model_remove_entry"
#12 0x00007ffff6be7faf in <emit signal ??? on instance 0x555555978410 [RhythmDBTree]> (instance=<optimized out>, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447
var_args = {{
gp_offset = 32,
fp_offset = 48,
overflow_arg_area = 0x7fffffffcd00,
reg_save_area = 0x7fffffffcc40
}}
#9 0x00007ffff6bccf75 in g_closure_invoke (closure=0x5555578eb450, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffca60, invocation_hint=invocation_hint@entry=0x7fffffffc9e0)
at ././gobject/gclosure.c:804
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x5555578eb430
__func__ = "g_closure_invoke"
#10 0x00007ffff6bdef82 in signal_emit_unlocked_R (node=node@entry=0x555555a3ba00, detail=detail@entry=0, instance=instance@entry=0x555555978410, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffca60) at ././gobject/gsignal.c:3635
tmp = <optimized out>
handler = 0x5555578ea680
accumulator = 0x0
emission = {
next = 0x7fffffffd570,
instance = 0x555555978410,
ihint = {
signal_id = 253,
detail = 0,
run_type = G_SIGNAL_RUN_FIRST
},
state = EMISSION_RUN,
chain_type = 4
}
handler_list = 0x5555578a5c00
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 = 253
max_sequential_handler_number = 36338
return_value_altered = 1
#11 0x00007ffff6be7bcc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffcc20) at ././gobject/gsignal.c:3391
instance_and_params = 0x7fffffffca60
signal_return_type = <optimized out>
param_values = 0x7fffffffca78
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#13 0x00007ffff7b19440 in rhythmdb_emit_entry_deleted (db=<optimized out>, entry=entry@entry=0x5555562c56b0) at rhythmdb.c:4456
#14 0x00007ffff7b309f4 in remove_one_song (key=<optimized out>, entry=0x5555562c56b0, ctxt=0x7fffffffcd70) at rhythmdb-tree.c:1758
db = 0x555555978410 [RhythmDBTree]
__FUNCTION__ = "remove_one_song"
#15 0x00007ffff68e18c0 in g_hash_table_foreach_remove_or_steal (hash_table=0x555555a9c920, func=func@entry=0x7ffff7b30970 <remove_one_song>, user_data=user_data@entry=0x7fffffffcd70, notify=notify@entry=1) at ././glib/ghash.c:1492
node_hash = <optimized out>
node_key = <optimized out>
node_value = <optimized out>
deleted = 9
i = 540
version = 670
__func__ = "g_hash_table_foreach_remove_or_steal"
#16 0x00007ffff68e271c in g_hash_table_foreach_remove (hash_table=<optimized out>, func=func@entry=0x7ffff7b30970 <remove_one_song>, user_data=user_data@entry=0x7fffffffcd70) at ././glib/ghash.c:1538
__func__ = "g_hash_table_foreach_remove"
#17 0x00007ffff7b3092a in rhythmdb_tree_entry_delete_by_type (adb=0x555555978410 [RhythmDBTree], type=0x555556efca60 [RhythmDBEntryType]) at rhythmdb-tree.c:1782
db = 0x555555978410 [RhythmDBTree]
ctxt = {
db = 0x555555978410 [RhythmDBTree],
type = 0x555556efca60 [RhythmDBEntryType]
}
#18 0x00007ffff7acd9b6 in impl_delete_thyself (page=0x55555777a4f0 [RBiPodSource]) at rb-media-player-source.c:1120
db = 0x555555978410 [RhythmDBTree]
shell = 0x5555559911f0 [RBShell]
entry_type = 0x555556efca60 [RhythmDBEntryType]
__FUNCTION__ = "impl_delete_thyself"
#19 0x00007ffff7ac2dd9 in rb_display_page_delete_thyself (page=0x55555777a4f0 [RBiPodSource]) at rb-display-page.c:151
klass = <optimized out>
__FUNCTION__ = "rb_display_page_delete_thyself"
#20 0x00007ffff68efaad in g_list_foreach (list=<optimized out>, func=0x7ffff7ac2db0 <rb_display_page_delete_thyself>, user_data=user_data@entry=0x0) at ././glib/glist.c:1005
next = 0x0
#21 0x00007fffdcb2f55e in impl_deactivate (bplugin=<optimized out>) at rb-ipod-plugin.c:145
plugin = 0x555556658190 [RBIpodPlugin]
rmm = 0x555555fe12e0 [RBRemovableMediaManager]
shell = 0x5555559911f0 [RBShell]
__FUNCTION__ = "impl_deactivate"
#22 0x00007ffff02f9038 in ffi_call_unix64 () at ../src/x86/unix64.S:76
#23 0x00007ffff02f8a9a in ffi_call (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=0x7fffffffcf60) at ../src/x86/ffi64.c:525
classes = {X86_64_INTEGER_CLASS, X86_64_NO_CLASS, 4294955072, 32767}
stack = <optimized out>
argp = 0x7fffffffce60 ""
arg_types = <optimized out>
gprcount = 1
ssecount = <optimized out>
ngpr = 1
nsse = 0
i = <optimized out>
avn = <optimized out>
ret_in_memory = <optimized out>
reg_args = <optimized out>
#24 0x00007ffff43d3213 in g_callable_info_invoke () at /usr/lib/x86_64-linux-gnu/libgirepository-1.0.so.1
#25 0x00007ffff43d454a in g_function_info_invoke () at /usr/lib/x86_64-linux-gnu/libgirepository-1.0.so.1
#26 0x00007ffff46084ba in peas_gi_method_call () at /usr/lib/x86_64-linux-gnu/libpeas-1.0.so.0
#27 0x00007ffff46063f6 in peas_extension_callv () at /usr/lib/x86_64-linux-gnu/libpeas-1.0.so.0
#28 0x00007ffff460653c in peas_extension_call_valist () at /usr/lib/x86_64-linux-gnu/libpeas-1.0.so.0
#29 0x00007ffff46066c9 in peas_extension_call () at /usr/lib/x86_64-linux-gnu/libpeas-1.0.so.0
#33 0x00007ffff6be7faf in <emit signal ??? on instance 0x555556398d60 [PeasExtensionSet]> (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ././gobject/gsignal.c:3447
var_args = {{
gp_offset = 40,
fp_offset = 48,
overflow_arg_area = 0x7fffffffd8c0,
reg_save_area = 0x7fffffffd800
}}
#30 0x00007ffff6bccf75 in g_closure_invoke (closure=0x5555563a0110, return_value=return_value@entry=0x0, n_param_values=3, param_values=param_values@entry=0x7fffffffd600, invocation_hint=invocation_hint@entry=0x7fffffffd580)
at ././gobject/gclosure.c:804
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x5555563a00f0
__func__ = "g_closure_invoke"
#31 0x00007ffff6bdef82 in signal_emit_unlocked_R (node=node@entry=0x5555563a0180, detail=detail@entry=0, instance=instance@entry=0x555556398d60, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd600) at ././gobject/gsignal.c:3635
tmp = <optimized out>
handler = 0x555556388800
accumulator = 0x0
emission = {
next = 0x7fffffffdae0,
instance = 0x555556398d60,
ihint = {
signal_id = 522,
detail = 0,
run_type = G_SIGNAL_RUN_FIRST
},
state = EMISSION_RUN,
chain_type = 4
}
handler_list = 0x555556388800
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 = 522
max_sequential_handler_number = 34656
return_value_altered = 0
#32 0x00007ffff6be7bcc in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffd7e0) at ././gobject/gsignal.c:3391
instance_and_params = 0x7fffffffd600
signal_return_type = <optimized out>
param_values = 0x7fffffffd618
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#34 0x00007ffff4606d7a in () at /usr/lib/x86_64-linux-gnu/libpeas-1.0.so.0
#35 0x00007ffff4606f8c in () at /usr/lib/x86_64-linux-gnu/libpeas-1.0.so.0
#36 0x00007ffff6bd1c05 in g_object_unref (_object=0x555556398d60) at ././gobject/gobject.c:3148
weak_locations = 0x0
old_ref = <optimized out>
object = 0x555556398d60 [PeasExtensionSet]
object = 0x555556398d60 [PeasExtensionSet]
#37 0x00007ffff7aaea8c in rb_shell_quit (shell=0x5555559911f0 [RBShell], error=error@entry=0x0) at rb-shell.c:2524
display = 0x5555559720b0 [GdkX11Display]
__FUNCTION__ = "rb_shell_quit"
#38 0x00007ffff7aaeb96 in rb_shell_window_delete_cb (win=<optimized out>, event=<optimized out>, shell=<optimized out>) at rb-shell.c:1981
#39 0x00007ffff703f651 in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x555555cd3b30, return_value=0x7fffffffdb10, instance=0x555555d322c0, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x555555792940) at ././gtk/gtkmarshalers.c:131
cc = 0x555555cd3b30
data1 = <optimized out>
data2 = <optimized out>
callback = <optimized out>
arg0 = 0x55555799f490
args_copy = {{
gp_offset = 32,
fp_offset = 48,
overflow_arg_area = 0x7fffffffdcc0,
reg_save_area = 0x7fffffffdc00
}}
v_return = <optimized out>
__func__ = "_gtk_marshal_BOOLEAN__BOXEDv"
#40 0x00007ffff6bcd1a4 in _g_closure_invoke_va (closure=closure@entry=0x555555cd3b30, return_value=return_value@entry=0x7fffffffdb10, instance=instance@entry=0x555555d322c0, args=args@entry=0x7fffffffdbe0, n_params=<optimized out>, param_types=0x555555792940) at ././gobject/gclosure.c:867
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x555555cd3b10
__func__ = "_g_closure_invoke_va"
#41 0x00007ffff6be7391 in g_signal_emit_valist (instance=0x555555d322c0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffdbe0) 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 = 0x5555557929d0
emission = {
next = 0x0,
instance = 0x555555d322c0,
ihint = {
signal_id = 95,
detail = 0,
run_type = G_SIGNAL_RUN_LAST
},
state = EMISSION_RUN,
chain_type = 93824999638944
}
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"
#42 0x00007ffff6be7faf in g_signal_emit (instance=instance@entry=0x555555d322c0, signal_id=<optimized out>, detail=detail@entry=0) at ././gobject/gsignal.c:3447
var_args = {{
gp_offset = 24,
fp_offset = 48,
overflow_arg_area = 0x7fffffffdcc0,
reg_save_area = 0x7fffffffdc00
}}
#43 0x00007ffff718bd0c in gtk_widget_event_internal (widget=0x555555d322c0 [GtkApplicationWindow], event=0x55555799f490) at ././gtk/gtkwidget.c:7721
signal_num = <optimized out>
handled = 0
event = 0x55555799f490
widget = 0x555555d322c0 [GtkApplicationWindow]
#44 0x00007ffff703e6bb in gtk_main_do_event (event=0x55555799f490) at ././gtk/gtkmain.c:1792
event_widget = 0x555555d322c0 [GtkApplicationWindow]
grab_widget = 0x555555d322c0 [GtkApplicationWindow]
topmost_widget = <optimized out>
window_group = 0x7fffd82dd970 [GtkWindowGroup]
rewritten_event = <optimized out>
device = 0x0
tmp_list = <optimized out>
__func__ = "gtk_main_do_event"
#45 0x00007ffff53feb95 in _gdk_event_emit (event=event@entry=0x55555799f490) at ././gdk/gdkevents.c:73
#46 0x00007ffff542fb52 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 = 0x55555799f490
#47 0x00007ffff68f37d7 in g_main_context_dispatch (context=0x5555557776b0) at ././glib/gmain.c:3203
dispatch = 0x7ffff542fb30 <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 = 0x55555598b7f0
current = 0x5555559a70b0
i = 0
#48 0x00007ffff68f37d7 in g_main_context_dispatch (context=context@entry=0x5555557776b0) at ././glib/gmain.c:3856
#49 0x00007ffff68f3a40 in g_main_context_iterate (context=context@entry=0x5555557776b0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ././glib/gmain.c:3929
max_priority = 2147483647
timeout = 454
some_ready = 1
nfds = 12
allocated_nfds = 15
fds = <optimized out>
#50 0x00007ffff68f3aec in g_main_context_iteration (context=context@entry=0x5555557776b0, may_block=may_block@entry=1) at ././glib/gmain.c:3990
retval = <optimized out>
#51 0x00007ffff38da70d in g_application_run (application=0x555555780180 [RBApplication], argc=argc@entry=1, argv=argv@entry=0x7fffffffe248) at ././gio/gapplication.c:2381
arguments = 0x55555577f210
status = 0
context = 0x5555557776b0
acquired_context = <optimized out>
__func__ = "g_application_run"
#52 0x00007ffff7a9f588 in rb_application_run (app=0x555555780180 [RBApplication], argc=1, argv=<optimized out>) at rb-application.c:667
context = <optimized out>
debug = 0
debug_match = 0x0
nargc = 1
nargv = 0x7fffffffe248
error = 0x0
options = {{
long_name = 0x7ffff7b6d3ba "debug",
short_name = 100 'd',
flags = 0,
arg = G_OPTION_ARG_NONE,
arg_data = 0x7fffffffdf10,
description = 0x7ffff7b4cde7 "Enable debug output",
arg_description = 0x0
}, {
long_name = 0x7ffff7b6d3c2 "debug-match",
short_name = 68 'D',
flags = 0,
arg = G_OPTION_ARG_STRING,
arg_data = 0x7fffffffdf18,
description = 0x7ffff7b4d870 "Enable debug output matching a specified string",
arg_description = 0x0
}, {
long_name = 0x7ffff7b4cdfb "no-update",
short_name = 0 '\000',
flags = 0,
arg = G_OPTION_ARG_NONE,
arg_data = 0x555555780074,
description = 0x7ffff7b4d8a0 "Do not update the library with file changes",
arg_description = 0x0
}, {
long_name = 0x7ffff7b4ce05 "no-registration",
short_name = 110 'n',
flags = 0,
arg = G_OPTION_ARG_NONE,
arg_data = 0x555555780078,
description = 0x7ffff7b4ce15 "Do not register the shell",
arg_description = 0x0
}, {
long_name = 0x7ffff7b4ce2f "dry-run",
short_name = 0 '\000',
flags = 0,
arg = G_OPTION_ARG_NONE,
arg_data = 0x55555578007c,
description = 0x7ffff7b4d8d0 "Don't save any data permanently (implies --no-registration)",
arg_description = 0x0
}, {
long_name = 0x7ffff7b4ce37 "disable-plugins",
short_name = 0 '\000',
flags = 0,
arg = G_OPTION_ARG_NONE,
arg_data = 0x555555780080,
description = 0x7ffff7b4ce47 "Disable loading of plugins",
arg_description = 0x0
}, {
long_name = 0x7ffff7b4ce62 "rhythmdb-file",
short_name = 0 '\000',
flags = 0,
arg = G_OPTION_ARG_STRING,
arg_data = 0x555555780088,
description = 0x7ffff7b4ce70 "Path for database file to use",
arg_description = 0x0
}, {
long_name = 0x7ffff7b4ce8e "playlists-file",
short_name = 0 '\000',
flags = 0,
arg = G_OPTION_ARG_STRING,
arg_data = 0x555555780090,
description = 0x7ffff7b4d910 "Path for playlists file to use",
arg_description = 0x0
}, {
long_name = 0x7ffff7b6a494 "version",
short_name = 0 '\000',
flags = 8,
arg = G_OPTION_ARG_CALLBACK,
arg_data = 0x7ffff7a9e4f0 <show_version_cb>,
description = 0x7ffff7b4d930 "Show the version of the program",
arg_description = 0x0
}, {
long_name = 0x0,
short_name = 0 '\000',
flags = 0,
arg = G_OPTION_ARG_NONE,
arg_data = 0x0,
description = 0x0,
arg_description = 0x0
}}
#53 0x0000555555554d73 in main (argc=1, argv=0x7fffffffe248) at main.c:88
app = 0x555555780180 [RBApplication]
rc = <optimized out>
Version: HEAD