help needed to fix contrib/ee crash/exit when receiving SIGWINCH

Alexander Best alexbestms at math.uni-muenster.de
Fri Oct 23 12:08:53 UTC 2009


Gary Jennejohn schrieb am 2009-10-23:
> On Fri, 23 Oct 2009 12:58:43 +0400
> pluknet <pluknet at gmail.com> wrote:

> > 2009/10/23 Antony Mawer <lists at mawer.org>:
> > > On Fri, Oct 23, 2009 at 1:35 PM, Alexander Best
> > > <alexbestms at math.uni-muenster.de> wrote:
> > >> hi everyone,

> > >> together with hugh mahon (the author of ee) i've been trying to
> > >> fix a nasty
> > >> bug in ee. for some reason ee exits (not crashes) and leaves the
> > >> console
> > >> corrupted when receiving SIGWINCH (`killall -SIGWINCH ee` should
> > >> exit all
> > >> running ee instances).

> > > I noticed this the other day when working on a new 8.0-RC1
> > > system...
> > > in my case I was using putty (Windows ssh client) to access the
> > > system
> > > and maximised the window I had ee running in, and noticed ee just
> > > dumped me straight to the prompt.

> > > I am wondering if this has anything to do with the new tty
> > > subsystem
> > > in 8.0, as this wasn't a problem I've experienced before under
> > > 7.x...


> > No, that's a regression appeared in (FreeBSD'ish? version of) ee
> > 1.5.0.


> SIGWINCH is handled in new_curse.c, but it's not being
> compiled/linked.

> ---
> Gary Jennejohn

i think that file is only used on systems which have termio.h/sgtty.h and ee
doesn't get linked against ncurses. on those systems (linux e.g.) new_curse.c
is used to handle certain things which ncurses takes care under freebsd.

this is under freebsd:

`make`:
Neither termio.h or sgtty.h are on this system!
Relying on local curses implementation.
Generating make.local
make -f make.local
cc ee.c -o ee -ggdb -DDIAG -DHAS_UNISTD -DHAS_STDARG -DHAS_STDLIB -DHAS_CTYPE
-DHAS_SYS_IOCTL -DHAS_SYS_WAIT   -DSLCT_HDR
-DTERMCAP="\"/usr/share/misc/termcap\"" -lcursesw

`ldd ee`:
libncursesw.so.8 => /lib/libncursesw.so.8 (0x2809b000)
libc.so.7 => /lib/libc.so.7 (0x280e9000)

and under linux:

`make`:
Generating make.local
make -f make.local
make[1]: Entering directory `/easyedit-test'
cc -c ee.c -DSYS5  -DBSD_SELECT   -DNCURSE  -DHAS_UNISTD  -DHAS_STDLIB
-DHAS_CTYPE -DHAS_SYS_IOCTL -DHAS_SYS_WAIT   -DSLCT_HDR -s
cc new_curse.c -c -DSYS5  -DBSD_SELECT   -DNCURSE  -DHAS_UNISTD  -DHAS_STDLIB
-DHAS_CTYPE -DHAS_SYS_IOCTL -DHAS_SYS_WAIT   -DSLCT_HDR -s
cc -o ee ee.o new_curse.o -DHAS_UNISTD  -DHAS_STDLIB -DHAS_CTYPE
-DHAS_SYS_IOCTL -DHAS_SYS_WAIT   -DSLCT_HDR -s
make[1]: Leaving directory `/easyedit-test'

`ldd ee`:
libc.so.6 => /lib/libc.so.6 (0x2807a000)
/lib/ld-linux.so.2 (0x2805b000)

alex


More information about the freebsd-hackers mailing list