Running the UI without threads, like this, makes the problem go away. ruby -ryast -e 'module Yast; self.ui_component="qt"; ui_create("qt", ["--nothreads"]); import "UI"; UI.OpenDialog(Term.new(:PushButton, Term.new(:id, :myid), "HI")); loop { sleep 0.3; ui = UI.PollInput; p ui; break if ui == :myid }; end' (In reply to Ladislav Slez�k from comment #11) > The last line reported by strace before getting stuck is: > futex(0x561fd6a171e8, FUTEX_WAIT_PRIVATE, 0, NULL > So it might be kernel related... futex is just a synchronization primitive. ltrace might be better here.