[resubmitting, this doesn't seem to have gotten to bug-bash on my first try a few weeks ago]
Configuration Information [Automatically generated, do not change]: Machine: i386 OS: solaris2.11 Compiler: gcc Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='i386' +-DCONF_OSTYPE='solaris2.11' -DCONF_MACHTYPE='i386-pc-solaris2.11' +-DCONF_VENDOR='pc' -DLOCALEDIR='/tmp/share/locale' -DPACKAGE='bash' -DSHELL +-DHAVE_CONFIG_H -DSOLARIS -I. -I. -I./include -I./lib -g -O2 uname output: SunOS xanadu 5.11 snv_108 i86pc i386 i86pc Machine Type: i386-pc-solaris2.11 Bash Version: 3.2 Patch Level: 48 Release Status: release Description: On Solaris/OpenSolaris platforms, I have discovered what I believe is a bug in lib/sh/winsize.c. I discovered with a debugger that the get_new_window_size() function has no effect on Solaris. In fact, here is what this file looks like if you compile it: $ dis winsize.o disassembly for winsize.o section .text get_new_window_size() get_new_window_size: c3 ret That's it-- an empty function. The problem is that the appropriate header file is not getting pulled in, in order to #define TIOCGWINSZ. As a result, even with 'shopt -s checkwinsize' set on Solaris, bash does not check the win size on suspend of a program, or on program exit. This is massively frustrating, and I know of several Solaris users who have switched to zsh as a result of this bug. I have not tried bash 4.0, but looking at the source code, it appears that the bug is present there as well. Repeat-By: Fix: I added an ifdef clause which looks to see if the HAVE_TERMIOS_H define is set, after the #include of config.h. If it is, then I #include the termios.h header file. This solves the problem, which I confirmed by rebuilding and dis'ing the function. I also ran my recompiled bash and confirmed that it now worked correctly. Thanks, I appreciate your time. I hope that I have adequately described the problem; feel free to mail me if not. Thanks -dp -- Daniel Price, Solaris Kernel Engineering http://blogs.sun.com/dp