Hi,
Lately I've been getting very frequent crashes when I attempt to use the search box. I start typing something and it crashes, not every time but very often (one in three or four times).
I launched from a terminal and it frequently says something like:
GLib-CRITICAL **: Source ID 1914 was not found when attempting to remove it at /usr/bin/../share/gmusicbrowser/gmusicbrowser_songs.pm line 4959.
Use of uninitialized value in pattern match (m//) at /usr/bin/../share/gmusicbrowser/gmusicbrowser_songs.pm line 3109.
I have no idea what that means, but that's not when it crashes, when it crashes, the terminal goes:
*** unhandled exception in callback:
*** Can't use an undefined value as a subroutine reference at /usr/bin/../share/gmusicbrowser/gmusicbrowser_list.pm line 3716.
*** ignoring at /usr/bin/gmusicbrowser line 1433.
Segmentation fault
Any ideas as to what's going on would be greatly appreciated.
Thanks.
Thanks for reporting this. I can't find the line for the error as I don't know what version you are using, can you show me the lines around 3716 of your /usr/share/gmusicbrowser/gmusicbrowser_list.pm ?
(as a workaround, it seems to be in the suggestion code, so you might try turning it off : click on the search icon and un-check "show suggestions")
Thanks for your reply. From a quick test, it seems like un-checking "show suggestions" stops the crashes (and checking it again brings back the crashes). That's a good enough solution for me, thanks, but I'm happy to help with further investigations into this issue.
The version I am using is 1.1.12 on ubuntu 14.04.
Here are lines 3700 to 3730 of the /usr/share/gmusicbrowser/gmusicbrowser_list.pm (line 3716 is the one that says "destroy").
}
$self->StartIdleFilter if $self->{autofilter} || ($l>2 && !$self->{suggest});
if ($self->{suggest})
{ Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $timeout= $l<2 ? 0 : $l==2 ? 200 : 100;
if ($timeout) { $self->{suggest_timeout}= Glib::Timeout->add($timeout,\&UpdateSuggestionMenu,$self); }
else { $self->CloseSuggestionMenu; }
}
}
sub CloseSuggestionMenu
{ my $self=shift;
Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $menu= delete $self->{matchmenu};
return unless $menu;
$menu->cancel;
$menu->destroy;
}
sub UpdateSuggestionMenu
{ my $self=shift;
if ($self->{matchmenu} && !$self->{matchmenu}->mapped) { $self->CloseSuggestionMenu; }
Glib::Source->remove(delete $self->{suggest_timeout}) if $self->{suggest_timeout};
my $refresh= !!$self->{matchmenu};
my $menu= $self->{matchmenu} ||= Gtk2::Menu->new;
if ($refresh) { $menu->remove($_) for $menu->get_children; }
my $h=$self->size_request->height;
my $w=$self->size_request->width;
my $screen=$self->get_screen;
my $monitor=$screen->get_monitor_at_window($self->window);
Thanks, fixed in git (http://git.gmusicbrowser.org/commit/d659ed2888), I will make a new release soon.