Ok, applied your fix thanks.

On Thu, Jan 17, 2013 at 06:02:50PM +0900, Hayaki Saito wrote:
> In present, semantics of xterm's OSC 12 sequence is always either one of "set 
> cursor color" or "get cursor color".
> if the substring after ";" in an OSC 12 sequence means "set cursor color", It 
> can never begin with "?", and if it means the other, It always begins with 
> "?".
> So I think that this condition is necessary and sufficient for infinite echo 
> loop problem.
> 
> On 2013/01/17, at 7:55, Nicholas Marriott wrote:
> 
> > ok this makes more sense now thanks
> > 
> > do we really need to drop all sequences starting with "?" or is it enough
> > to match only when it is only "?"?
> > 
> > 
> > On Thu, Jan 17, 2013 at 02:38:54AM +0900, Hayaki Saito wrote:
> >> 
> >> Oh, I apologize for not providing you with enough explanation.
> >> I just noticed that this is configuration-specific issue.
> >> In order to reproduce this problem, we should enable visual bell.
> >> 
> >>> set-option -g visual-bell on
> >> 
> >> If we type this command on shell environment, ECHO-backed OSC sequences 
> >> such as '\033]12;rgb:xx/xx/xx\033\\' will be emitted infinitely,
> >> 
> >>> printf '\033]12;?\033\\'
> >> 
> >> I found this problem on OSX 10.7 / Xterm patch level 288, at present.
> >> The another person seems to reproduce it on Ubuntu 12.10. 
> >> 
> >> I guess the process of this problem is as follows;
> >> 
> >> 1. Tmux accepts '\033]12;?\033\\' as OSC sequence and misunderstand "?" as 
> >> a "cursor color".
> >> So Tmux comes to emit '\033]12;?\033\\' every time the cursor is updated.
> >> However, according to Xterm's specification, this sequence does not mean 
> >> "set cursor color", but "query cursor color".
> >> ref.http://invisible-island.net/xterm/ctlseqs/ctlseqs.html
> >> 
> >> 2. Xterm replies current cursor color, such as 
> >> '\033]12;rgb:xx/xx/xx\033\\',  against this query.
> >> 
> >> 3. bash / tcsh / zsh / ksh accepts it as key input, and it is echoed back 
> >> to stout.
> >> Then the shell treats "\033]" or "\033\\" as invalid key sequences. 
> >> typically they will emit BEL(^G).
> >> 
> >> 4. Tmux accept BEL and does visual-bell action. 
> >>    status line is updated and cursor is updated again.
> >> 
> >> They establishes the following circuit. it looks like an infinite echo 
> >> loop.
> >> 1.cursor update -> 2.xterm's response -> 3.shell emits BEL -> 4.visual 
> >> bell -> 1.cursor update -> ...
> >> 
> >> On 2013/01/16, at 17:31, Nicholas Marriott wrote:
> >> 
> >>> I don't understand what the problem is or how this fixes it. Where is ST
> >>> in your change?
> >>> 
> >>> 
> >>> On Wed, Jan 16, 2013 at 04:54:06PM +0900, Hayaki Saito wrote:
> >>>>> Is the ? in this diff supposed to be \\234?
> >>>> 
> >>>> No, It's just a hot fix, for infinite echo problem.
> >>>> 
> >>>> On 2013/01/15, at 13:26, Nicholas Marriott wrote:
> >>>> 
> >>>>> Hi
> >>>>> 
> >>>>> Why only check the first character of the string?
> >>>>> 
> >>>>> Is the ? in this diff supposed to be \\234?
> >>>>> 
> >>>>> 
> >>>>> 
> >>>>> 
> >>>>> On Tue, Jan 01, 2013 at 11:51:24AM +0900, Hayaki Saito wrote:
> >>>>>> 
> >>>>>> This is a hotfix patch for infinite echo loop issue which occurs with 
> >>>>>> following shell command.
> >>>>>> 
> >>>>>>> $ echo -en '\033]12;?\033\\'
> >>>>>> 
> >>>>>> This problem occurs in some terminals that support OSC 12/get access 
> >>>>>> feature (e.g. xterm).
> >>>>>> 
> >>>>>> I think OSC 12 sequense should be completely parsed and validated.
> >>>>>> Some terminals like PuTTY accept 8bit ST (0x9c) control and treat it 
> >>>>>> as OSC terminate character.
> >>>>>> So if cursor color string sequence includes 9c, it might cause 
> >>>>>> unexpected behavior.
> >>>>>> 
> >>>>>> ---
> >>>>>> input.c | 3 ++-
> >>>>>> 1 file changed, 2 insertions(+), 1 deletion(-)
> >>>>>> 
> >>>>>> diff --git a/input.c b/input.c
> >>>>>> index 23b9574..9855324 100644
> >>>>>> --- a/input.c
> >>>>>> +++ b/input.c
> >>>>>> @@ -1560,7 +1560,8 @@ input_exit_osc(struct input_ctx *ictx)
> >>>>>>                server_status_window(ictx->wp->window);
> >>>>>>                break;
> >>>>>>        case 12:
> >>>>>> -              screen_set_cursor_colour(ictx->ctx.s, p);
> >>>>>> +              if (*p != '?')          
> >>>>>> +                      screen_set_cursor_colour(ictx->ctx.s, p);
> >>>>>>                break;
> >>>>>>        case 112:
> >>>>>>                if (*p == '\0') /* No arguments allowed. */
> >>>>>> -- 
> >>>>>> 1.7.11.5
> >>>>>> 
> >>>>>> 
> >>>>>> 
> >>>>>> ------------------------------------------------------------------------------
> >>>>>> Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
> >>>>>> and more. Get SQL Server skills now (including 2012) with LearnDevNow -
> >>>>>> 200+ hours of step-by-step video tutorials by Microsoft MVPs and 
> >>>>>> experts.
> >>>>>> SALE $99.99 this month only - learn more at:
> >>>>>> http://p.sf.net/sfu/learnmore_122512
> >>>>>> _______________________________________________
> >>>>>> tmux-users mailing list
> >>>>>> tmux-users@lists.sourceforge.net
> >>>>>> https://lists.sourceforge.net/lists/listinfo/tmux-users
> >>>> 
> >> 
> 

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to