help-smalltalk
[Top][All Lists]
Advanced

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

[Help-smalltalk] GLib/GTK+ event loop fiasco


From: Holger Hans Peter Freyther
Subject: [Help-smalltalk] GLib/GTK+ event loop fiasco
Date: Sun, 20 Jul 2014 09:39:18 +0200
User-agent: Mutt/1.5.23 (2014-03-12)

hi,

the way we dispatch GTK/GLib events is very fragile. I am currently
looking into the sporadic on start-up crashes (I replaced the abort
in the sigsegv handler with a pause()).


* VisualGST is calling gtk_wiget_show_all()
* This triggers a change in a GtkNoteBook
* The change is dispatched in Smalltak
* We re-enter the event-loop
 #16 0xa6625d80 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
 #17 0xa66291d7 in g_main_context_dispatch () from 
/lib/i386-linux-gnu/libglib-2.0.so.0
 #18 0xa6c374c5 in main_loop_dispatch () at gst-glib.c:151
 #19 0xb768dd1c in _gst_dispatch_events () at events.c:285
 #20 0xb768b3fd in VMpr_Processor_dispatchEvents (id=0, numArgs=0) at 
prims.def:2961
 #21 0xb767e0f3 in execute_primitive_operation (numArgs=0, primitive=134) at 
interp.c:2738
 #22 _gst_send_message_internal (sendSelector=0x404924e0, sendArgs=0, 
receiver=0x40441820,
    method_class=0x40442458) at interp-bc.inl:276
 #23 0xb768503e in _gst_interpret (processOOP=0x40618a60) at vm.def:645
 #24 0xb768b691 in _gst_nvmsg_send (receiver=0x40638448, 
sendSelector=0x4061dec8,
    args=0xbfcbb870, sendArgs=3) at interp.c:2318
 #25 0xb7628e05 in gst_nvmsg_send (receiver=0x40638448, selector=0x4061dec8, 
args=0xbfcbb870,
    nargs=3) at gstpub.c:199
 #26 0xa6c310c2 in invoke_smalltalk_closure (closure=0x87a2750, 
return_value=0x0,
    n_param_values=3, param_values=0xbfcbb9f0, invocation_hint=0xbfcbb99c, 
marshal_data=0x0)
    at gst-gobject.c:440

* A timer expired and deals with a non fully initialized window and
  we get the crash.




I've looked at this code for a bit and I wonder why we don't inhibit the
process switching here? Or at least add a way to crash hard if a process
change is scheduled so I can see which mutex is hit.


(gdb) bt
#0  0xb76f0424 in __kernel_vsyscall ()
#1  0xb74ab141 in pause () at ../sysdeps/unix/syscall-template.S:81
#2  0xb76439c5 in oldspace_sigsegv_handler (fault_address=0x50, serious=0) at 
oop.c:961
#3  0xb73f2b10 in ?? () from /usr/lib/i386-linux-gnu/libsigsegv.so.2
#4  <signal handler called>
#5  IA__gdk_window_set_geometry_hints (window=0x0, geometry=0xbfcbaea4, 
    geom_mask=(GDK_HINT_MIN_SIZE | GDK_HINT_WIN_GRAVITY))
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gdk/x11/gdkwindow-x11.c:2361
#6  0xa59587d2 in gtk_window_move_resize (window=<optimized out>)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwindow.c:6219
#7  gtk_window_check_resize (container=0x8709830)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwindow.c:5408
#8  0xa66fd709 in g_cclosure_marshal_VOID__VOIDv ()
   from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#9  0xa66fa457 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#10 0xa66fbcce in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#11 0xa671512c in g_signal_emit_valist () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#12 0xa6715c83 in g_signal_emit () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#13 0xa57b0781 in IA__gtk_container_check_resize (container=0x8709830)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkcontainer.c:1432
#14 0xa57b09f1 in gtk_container_idle_sizer (data=0x0)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkcontainer.c:1357
#15 0xa5667050 in gdk_threads_dispatch (data=0x87cc870)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gdk/gdk.c:512
#16 0xa6625d80 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#17 0xa66291d7 in g_main_context_dispatch () from 
/lib/i386-linux-gnu/libglib-2.0.so.0
#18 0xa6c374c5 in main_loop_dispatch () at gst-glib.c:151
#19 0xb768dd1c in _gst_dispatch_events () at events.c:285
#20 0xb768b3fd in VMpr_Processor_dispatchEvents (id=0, numArgs=0) at 
prims.def:2961
#21 0xb767e0f3 in execute_primitive_operation (numArgs=0, primitive=134) at 
interp.c:2738
#22 _gst_send_message_internal (sendSelector=0x404924e0, sendArgs=0, 
receiver=0x40441820, 
    method_class=0x40442458) at interp-bc.inl:276
#23 0xb768503e in _gst_interpret (processOOP=0x40618a60) at vm.def:645
#24 0xb768b691 in _gst_nvmsg_send (receiver=0x40638448, 
sendSelector=0x4061dec8, 
    args=0xbfcbb870, sendArgs=3) at interp.c:2318
#25 0xb7628e05 in gst_nvmsg_send (receiver=0x40638448, selector=0x4061dec8, 
args=0xbfcbb870, 
    nargs=3) at gstpub.c:199
#26 0xa6c310c2 in invoke_smalltalk_closure (closure=0x87a2750, 
return_value=0x0, 
    n_param_values=3, param_values=0xbfcbb9f0, invocation_hint=0xbfcbb99c, 
marshal_data=0x0)
    at gst-gobject.c:440
#27 0xa66fba7e in g_closure_invoke () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#28 0xa670e089 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#29 0xa6715a9c in g_signal_emit_valist () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#30 0xa6715c83 in g_signal_emit () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#31 0xa58492d6 in gtk_notebook_switch_page (notebook=0x8709830, address@hidden, 
    page=0x42) at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtknotebook.c:6200
---Type <return> to continue, or q <return> to quit---frame 
#32 0xa584db8a in gtk_notebook_size_request (widget=0x87234f0, 
requisition=0x872350c)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtknotebook.c:2174
#33 0xa66fe5a9 in g_cclosure_marshal_VOID__BOXEDv ()
   from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#34 0xa66fa457 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#35 0xa66fbc3a in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#36 0xa671512c in g_signal_emit_valist () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#37 0xa6716141 in g_signal_emit_by_name () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#38 0xa589c372 in do_size_request (address@hidden)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:628
#39 0xa589ce07 in do_size_request (widget=0x87234f0)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:831
#40 _gtk_size_group_compute_requisition (widget=0x87234f0, 
requisition=0xbfcbbec8)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:828
#41 0xa59478ed in IA__gtk_widget_size_request (widget=0x87234f0, 
requisition=0xbfcbbec8)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwidget.c:3932
#42 0xa5859188 in gtk_paned_size_request (widget=0x8692e90, 
requisition=0x8692eac)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkpaned.c:776
#43 0xa66fe5a9 in g_cclosure_marshal_VOID__BOXEDv ()
   from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#44 0xa66fa457 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#45 0xa66fbc3a in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#46 0xa671512c in g_signal_emit_valist () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#47 0xa6716141 in g_signal_emit_by_name () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#48 0xa589c372 in do_size_request (address@hidden)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:628
#49 0xa589ce07 in do_size_request (widget=0x8692e90)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:831
#50 _gtk_size_group_compute_requisition (widget=0x8692e90, 
requisition=0xbfcbc1c8)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:828
#51 0xa59478ed in IA__gtk_widget_size_request (widget=0x8692e90, 
requisition=0xbfcbc1c8)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwidget.c:3932
#52 0xa577d66a in gtk_box_size_request (widget=0x87bf868, requisition=0x87bf884)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkbox.c:280
#53 0xa66fe5a9 in g_cclosure_marshal_VOID__BOXEDv ()
   from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#54 0xa66fa457 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#55 0xa66fbc3a in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#56 0xa671512c in g_signal_emit_valist () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#57 0xa6716141 in g_signal_emit_by_name () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#58 0xa589c372 in do_size_request (address@hidden)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:628
#59 0xa589ce07 in do_size_request (widget=0x87bf868)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:831
#60 _gtk_size_group_compute_requisition (widget=0x87bf868, 
requisition=0xbfcbc4c8)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:828
---Type <return> to continue, or q <return> to quit---
#61 0xa59478ed in IA__gtk_widget_size_request (widget=0x87bf868, 
requisition=0xbfcbc4c8)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwidget.c:3932
#62 0xa5957510 in gtk_window_size_request (widget=0x8709830, 
requisition=0x870984c)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwindow.c:4968
#63 0xa66fe5a9 in g_cclosure_marshal_VOID__BOXEDv ()
   from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#64 0xa66fa457 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#65 0xa66fbcce in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#66 0xa671512c in g_signal_emit_valist () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#67 0xa6716141 in g_signal_emit_by_name () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#68 0xa589c372 in do_size_request (address@hidden)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:628
#69 0xa589ce07 in do_size_request (widget=0x8709830)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:831
#70 _gtk_size_group_compute_requisition (widget=0x8709830, requisition=0x0)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtksizegroup.c:828
#71 0xa59478ed in IA__gtk_widget_size_request (widget=0x8709830, 
requisition=0x0)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwidget.c:3932
#72 0xa5957dcf in gtk_window_compute_configure_request (window=0x8709830, 
request=0x42, 
    geometry=0xbfcbc89c, flags=0xbfcbc878)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwindow.c:5842
#73 0xa595a5cd in gtk_window_show (widget=0x8709830)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwindow.c:4509
#74 0xa66fd6b3 in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#75 0xa66fa5a4 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#76 0xa66fba7e in g_closure_invoke () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#77 0xa670d72c in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#78 0xa6715a9c in g_signal_emit_valist () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#79 0xa6715c83 in g_signal_emit () from 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#80 0xa594f709 in IA__gtk_widget_show (widget=0x8709830)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwidget.c:3236
#81 0xa5954a5f in IA__gtk_widget_show_all (widget=0x8709830)
    at /build/gtk+2.0-DLbCCk/gtk+2.0-2.24.24/gtk/gtkwidget.c:3384
#82 0xb73ee94a in ffi_call_SYSV () from /usr/lib/i386-linux-gnu/libffi.so.6
#83 0xb73ee3d9 in ffi_call () from /usr/lib/i386-linux-gnu/libffi.so.6
#84 0xb765a721 in _gst_invoke_croutine (cFuncOOP=0x4059cac8, 
receiver=0x4062d928, 
    args=0x82f7524) at cint.c:950
#85 0xb767f948 in VMpr_CFuncDescriptor_call (id=0, numArgs=1) at prims.def:6054
#86 0xb767e0f3 in execute_primitive_operation (numArgs=1, primitive=230) at 
interp.c:2738
#87 _gst_send_message_internal (sendSelector=0x40441f28, sendArgs=1, 
receiver=0x4059cac8, 
    method_class=0x404424d0) at interp-bc.inl:276
#88 0xb7684946 in _gst_interpret (processOOP=0x404f6f78) at vm.def:665
#89 0xb768b691 in _gst_nvmsg_send (receiver=0x40441800, 
sendSelector=0x404f6f10, args=0x0, 
    sendArgs=0) at interp.c:2318
#90 0xb763b7d5 in _gst_execute_statements (receiverOOP=0x40441800, 
method=0x404f6f10, 
---Type <return> to continue, or q <return> to quit---
    undeclared=true, quiet=true) at comp.c:586
#91 0xb762cfd0 in execute_doit (p=0xbfcbd704, temps=0x0, stmts=0x85c78b8, 
    receiverOOP=0x40441800, undeclared=true, quiet=false) at gst-parse.c:592
#92 0xb762f258 in parse_doit (p=0xbfcbd704, fail_at_eof=false) at 
gst-parse.c:634
#93 0xb762fc1c in parse_chunks (address@hidden) at gst-parse.c:475
#94 0xb763003f in _gst_parse_chunks (currentNamespace=0x0) at gst-parse.c:449
#95 0xb7631c22 in _gst_parse_stream (currentNamespace=0x0) at lex.c:1209
#96 0xb765c9de in _gst_process_file (fileName=0x8049b0c "scripts/Test.st", 
    dir=GST_DIR_KERNEL_SYSTEM) at input.c:855
#97 0xb7628da5 in gst_process_file (fileName=0x8049b0c "scripts/Test.st", 
    dir=GST_DIR_KERNEL_SYSTEM) at gstpub.c:167




reply via email to

[Prev in Thread] Current Thread [Next in Thread]