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 _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list