GNOME Bugzilla – Bug 629456
Screen switch to a window locks it up
Last modified: 2014-01-22 19:35:56 UTC
Created attachment 170097 [details] [review] Fix. Using many virtual screens and switching between them to vte windows. In many cases the output is still, despite the application would write more text. One has to do some kick of it - using unmaximize+maximize to always fix it up. Sometimes I stare at the screen until the application writes something. But the application already wrote it that time, it is just not displayed. Reproducer: gnome-terminal --disable-factory -e /tmp/termlock &>/tmp/out /tmp/termlock is: #! /bin/sh i=0;while :;do echo \ ---------------------------------------------$i;i=$[$i+1];done And now switch several times to a different screen and back to this one. Occasionally the window stops scrolling. Debug (/tmp/out) tail in this hanging case (using VTE_DEBUG=all): [...] -].read 8176/4096 bytes, again? no, active? yes removed poll of vte_terminal_io_read Visibility (unobscured -> fully-obscured). change visibility: unobscured -> fully-obscured. Removing terminal from active list Removing update timeout Visibility (fully-obscured -> unobscured). change visibility: fully-obscured -> unobscured. *Invalidating all. +Expose (0,0)x(722,434) vte_terminal_paint() =draw_start draw_set_scroll (0, 0) vte_terminal_paint (0,0)x(722,434) pixels draw_clip draw_clear (0, 0, 722, 434) vte_terminal_paint_area (0,0)x(722,434) pixels, (0,0)x(80,24) cells [(1,1)x(720,432) pixels] draw_cells('---------------------------------------------5623---------------------------------------------5624---------------------------------------------5625---------------------------------------------5626---------------------------------------------5627---------------------------------------------5628---------------------------------------------5629---------------------------------------------5630---------------------------------------------5631---------------------------------------------5632---------------------------------------------5633---------------------------------------------5634---------------------------------------------5635---------------------------------------------5636---------------------------------------------5637---------------------------------------------5638---------------------------------------------5639---------------------------------------------5640---------------------------------------------5641---------------------------------------------5642---------------------------------------------5643---------------------------------------------5644---------------------------------------------5645----------------', fore=256, back=257, bold=0, ul=0, strike=0, hilite=0, boxed=0) draw_text ("---------------------------------------------5623---------------------------------------------5624---------------------------------------------5625---------------------------------------------5626---------------------------------------------5627---------------------------------------------5628---------------------------------------------5629---------------------------------------------5630---------------------------------------------5631---------------------------------------------5632---------------------------------------------5633---------------------------------------------5634---------------------------------------------5635---------------------------------------------5636---------------------------------------------5637---------------------------------------------5638---------------------------------------------5639---------------------------------------------5640---------------------------------------------5641---------------------------------------------5642---------------------------------------------5643---------------------------------------------5644---------------------------------------------5645----------------", len=1143, color=(0,0,0,255), normal) draw_start draw_rectangle (144, 414, 11, 20, color=(0,0,0,255)) draw_end draw_end The fix has been tested and makes sense only together with the other fix, going to link the two Bugs together.
Verified on VTE GIT f1676fbe3e91a6e887abf254723b57e841fad0bb: Tue Sep 7
Could this be caused by a division giving 0, as described in bug 721944 comment 7 ?
Maybe, not sure, it seems to me the problem of this Bug still happens but I have not explicitly verified it now. See also very similar Bug 629457. I may check it again later. It is all very dependent on hardware speeds and on my new machine it no longer happens so often as on the old box.
I think I was on a false track in comment 2. I tried to reproduce the bug but couldn't. Interestingly, vte_terminal_set_visibility() is only entered twice on startup, and never later. I tried with many old-fashioned (not compositing) window managers, still I don't get any visibility changes. What am I doing wrong? (I'm using standalone vteapp, but I don't think it should make a difference.) Jan, I would be grateful if you could help me reproduce the bug, and also if you shared your findings (not just the patch, but the rationale behind it - it's a part of the code I'm totally unfamiliar with, and I'd like to understand how these changes fix the problem). Thanks!
I can no longer reproduce it. It has been probably fixed in the meantime.