lkml.org 
[lkml]   [2008]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 0/5] SIGWINCH problem with terminal apps still alive
    Welcome,
    Thu, 16 Oct 2008 11:52:02 +0100 - Alan Cox <alan@lxorguk.ukuu.org.uk>:

    > > Now if xterm resizes itself then a program on slave gets its signal
    > > but if this program sets terminal sizes by ioctl then only xterm
    > > gets the SIGWINCH signal and could read desired sizes by ioctl and
    > > then resize itself and set valid sizes on slave side by another
    > > ioctl() call. If it not supports this method then there will be no
    > > changes on slave side. I think that it is more proper so on the
    > > slave side we will see always actual values and if terminal resizes
    > > we will get SIGWINCH.
    >
    > The current and historic behaviour is I believe correct and matches
    > other Unixes.

    I don't know what it means ,,correct'' here. stty(,TIOCSWINSZ,) on pty
    slave in its correct behaviour is unusable and leads to application
    confuse and sometimes crash.

    > Your patch doesn't really seem to make a lot of sense either. You add
    > pty special cases in places they are not needed and you pass various
    > extra arguments to functions that don't need them.

    I do not agree. Adding real_tty arg to tiocgwinsz() is for purpose
    of using always the same mutex but read winsize depending on call
    side (master or slave). So master could get what it should set and
    slave reads always actual terminal values corresponding to real
    terminal sizes.

    > I did actually have a glance at the pty signalling question a couple
    > of days ago while further tidying up the default resize logic - see
    > the ttydev tree. I'm cautious about changing the signal behaviour
    > however without having a hard look to see whether any other Unixen
    > has that behaviour currently as we may risk breaking stuff.

    Other Unixes seem to have the ,,correct'' not quite usable behaviour ;).
    If we want to stick to this my previous patch - [PATCH 0/4] seems to be
    suitable.
    It only corrects situaction with mutex usage and sending signal to the
    master side in case of ioctl(,TIOCSWINS,) done on the slave side.
    So a teminal emulator can get signal too and react. But 1. an app can
    get its signal before terminal emulator while it is not really resized
    yet; 2. a terminal emulator does not support SIGWINCH so we have no
    resize but variable is updated and signal generated. So it is not usable
    anymore till terminal emulator resizes by itself - but if it changes
    sizes to values retuned by ioctl(,TIOCGWINSZ,) there will be no
    SIGWINCH send to the app. So you have to manually force it to repaint
    its screen so it looks correctly.

    Regards

    --
    Adam Tlałka mailto:atlka@pg.gda.pl ^v^ ^v^ ^v^
    System & Network Administration Group - - - ~~~~~~
    Computer Center, Gdańsk University of Technology, Poland
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2008-10-16 13:45    [W:0.025 / U:120.596 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site