!lheuhImcToQZYTQTuI:nixos.org

Nix on macOS

1171 Members
“There are still many issues with the Darwin platform but most of it is quite usable.” — http://yves.gnu-darwin.org190 Servers

Load older messages


SenderMessageTime
22 Dec 2025
@ihar.hrachyshka:matrix.orgIhar Hrachyshka *

Does it work if you change select to pselect?
recompiling glib with select -> pselect in g_poll?

16:32:59
@ihar.hrachyshka:matrix.orgIhar Hrachyshka *

Does it work if you change select to pselect?

recompiling glib with select -> pselect in g_poll?

16:33:04
@reckenrode:matrix.orgRandy EckenrodeYeah.16:33:38
@ihar.hrachyshka:matrix.orgIhar HrachyshkaI'll try later today, it's a good lead. (have to step off this for the next few). thanks a lot for engaging. :)16:35:11
@ihar.hrachyshka:matrix.orgIhar Hrachyshka

meh. a vibe coded test is not very promising

=== Test 1: pselect() with FDs < FD_SETSIZE ===
pselect() succeeded with 1021 ready FDs

=== Test 2: pselect() with FD >= FD_SETSIZE (DANGEROUS!) ===
This test intentionally demonstrates undefined behavior
Attempting to add FD 1024 to fd_set (FD_SETSIZE=1024)...
WARNING: This will cause undefined behavior!
Before FD_SET: fd_set memory looks normal
fd_set bytes before: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Calling FD_SET(1024, &dangerous_set)...
fd_set bytes after:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Memory corruption may have occurred!
Attempting pselect() with corrupted fd_set...
pselect: Invalid argument
pselect() failed as expected
16:45:46
@ihar.hrachyshka:matrix.orgIhar Hrachyshka
Thread 0 Crashed:
0   libsystem_kernel.dylib        	       0x1956749f4 os_fault_with_payload + 8
1   libsystem_kernel.dylib        	       0x19567c964 __darwin_check_fd_set_overflow + 212
2   a.out                         	       0x104adcc94 main + 2100
3   dyld                          	       0x1952e9d54 start + 7184

same cause

16:48:37
@reckenrode:matrix.orgRandy EckenrodeHow do we enable these extensions? 🤔16:57:38
@ihar.hrachyshka:matrix.orgIhar Hrachyshkawhich extensions? link?16:57:48
@reckenrode:matrix.orgRandy Eckenrodehttps://github.com/apple-oss-distributions/xnu/blob/f6217f891ac0bb64f3d375211650a4c1ff8ca1ea/libsyscall/wrappers/select-base.c#L16916:58:24
@reckenrode:matrix.orgRandy EckenrodeIt appears the check may be happening prior to the syscall?17:00:49
@ihar.hrachyshka:matrix.orgIhar Hrachyshkaimplies we would need our own libSystem or smth? :D17:01:09
@reckenrode:matrix.orgRandy EckenrodeDarwin doesn’t support alternate libcs. There is no guarantee of syscall compatibility between kernel versions.17:01:45
@reckenrode:matrix.orgRandy Eckenrode(You can try to do it. Go did. Someone got Musl working. If you encounter problems, you’ll be informed that you shouldn’t be doing that.)17:02:35
@ihar.hrachyshka:matrix.orgIhar Hrachyshkaguess we could ship a custom select in glib... with some kind of runtime check during build to avoid broken glib if they ever change the behavior...17:04:34
@reckenrode:matrix.orgRandy Eckenrodehttps://github.com/apple-oss-distributions/xnu/blob/f6217f891ac0bb64f3d375211650a4c1ff8ca1ea/bsd/sys/_types/_fd_def.h#L37_L4017:04:36
@reckenrode:matrix.orgRandy Eckenrode What happens if you define your own FD_SETSIZE? 17:04:52
@ihar.hrachyshka:matrix.orgIhar HrachyshkaI assume that since libSystem is as it was compiled with the 1024 limit, it won't do much. but let me check.17:05:51
@reckenrode:matrix.orgRandy EckenrodeThe checks are inline functions in the header.17:06:44
@reckenrode:matrix.orgRandy Eckenrode Or setting _DARWIN_UNLIMITED_SELECT with select? 17:07:08
@reckenrode:matrix.orgRandy Eckenrode * Or defining _DARWIN_UNLIMITED_SELECT when using select? 17:07:19
@reckenrode:matrix.orgRandy Eckenrode * Or defining _DARWIN_UNLIMITED_SELECT when using select or pselect? 17:07:42
@ihar.hrachyshka:matrix.orgIhar Hrachyshka

I copied half of that file, commented out include for select.h, removed the check and now it works

=== Test 2: pselect() with FD >= FD_SETSIZE (DANGEROUS!) ===
This test intentionally demonstrates undefined behavior
Attempting to add FD 1024 to fd_set (FD_SETSIZE=1024)...
WARNING: This will cause undefined behavior!
Before FD_SET: fd_set memory looks normal
fd_set bytes before: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Calling FD_SET(1024, &dangerous_set)...
fd_set bytes after:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Memory corruption may have occurred!
Attempting pselect() with corrupted fd_set...
pselect() unexpectedly succeeded with 0 ready FDs

I don't know if "works" means more than "it returned 0" but...

17:11:29
@reckenrode:matrix.orgRandy EckenrodeWhat if you just set that define before including any headers?17:13:44
@reckenrode:matrix.orgRandy Eckenrode With both select and pselect? 17:14:00
@reckenrode:matrix.orgRandy Eckenrodehttps://developer.apple.com/library/archive/releasenotes/Darwin/SymbolVariantsRelNotes/index.html17:16:13
@reckenrode:matrix.orgRandy Eckenrode

Setting the _DARWIN_UNLIMITED_SELECT macro will select the extension variants of select() and pselect(), which uses the $DARWIN_EXTSN suffix. The extended versions do not fail if the first argument is greater than FD_SETSIZE. This was the original BSD behavior.

17:17:01
@ihar.hrachyshka:matrix.orgIhar Hrachyshkayes defining just _DARWIN_UNLIMITED_SELECT works too.17:21:01
@ihar.hrachyshka:matrix.orgIhar HrachyshkaI will try to enable it for glib and see if it fixes qemu. that said... any reason to ever not have it set when running on darwin?17:29:02
@reckenrode:matrix.orgRandy EckenrodeNot sure. Probably not. The check is for POSIX compliance.17:31:49
@reckenrode:matrix.orgRandy Eckenrodehttps://devblogs.microsoft.com/oldnewthing/20221102-00/?p=10734317:34:21

Show newer messages


Back to Room ListRoom Version: 6