From 0e7138417c860f4bd6ff668f3359c95f78a9ac0a Mon Sep 17 00:00:00 2001 From: Mildred Ki'Lya Date: Sat, 16 Jul 2022 23:35:02 +0200 Subject: [PATCH] Correct emscripten shortcoming (#19987) emscripten reports infinity for every getrlimit() requests, which does not work when requesting the max number of file descriptors (prlimit64 syscall). This patch provides a default of 1024 which is common on Linux. This is used in particular in ioselectors_poll.nim and te invalid value makes it crash. --- lib/pure/asyncdispatch.nim | 2 ++ lib/pure/selectors.nim | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index 04dbf4e4ab..b61ad7ad48 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -1983,6 +1983,8 @@ when defined(linux) or defined(windows) or defined(macosx) or defined(bsd) or result = 16_700_000 elif defined(zephyr) or defined(freertos): result = FD_MAX + elif defined(emscripten): + result = 1024 else: var fdLim: RLimit if getrlimit(RLIMIT_NOFILE, fdLim) < 0: diff --git a/lib/pure/selectors.nim b/lib/pure/selectors.nim index ec441f6dab..67d035aa7a 100644 --- a/lib/pure/selectors.nim +++ b/lib/pure/selectors.nim @@ -333,6 +333,8 @@ else: 16_700_000 elif defined(zephyr) or defined(freertos): FD_MAX + elif defined(emscripten): + 1024 else: var fdLim: RLimit var res = int(getrlimit(RLIMIT_NOFILE, fdLim))