Skip to content

Fix WIFSTOPPED on NetBSD - #5458

Open
krobelus wants to merge 1 commit into
rust-lang:mainfrom
krobelus:netbsd-wifstopped
Open

Fix WIFSTOPPED on NetBSD#5458
krobelus wants to merge 1 commit into
rust-lang:mainfrom
krobelus:netbsd-wifstopped

Conversation

@krobelus

@krobelus krobelus commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

If we expand the definitions from
https://github.com/NetBSD/src/blob/d04b0c735abc997743bb3faa74464524cbe7becd/sys/sys/wait.h#L61
we get

#define WIFCONTINUED(x)	(x == 0xffff)
#define WIFSTOPPED(x)	((x & 0177) == 0177 && !WIFCONTINUED(x))

Our definition of WIFSTOPPED forgot the !WIFCONTINUED(x) condition.
Siince the wait(3p) status for "continued" is 0xffff, this causes
WIFSTOPPED to return true for continued child processes.

Fix this.

Originally reported at fish-shell/fish-shell#12929

If we expand the definitions from
https://github.com/NetBSD/src/blob/d04b0c735abc997743bb3faa74464524cbe7becd/sys/sys/wait.h#L61
we get

	#define WIFCONTINUED(x)	(x == 0xffff)
	#define WIFSTOPPED(x)	((x & 0177) == 0177 && !WIFCONTINUED(x))

Our definition of WIFSTOPPED forgot the !WIFCONTINUED(x) condition.
Siince the wait(3p) status for "continued" is 0xffff, this causes
WIFSTOPPED to return true for continued child processes.

Fix this.

Originally reported at fish-shell/fish-shell#12929
@rustbot

rustbot commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Some changes occurred in a NetBSD-like module

cc @semarie

krobelus added a commit to fish-shell/fish-shell that referenced this pull request Sep 1, 2026
Due to a NetBSD-specific bug in rust-lang/libc, WIFSTOPPED and
WIFCONTINUED both return true for continued jobs.  Since we check
stopped first, whenever "fg" SIGCONTs a job, the "continued" waitstatus
is interpreted as another stop, confusing fish.

Can be removed once we have rust-lang/libc#5458

Closes #12929
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants