Followup-For: Bug #1030284
X-Debbugs-Cc: [email protected]
Thanks, Thorsten. I'm currently rebuilding (on x86) from the attached patch,
adapted from yours.
* prefers a one-time repeat division over the clever-but-fragile div-assign
* removes the upperbound check because integer greater-than checks can be
problematic
* places comparison constants on the lhs for safety
I'll post test results when they are available.
Cheers,
James
Description: Request an rlimit-determined stack size from V8
Author: James Addison <[email protected]>
Bug-Debian: https://bugs.debian.org/1030284
--- /dev/null
+++ nodejs-18.13.0+dfsg1/foo.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main() {
+ if (4 > (int)(8 / 3)) {
+ printf("Hello world!");
+ }
+}
--- nodejs-18.13.0+dfsg1.orig/src/node.cc
+++ nodejs-18.13.0+dfsg1/src/node.cc
@@ -785,6 +785,22 @@ int InitializeNodeWithArgs(std::vector<s
V8::SetFlagsFromString(NODE_V8_OPTIONS, sizeof(NODE_V8_OPTIONS) - 1);
#endif
+#define V8_STACK_RESERVE 128
+if (!(flags & ProcessInitializationFlags::kNoAdjustResourceLimits)) {
+ struct rlimit lim;
+ char stackSize[sizeof("--stack-size=") + /* 2³¹ */ 10];
+
+ if (getrlimit(RLIMIT_STACK, &lim))
+ fprintf(stderr, "W: stack size adjustment: cannot get
RLIMIT_STACK\n");
+ else if (RLIM_INFINITY == lim.rlim_cur)
+ fprintf(stderr, "W: stack size adjustment: RLIMIT_STACK is
unlimited\n");
+ else if (V8_STACK_RESERVE > (int)(lim.rlim_cur / 1024))
+ fprintf(stderr, "W: stack size adjustment: RLIMIT_STACK is too
small\n");
+ else
+ V8::SetFlagsFromString(stackSize, snprintf(stackSize,
sizeof(stackSize),
+ "--stack-size=%d", (int)(lim.rlim_cur / 1024)));
+}
+
HandleEnvOptions(per_process::cli_options->per_isolate->per_env);
#if !defined(NODE_WITHOUT_NODE_OPTIONS)
--
Pkg-javascript-devel mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-javascript-devel