Cygwin doesn't handle SIGWINCH properly #12511

Closed
opened 2026-01-31 03:17:33 +00:00 by claunia · 9 comments
Owner

Originally created by @EmilyGraceSeville7cf on GitHub (Feb 11, 2021).

Environment

Windows build number: Win32NT 10.0.19042.0 Microsoft Windows NT 10.0.19042.0
Windows Terminal version (if applicable): 1.5.10271.0

Steps to reproduce

Execute this Bash script and try resize Windows Terminal window:

#!/usr/bin/env bash
function outputText()
{
  local text=$1
  local -i textLength=${#text}

  local -i line="$(tput lines) / 2"
  local -i col="$(tput cols) / 2 - $textLength / 2"

  clear
  echo -en "\e[$line;${col}H$text"
}

trap "outputText 'Hello world!'" SIGWINCH

outputText 'Hello world!'
while true
do
    :
done

As you see Windows Terminal doesn't handles SIGWINCH properly. However everything works fine when I execute my script directly from Cygwin Terminal without Windows Terminal.

Expected behavior

Centered text is drawn on the screen after window resize.

Actual behavior

Text isn't centered after window resize.

Originally created by @EmilyGraceSeville7cf on GitHub (Feb 11, 2021). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> <!-- This bug tracker is monitored by Windows Terminal development team and other technical folks. **Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**. Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue. If this is an application crash, please also provide a Feedback Hub submission link so we can find your diagnostic data on the backend. Use the category "Apps > Windows Terminal (Preview)" and choose "Share My Feedback" after submission to get the link. Please use this form and describe your issue, concisely but precisely, with as much detail as possible. --> # Environment ```none Windows build number: Win32NT 10.0.19042.0 Microsoft Windows NT 10.0.19042.0 Windows Terminal version (if applicable): 1.5.10271.0 ``` # Steps to reproduce Execute this Bash script and try resize Windows Terminal window: ```bash #!/usr/bin/env bash function outputText() { local text=$1 local -i textLength=${#text} local -i line="$(tput lines) / 2" local -i col="$(tput cols) / 2 - $textLength / 2" clear echo -en "\e[$line;${col}H$text" } trap "outputText 'Hello world!'" SIGWINCH outputText 'Hello world!' while true do : done ``` As you see Windows Terminal doesn't handles [SIGWINCH](https://man7.org/linux/man-pages/man7/signal.7.html) properly. However everything works fine when I execute my script directly from Cygwin Terminal without Windows Terminal. # Expected behavior Centered text is drawn on the screen after window resize. # Actual behavior Text isn't centered after window resize.
claunia added the Needs-TriageResolution-ExternalNeeds-Tag-FixNeeds-Attention labels 2026-01-31 03:17:34 +00:00
Author
Owner

@zadjii-msft commented on GitHub (Feb 11, 2021):

You know, I coulda swore we were tracking this somewhere. #4062, #1461, #7581 are related, but those are all crashes from resizing the underlying buffer, not "resizing the underlying buffer doesn't resize the Terminal".

Just a question - are you doing this in WSL or git bash? I'm trying this script out with gnome-terminal on my Ubuntu 18.04 distro, and the script doesn't seem to resize that terminal either.

@zadjii-msft commented on GitHub (Feb 11, 2021): You know, I coulda swore we were tracking this somewhere. #4062, #1461, #7581 are related, but those are all crashes from resizing the underlying buffer, not "resizing the underlying buffer doesn't resize the Terminal". Just a question - are you doing this in WSL or git bash? I'm trying this script out with `gnome-terminal` on my Ubuntu 18.04 distro, and the script doesn't seem to resize that terminal either.
Author
Owner

@EmilyGraceSeville7cf commented on GitHub (Feb 11, 2021):

Just a question - are you doing this in WSL or git bash?

I'm doing it via Cygwin (please consider my settings.json for clarity):
image

I don't use WSL and Git Bash now.

@EmilyGraceSeville7cf commented on GitHub (Feb 11, 2021): > Just a question - are you doing this in WSL or git bash? I'm doing it via Cygwin (please consider my settings.json for clarity): ![image](https://user-images.githubusercontent.com/42812113/107640772-7c4ded80-6cbe-11eb-92e7-e9d456e734cd.png) I don't use WSL and Git Bash now.
Author
Owner

@j4james commented on GitHub (Feb 11, 2021):

You know, I coulda swore we were tracking this somewhere.

In issue #305 you decided that issue #281 would be the master thread for all window WINDOW_BUFFER_SIZE_EVENT / SIGWINCH discussion, so I suspect that's the one you're thinking of.

@j4james commented on GitHub (Feb 11, 2021): > You know, I coulda swore we were tracking this somewhere. In issue #305 you decided that issue #281 would be the master thread for all window WINDOW_BUFFER_SIZE_EVENT / SIGWINCH discussion, so I suspect that's the one you're thinking of.
Author
Owner

@zadjii-msft commented on GitHub (Feb 11, 2021):

You know, I might have actually been thinking of #5094

@zadjii-msft commented on GitHub (Feb 11, 2021): You know, I might have actually been thinking of #5094
Author
Owner

@j4james commented on GitHub (Feb 11, 2021):

I wouldn't have thought #5094 had anything to do with it. Unless I've misunderstood what is going on here, the script isn't resizing the window, it's just redrawing the text after it detects a resize. It works for me in both conhost and Windows Terminal when run from a WSL bash shell. I assumed the issue was something specific to Cygwin.

@j4james commented on GitHub (Feb 11, 2021): I wouldn't have thought #5094 had anything to do with it. Unless I've misunderstood what is going on here, the script isn't resizing the window, it's just redrawing the text after it detects a resize. It works for me in both conhost and Windows Terminal when run from a WSL bash shell. I assumed the issue was something specific to Cygwin.
Author
Owner

@zadjii-msft commented on GitHub (Feb 11, 2021):

Oh, maybe I'm misunderstanding what the sample was supposed to be doing. I thought it was trying to resize the terminal to some size, not listen for buffer size events.

This is working perfectly fine in WSL, so I'd agree that this is probably a cygwin-specific issue and should be filed on their issue tracker.

@zadjii-msft commented on GitHub (Feb 11, 2021): Oh, maybe I'm misunderstanding what the sample was supposed to be doing. I thought it was trying to resize the terminal to some size, not listen for buffer size events. This is working perfectly fine in WSL, so I'd agree that this is probably a cygwin-specific issue and should be filed on their issue tracker.
Author
Owner

@DHowett commented on GitHub (Feb 12, 2021):

Marking this one external. Thanks all!

@DHowett commented on GitHub (Feb 12, 2021): Marking this one external. Thanks all!
Author
Owner

@EmilyGraceSeville7cf commented on GitHub (Feb 13, 2021):

This is working perfectly fine in WSL, so I'd agree that this is probably a cygwin-specific issue and should be filed on their issue tracker.

I issued this problem to Cygwin developers and waiting for a feedback now. ;)

@EmilyGraceSeville7cf commented on GitHub (Feb 13, 2021): > This is working perfectly fine in WSL, so I'd agree that this is probably a cygwin-specific issue and should be filed on their issue tracker. I issued this problem to Cygwin developers and waiting for a feedback now. ;)
Author
Owner

@determin1st commented on GitHub (May 4, 2024):

SIGWINCH is unreliable, ive tested it doesnt work on fresh Debian install with gnome desktop. it should be abolished in preference to polling

@determin1st commented on GitHub (May 4, 2024): SIGWINCH is unreliable, ive tested it doesnt work on fresh Debian install with gnome desktop. it should be abolished in preference to polling
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#12511