| 2 Dec 2025 |
emily | it's linked in the Lix issue I linked :) | 19:30:07 |
niklaskorz | well at least I now know there is a postgres archive search | 19:30:43 |
WeetHet | Is there an alternative to sysv shared memory on macOS? | 19:32:30 |
WeetHet | There's POSIX but it's much more limited | 19:32:47 |
WeetHet | And postgres is using SysV on Linux as well | 19:33:02 |
Randy Eckenrode | The reply in the linked issue suggested Darwin futexes. | 19:33:23 |
Randy Eckenrode | * | 19:33:31 |
Randy Eckenrode |
The next problem will be System V semaphores. I posted a patch[4] that uses macOS futexes to implement semaphores (pretty much the same way libc does on some other systems), which would fix that version of the problem. But you could presumably already use the more wasteful
named POSIX semaphores.
| 19:34:15 |
Randy Eckenrode | https://www.postgresql.org/message-id/flat/CA+hUKGKRQrJhVYBkmLJZsScJ434qiduWzzpB0-0_FW8z1kTjcw@mail.gmail.com#19f7d84d058a908865bafbf82233a07f | 19:34:40 |
WeetHet | For semaphores sure but semaphores aren't the biggest problem here | 19:34:44 |
WeetHet | Shared memory is | 19:34:48 |
Randy Eckenrode | The issue is what they’re using it for, isn’t it? | 19:35:09 |
Randy Eckenrode | Futexes can be shared between processes. The MSYNC patch for Wine did something similar. | 19:35:33 |
WeetHet | https://github.com/postgres/postgres/blob/master/src/backend/port/sysv_shmem.c | 19:35:50 |
Randy Eckenrode | https://github.com/marzent/wine-msync | 19:36:16 |
WeetHet | I'm surprised that only postgres is running into these issues | 19:38:50 |
WeetHet | I would expect most databases to use shared memory in one way or another | 19:39:04 |
Randy Eckenrode | Use one of the other shared memory types for
shared memory and futexes for protecting the data directory? | 19:39:09 |
Randy Eckenrode | * | 19:39:54 |
Randy Eckenrode | Doesn’t Postgres spawn a process per user? | 19:40:30 |
WeetHet | Is there any other shared memory type on macOS though | 19:55:51 |
Randy Eckenrode | POSIX shared memory. It’s what Apple recommends. | 20:02:05 |
Randy Eckenrode | https://developer.apple.com/forums/thread/719897?answerId=736261022#736261022 | 20:02:14 |
niklaskorz | reading the postgres source and the issue emily linked, they alread default to mmap, but still need the sysv shared memory to detect which processes are attached to it (I guess that implies this is not possible in posix?) | 20:12:59 |
antifuchs | so I have an issue with users.users / users.knownUsers on nix-darwin; I'm trying to have nix-darwin create a user, but (after a bunch of swearing & reading the activate script in the built system closure) it seems to expect that the user needs to be deleted? here's what I configure, is there anything wrong with it?
users.knownGroups = [ "ci-worker" ];
users.knownUsers = [ "ci-worker" ];
users.groups.ci-worker = {
gid = 502;
};
users.users.ci-worker = {
createHome = false;
description = "Nix Build support user for remote builds from CI";
home = "/var/empty";
shell = pkgs.bashInteractive;
name = "Nix Build CI Worker";
uid = 502;
gid = 502;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGFg7XQg/ACCFIL0f2OJoU0EIcQFuwa3qz7pQNzmDe2W root@gloria"
];
};
| 20:36:16 |
antifuchs | (creating a home dir or anything else seems to have no effect on the "should be present" calculation) | 20:36:50 |
Randy Eckenrode | Redacted or Malformed Event | 20:37:12 |
Randy Eckenrode | Per the issue emily linked and the part I quoted, named POSIX semaphores are apparently more wasteful. There is a patch to implement the functionality using futexes on Darwin. No idea how well it works. | 20:37:37 |
antifuchs | update: the user is missing a name attribute. without that, the check in https://github.com/nix-darwin/nix-darwin/blob/e95de00a471d07435e0527ff4db092c84998698e/modules/users/default.nix#L20 counts the user as not-intended-to-be-created | 20:45:24 |
antifuchs | * update: the user doesn't have a matching name attribute. without that, the check in https://github.com/nix-darwin/nix-darwin/blob/e95de00a471d07435e0527ff4db092c84998698e/modules/users/default.nix#L20 counts the user as not-intended-to-be-created | 20:45:42 |