dealing with async events



hi!

I'm developing a gtk+ based equivalent to 'netstat' and 'sockstat'. 
(http://bachi.te-clan.ch/tcpview.png)

my first app was a single thread (gtk_main) with g_timeout_add every 1
sec to update my treeview.
disadvantage: backend roundtrip is too long.
(http://bachi.te-clan.ch/TCPView/timeout.png)
(http://bachi.te-clan.ch/TCPView/TCPView.2005-03-13.tar.gz)

my second app was two threads (gtk_main, backend) with g_cond_timed_wait
every 1 sec to update my treeview by signaling.
disadvantage: abrupt SIGSEGV
(http://bachi.te-clan.ch/TCPView/signal.png)
(http://bachi.te-clan.ch/TCPView/TCPView.2005-03-22.tar.gz)

So my pseudo async backend was incorrect.
my question: what is the best case? i want an async backend to have a
trouble-free GUI.

greets

Andreas Bachmann

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1 (LWP 100100)]
0x281f21d7 in gtk_range_get_value ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
(gdb) backtrace
#0  0x281f21d7 in gtk_range_get_value ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#1  0x2827bc6a in gtk_tree_view_get_type ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#2  0x2827be1e in gtk_tree_view_get_type ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#3  0x281c2c34 in gtk_marshal_VOID__UINT_STRING ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#4  0x2860e3a9 in g_cclosure_new_swap ()
from /usr/local/lib/libgobject-2.0.so.600
#5  0x2860e160 in g_closure_invoke ()
from /usr/local/lib/libgobject-2.0.so.600
#6  0x28622c03 in g_signal_emit_by_name ()
from /usr/local/lib/libgobject-2.0.so.600
#7  0x28621d23 in g_signal_emit_valist ()
from /usr/local/lib/libgobject-2.0.so.600
#8  0x28621f14 in g_signal_emit ()
from /usr/local/lib/libgobject-2.0.so.600
#9  0x2829e174 in gtk_widget_send_expose ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#10 0x2829df1d in gtk_widget_send_expose ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#11 0x281c08a1 in gtk_main_do_event ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#12 0x28388807 in gdk_window_clear_area_e ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#13 0x28388942 in gdk_window_process_all_updates ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#14 0x28147014 in gtk_container_set_reallocate_redraws ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#15 0x28666838 in g_child_watch_add ()
from /usr/local/lib/libglib-2.0.so.600
#16 0x28663c93 in g_main_depth () from /usr/local/lib/libglib-2.0.so.600
#17 0x28664b3b in g_main_context_dispatch ()
from /usr/local/lib/libglib-2.0.so.600
#18 0x28664f06 in g_main_context_dispatch ()
from /usr/local/lib/libglib-2.0.so.600
#19 0x286654da in g_main_loop_run ()
from /usr/local/lib/libglib-2.0.so.600
#20 0x281c01b6 in gtk_main () from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#21 0x0804a431 in main (argc=1, argv=0xbfbfeb0c) at TCPViewMain.c:15

[...]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 3 (LWP 100187)]
0x2850e583 in XFillRectangle () from /usr/X11R6/lib/libX11.so.6
(gdb) backtrace
#0  0x2850e583 in XFillRectangle () from /usr/X11R6/lib/libX11.so.6
#1  0x283958cd in gdk_drag_drop_succeeded ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#2  0x2837314b in gdk_draw_rectangle ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#3  0x2837d3f3 in gdk_pixmap_get_type ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#4  0x2837314b in gdk_draw_rectangle ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#5  0x28386aeb in gdk_window_get_internal_paint_info ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#6  0x2837314b in gdk_draw_rectangle ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#7  0x28211c5b in gtk_style_apply_default_background ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#8  0x282163ca in gtk_paint_flat_box ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#9  0x2827b5f9 in gtk_tree_view_get_type ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#10 0x2827be1e in gtk_tree_view_get_type ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#11 0x281c2c34 in gtk_marshal_VOID__UINT_STRING ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#12 0x2860e3a9 in g_cclosure_new_swap ()
from /usr/local/lib/libgobject-2.0.so.600
#13 0x2860e160 in g_closure_invoke ()
from /usr/local/lib/libgobject-2.0.so.600
#14 0x28622c03 in g_signal_emit_by_name ()
from /usr/local/lib/libgobject-2.0.so.600
#15 0x28621d23 in g_signal_emit_valist ()
from /usr/local/lib/libgobject-2.0.so.600
#16 0x28621f14 in g_signal_emit ()
from /usr/local/lib/libgobject-2.0.so.600
#17 0x2829e174 in gtk_widget_send_expose ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#18 0x2829df1d in gtk_widget_send_expose ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#19 0x281c08a1 in gtk_main_do_event ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#20 0x28388807 in gdk_window_clear_area_e ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#21 0x28388a21 in gdk_window_process_updates ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#22 0x28281b82 in gtk_tree_view_get_fixed_height_mode ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#23 0x28287875 in gtk_tree_view_set_reorderable ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#24 0x28287b3f in gtk_tree_view_set_cursor_on_cell ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#25 0x28287981 in gtk_tree_view_set_cursor ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#26 0x0804b058 in tcp_view_tree_view_refresh_list (backend=0x80b6e80,
socket_list=0x8162cd4, tree_view=0x809af00) at TCPViewTreeView.c:619
#27 0x28623b54 in g_cclosure_marshal_VOID__POINTER ()
from /usr/local/lib/libgobject-2.0.so.600
#28 0x2860e160 in g_closure_invoke ()
from /usr/local/lib/libgobject-2.0.so.600
#29 0x286229f6 in g_signal_emit_by_name ()
from /usr/local/lib/libgobject-2.0.so.600
#30 0x28621ccb in g_signal_emit_valist ()
from /usr/local/lib/libgobject-2.0.so.600
#31 0x28622051 in g_signal_emit_by_name ()
from /usr/local/lib/libgobject-2.0.so.600
#32 0x0804b850 in tcp_view_backend_poll_thread (user_data=0x80b6e80) at
TCPViewBackend.c:315
#33 0x2867dd7f in g_static_private_free ()
from /usr/local/lib/libglib-2.0.so.600
#34 0x287b3a8d in pthread_create () from /usr/lib/libpthread.so.1
#35 0x2886dc5f in _ctx_start () from /lib/libc.so.5

[...]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 3 (LWP 100142)]
0x283958c2 in gdk_drag_drop_succeeded ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
(gdb) backtrace
#0  0x283958c2 in gdk_drag_drop_succeeded ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#1  0x2837314b in gdk_draw_rectangle ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#2  0x2837d3f3 in gdk_pixmap_get_type ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#3  0x2837314b in gdk_draw_rectangle ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#4  0x28386aeb in gdk_window_get_internal_paint_info ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#5  0x2837314b in gdk_draw_rectangle ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#6  0x28211c5b in gtk_style_apply_default_background ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#7  0x282163ca in gtk_paint_flat_box ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#8  0x2827b5f9 in gtk_tree_view_get_type ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#9  0x2827be1e in gtk_tree_view_get_type ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#10 0x281c2c34 in gtk_marshal_VOID__UINT_STRING ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#11 0x2860e3a9 in g_cclosure_new_swap ()
from /usr/local/lib/libgobject-2.0.so.600
#12 0x2860e160 in g_closure_invoke ()
from /usr/local/lib/libgobject-2.0.so.600
#13 0x28622c03 in g_signal_emit_by_name ()
from /usr/local/lib/libgobject-2.0.so.600
#14 0x28621d23 in g_signal_emit_valist ()
from /usr/local/lib/libgobject-2.0.so.600
#15 0x28621f14 in g_signal_emit ()
from /usr/local/lib/libgobject-2.0.so.600
#16 0x2829e174 in gtk_widget_send_expose ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#17 0x2829df1d in gtk_widget_send_expose ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#18 0x281c08a1 in gtk_main_do_event ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#19 0x28388807 in gdk_window_clear_area_e ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#20 0x28388a21 in gdk_window_process_updates ()
from /usr/X11R6/lib/libgdk-x11-2.0.so.600
#21 0x28281b82 in gtk_tree_view_get_fixed_height_mode ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#22 0x28287875 in gtk_tree_view_set_reorderable ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#23 0x28287b3f in gtk_tree_view_set_cursor_on_cell ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#24 0x28287981 in gtk_tree_view_set_cursor ()
from /usr/X11R6/lib/libgtk-x11-2.0.so.600
#25 0x0804b058 in tcp_view_tree_view_refresh_list (backend=0x80b6e80,
socket_list=0x824a39c, tree_view=0x809b800) at TCPViewTreeView.c:619
#26 0x28623b54 in g_cclosure_marshal_VOID__POINTER ()
from /usr/local/lib/libgobject-2.0.so.600
#27 0x2860e160 in g_closure_invoke ()
from /usr/local/lib/libgobject-2.0.so.600
#28 0x286229f6 in g_signal_emit_by_name ()
from /usr/local/lib/libgobject-2.0.so.600
#29 0x28621ccb in g_signal_emit_valist ()
from /usr/local/lib/libgobject-2.0.so.600
#30 0x28622051 in g_signal_emit_by_name ()
from /usr/local/lib/libgobject-2.0.so.600
#31 0x0804b850 in tcp_view_backend_poll_thread (user_data=0x80b6e80) at
TCPViewBackend.c:315
#32 0x2867dd7f in g_static_private_free ()
from /usr/local/lib/libglib-2.0.so.600
#33 0x287b3a8d in pthread_create () from /usr/lib/libpthread.so.1
#34 0x2886dc5f in _ctx_start () from /lib/libc.so.5





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]