mirror of
https://github.com/lucannez64/darling-lol.git
synced 2026-10-26 19:47:42 +00:00
Raise darlingserver's soft fd limit when the hard limit is fixed
Under the rootless NixOS launcher darlingserver cannot raise its hard RLIMIT_NOFILE to nr_open, so it kept the soft limit it inherited. Every named memory entry holds a memfd in darlingserver, and its descriptors peak at about 1100 when the League lobby opens. With an inherited soft limit of 1024, memfd_create failed with EMFILE, mach_make_memory_entry_64 returned KERN_RESOURCE_SHORTAGE, and Chromium's CHECK in PlatformSharedMemoryRegion::Create killed the League UX and the Riot Client renderer after clicking Play. When raising the hard limit fails, raise the soft limit to the inherited hard limit instead. Log errno, size and fd limits when named-entry creation fails, and log the live memfd count every 1024 creations so a leak shows up in dserver.log. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
6505ecffba
commit
cb1c9c2354
2 files changed
+106
-13
No files matched your search
@@ -251,6 +251,27 @@ reference before callback delivery. This establishes the cancellation fix; a lon
|
||||
Riot session still needs confirmation. With both clients and the game closed,
|
||||
run `./scripts/update.sh` to install it, then `sh scripts/run.sh`.
|
||||
|
||||
## League and Riot UIs crash after clicking Play
|
||||
|
||||
The League UX processes and then the Riot Client renderer stop with `SIGTRAP`
|
||||
a few seconds after the lobby opens. The renderer prints
|
||||
`Check failed: kr == KERN_SUCCESS. mach_make_memory_entry_64: (os/kern) resource shortage (6)`
|
||||
from `platform_shared_memory_region_mac.cc`. darlingserver backs every named
|
||||
memory entry with a memfd, and its open descriptors peak at about 1100 when the
|
||||
lobby opens. Under the rootless NixOS launcher darlingserver cannot raise its
|
||||
hard `RLIMIT_NOFILE` to `nr_open`, so it used to keep the soft limit it
|
||||
inherited. When that limit was 1024 (several Electron apps and desktop launchers
|
||||
pass it on), `memfd_create` failed with `EMFILE`.
|
||||
|
||||
darlingserver now raises its soft limit to the inherited hard limit when it
|
||||
cannot raise the hard one. A failed named-entry creation also logs
|
||||
`MEMDIAG … failed errno=… nofile=soft/hard` to `dserver.log`, and every 1024th
|
||||
memfd logs `MEMDIAG descriptors live=…` so a leak would show as a growing `live`
|
||||
count. With a 1024 soft limit the old server reproduced the crash and logged
|
||||
`errno=24 nofile=1024/524288`. With the fix, the server reports a 524288 soft
|
||||
limit under the same launch. To check a running server, read the `Max open files`
|
||||
line of `/proc/$(pgrep -x darlingserver)/limits`.
|
||||
|
||||
## UI crashes after a button opens an external link
|
||||
|
||||
LaunchServices dereferenced a nullable error-output pointer in six paths. The patch checks the pointer itself and populates supplied outputs; the standalone regression covers missing handlers and null outputs. Electron opens LaunchServices through an absolute CoreServices subframework path, so the paired installer also replaces that binary in the stopped guest prefix. Updating only `RuntimeFrameworks/LaunchServices.framework` can leave the crash unfixed.
|
||||
|
||||
Reference in new issue
Block a user