zapping-vbi / zvbi

Vertical Blanking Interval (VBI) utilities
Other
6 stars 4 forks source link

segmentation fault poking at zapping menus #10

Open ileanadumitrescu95 opened 2 years ago

ileanadumitrescu95 commented 2 years ago

SourceForge bug #176 written by Anonymous on 2007-01-02

Hi,

I like zapping very much, but I'm facing some crashes with it. Don't remember when they started, somewhere before 0.10 version - end of 2005, or first quarter of 2006, but I dind't reported here for those problems. Finally found time to do this :) Compiled cvs version to be sure I'm using the latest version. But there are still some problems which results in Segmentation Fault.

Example 1:

Starting zapping. Going to Edit->Clannels Editor results in:

#0 0xb7a2a906 in gtk_entry_set_text () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#1 0x08073b96 in no_channel_selected (ce=0x8427af0) at channel_editor.c:473
No locals.
#2 0x08077510 in on_channel_selection_changed (selection=0x84795c0, ce=0x8427af0) at channel_editor.c:1177
iter = {stamp = -1082034504, user_data = 0x1, user_data2 = 0x847e2d0, user_data3 = 0xb75631e8}
tc = <value optimized out>
__PRETTY_FUNCTION__ = "on_channel_selection_changed"
#3 0xb773e0d9 in g_cclosure_marshal_VOID__VOID () from /lib/libgobject-2.0.so.0
No symbol table info available.
#4 0xb7730d8b in g_closure_invoke () from /lib/libgobject-2.0.so.0
No symbol table info available.
#5 0xb7741d03 in g_signal_override_class_closure () from /lib/libgobject-2.0.so.0
No symbol table info available.
#6 0xb77431ff in g_signal_emit_valist () from /lib/libgobject-2.0.so.0
No symbol table info available.
#7 0xb77433b9 in g_signal_emit () from /lib/libgobject-2.0.so.0
No symbol table info available.
#8 0xb7b8ab5f in gtk_tree_model_sort_new_with_model () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#9 0xb7b9ddaf in gtk_tree_view_set_model () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#10 0x08074c6a in py_channel_editor (self=0x0, args=0x82bf02c) at channel_editor.c:1646

It looks like somewhere in no_channel_selected is the latest zapping code before gtk calls:

#1 0x08073b96 in no_channel_selected (ce=0x8426678) at channel_editor.c:473
473 gtk_entry_set_text (ce->entry_name, "");
(gdb) p *ce
$1 = {channel_editor = 0x842a800, vbox = 0x83b5ad8, country_menu = 0x8463810, country_table = 0x841aa20,
channel_search = 0x827f9d8, add_all_channels = 0x827fa48, import_xawtv = 0x827f560,
freq_treeview = 0x8473018, freq_model = 0x8295a58, freq_selection = 0x846bb60,
channel_treeview = 0x84731d8, channel_model = 0x8295a98, channel_selection = 0x84789c0, channel_up = 0x0,
channel_down = 0x0, channel_add = 0x0, channel_remove = 0x0, entry_table = 0x0, entry_name = 0x40240000,
entry_fine_tuning = 0x0, entry_standard = 0x0, entry_input = 0x0, entry_accel = 0x0, tooltips = 0x83edac0,
old_channel_list = 0x8426830, search = 0x0, have_tuners = 1}

Tried with removing some lines at which occurs segmentation fault. Line by line removing appears that the problem lines are:

--- zapping/src/channel_editor.c 2005-10-22 15:48:33.000000000 +0000
+++ zapping/src/channel_editor.c 2006-12-10 16:07:26.000000000 +0000
@@ -467,13 +467,13 @@ static void
no_channel_selected (channel_editor * ce)
{
gtk_widget_set_sensitive (ce->channel_up, FALSE);
- gtk_widget_set_sensitive (ce->channel_down, FALSE);
- gtk_widget_set_sensitive (ce->channel_remove, FALSE);
+// gtk_widget_set_sensitive (ce->channel_down, FALSE);
+// gtk_widget_set_sensitive (ce->channel_remove, FALSE);

gtk_entry_set_text (ce->entry_name, "");
z_option_menu_set_active (GTK_WIDGET (ce->entry_standard), 0);
z_option_menu_set_active (GTK_WIDGET (ce->entry_input), 0);
- z_key_entry_set_key (ce->entry_accel, Z_KEY_NONE);
+// z_key_entry_set_key (ce->entry_accel, Z_KEY_NONE);
gtk_widget_set_sensitive (GTK_WIDGET (ce->entry_table), FALSE);
}

and it works sometimes but not always. If I first open for example Edit->Preferences I may have luck sometimes :)

Example 2:

Opening teletext window with 'N' (in new window). It does not works usually, but this is not the main problem. After closing the windows leads to Segmentation Fault. Backtrace is not very usable here, but gdb shows one place:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1229424944 (LWP 13722)]
vbi3_page_unref (pg=0x0) at teletext.c:4070
4070 if (pg->ref_count > 1) {
(

which is here:

void
vbi3_page_unref (vbi3_page * pg)
{
if (NULL == pg)
return;

if (pg->ref_count > 1) {
--pg->ref_count;
return;
}

vbi3_page_delete (pg);
}

It looks like missing thread locking...

Comments by Boyan:

Logged In: YES user_id=1681478 Originator: NO

Sorry, didn't noticed I'm not logged in.