This is indeed because of the mpris plugin. Relevant part of the stack is just:
#0 0x00172642 in rb_shell_player_get_playback_state (player=0x822d000, shuffle=0x0, repeat=0xbfffefcc) at rb-shell-player.c:1817
#1 0x038005a3 in get_loop_status (plugin=<value optimized out>) at rb-mpris-plugin.c:570
#2 0x038020bf in play_order_changed_cb (object=0x822d000, pspec=0x81e3760, plugin=0x831f2a0) at rb-mpris-plugin.c:784
Specifically, get_loop_status in rb-mpris-plugin.c does:
(passing NULL for the gboolean* shuffle), and rhythmbox itself then segfaults doing:
*shuffle = i > 0;
(using that gboolean* assuming it is not NULL).
Either passing a valid pointer to an (unused) gboolean in the mpris plugin or teaching the rhythmbox core to check these gboolean*s for NULL before using them should fix the bug.
This is indeed because of the mpris plugin. Relevant part of the stack is just:
#0 0x00172642 in rb_shell_ player_ get_playback_ state (player=0x822d000, shuffle=0x0, repeat=0xbfffefcc) at rb-shell- player. c:1817 plugin. c:570 changed_ cb (object=0x822d000, pspec=0x81e3760, plugin=0x831f2a0) at rb-mpris- plugin. c:784
#1 0x038005a3 in get_loop_status (plugin=<value optimized out>) at rb-mpris-
#2 0x038020bf in play_order_
Specifically, get_loop_status in rb-mpris-plugin.c does:
rb_shell_ player_ get_playback_ state (plugin->player, NULL, &loop);
(passing NULL for the gboolean* shuffle), and rhythmbox itself then segfaults doing:
*shuffle = i > 0;
(using that gboolean* assuming it is not NULL).
Either passing a valid pointer to an (unused) gboolean in the mpris plugin or teaching the rhythmbox core to check these gboolean*s for NULL before using them should fix the bug.