-
-
Notifications
You must be signed in to change notification settings - Fork 71
Broken message test #5
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
This is still happening and I don't know if we have to change this test or if it's a V8 issue. Repro: function a(n) {
try {
a(n + 1);
} catch (e) {
console.log('overflow ' + n);
}
}
a(0); With Node 7, it prints "overflow 15288". I put some /cc @nodejs/v8 @addaleax |
Reverting v8/v8@69aa868 fixes this issue. |
Ugh … this is tricky. I think the most semantically correct way to fix that would be to re-throw certain errors like a stack overflow in the |
cc @isheludko |
I wouldn't expect |
@bnoordhuis I probably should have commented that in the test, but the test isn’t checking that |
I was going by @targos's test case, I see that the message test does something slightly different. I don't know if exception landing pads are expected to work like that when the stack is full. |
@addaleax do you have an idea on how to fix this without removing the test? |
@targos can you try something like diff --git a/lib/console.js b/lib/console.js
index 7ec9c846329c..49e6633902b0 100644
--- a/lib/console.js
+++ b/lib/console.js
@@ -90,6 +90,9 @@ function write(ignoreErrors, stream, string, errorhandler) {
stream.write(string, errorhandler);
} catch (e) {
+ if (String(e) === 'RangeError: Maximum call stack size exceeded') {
+ throw e;
+ }
// Sorry, there’s no proper way to pass along the error here.
} finally {
stream.removeListener('error', noop); I didn’t check myself that this works together with (I know this seems odd – maybe f18e08d should have been a bit less strict about catching all errors…) |
@addaleax I tried that and it doesn't work with |
Ugh, okay. I’ll take a look as soon as I get the chance (which is likely not before Friday, sorry). |
No problem. We have plenty of time before V8 6.1 goes stable. |
Ping @addaleax. Would you still like to find something better than removing the test? |
Make a message test more accurate in what it’s testing for. This requires not swallowing stack overflow RangeErrors in `console.log` and similar methods, which I would consider a bugfix in itself. Fixes: nodejs/node-v8#5
This is going to be fixed in nodejs/node#14580. Closing. |
Make a message test more accurate in what it’s testing for. This requires not swallowing stack overflow RangeErrors in `console.log` and similar methods, which I would consider a bugfix in itself. PR-URL: nodejs#14580 Fixes: nodejs/node-v8#5 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Make a message test more accurate in what it’s testing for. This requires not swallowing stack overflow RangeErrors in `console.log` and similar methods, which I would consider a bugfix in itself. PR-URL: #14580 Fixes: nodejs/node-v8#5 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Currently when running the test without an internet connection there are two JavaScript test failures and one cctest. The cctest only fails on Mac as far as I know. (I've only tested using Mac and Linux thus far). This commit moves the two JavaScript tests to test/internet. The details for test_inspector_socket_server.cc: [ RUN ] InspectorSocketServerTest.FailsToBindToNodejsHost make[1]: *** [cctest] Segmentation fault: 11 make: *** [test] Error 2 lldb output: [ RUN ] InspectorSocketServerTest.FailsToBindToNodejsHost Process 63058 stopped * thread #1: tid = 0x7b175, 0x00007fff96d04384 * libsystem_info.dylib`_gai_simple + 87, queue = * 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, * address=0x0) frame #0: 0x00007fff96d04384 libsystem_info.dylib`_gai_simple + 87 libsystem_info.dylib`_gai_simple: -> 0x7fff96d04384 <+87>: movw (%rdx), %ax 0x7fff96d04387 <+90>: movw %ax, -0x2a(%rbp) 0x7fff96d0438b <+94>: movq %r13, -0x38(%rbp) 0x7fff96d0438f <+98>: movq 0x18(%rbp), %rcx (lldb) bt * thread #1: tid = 0x7b175, 0x00007fff96d04384 * libsystem_info.dylib`_gai_simple + 87, queue = * 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, * address=0x0) * frame #0: 0x00007fff96d04384 libsystem_info.dylib`_gai_simple + 87 frame #1: 0x00007fff96cfe98b libsystem_info.dylib`search_addrinfo + 179 frame #2: 0x00007fff96cfafef libsystem_info.dylib`si_addrinfo + 2255 frame #3: 0x00007fff96cfa67b libsystem_info.dylib`getaddrinfo + 179 frame #4: 0x00000001017d8888 cctest`uv__getaddrinfo_work(w=0x00007fff5fbfe210) + 72 at getaddrinfo.c:102 frame #5: 0x00000001017d880e cctest`uv_getaddrinfo(loop=0x000000010287cb80, req=0x00007fff5fbfe1c8, cb=0x0000000000000000, hostname="nodejs.org", service="0", hints=0x00007fff5fbfe268) + 734 at getaddrinfo.c:192 frame #6: 0x000000010171f781 cctest`node::inspector::InspectorSocketServer::Start(this=0x00007fff5fbfe658) + 801 at inspector_socket_server.cc:398 frame #7: 0x00000001016ed590 cctest`InspectorSocketServerTest_FailsToBindToNodejsHost_Test::TestBody(this=0x0000000105001fd0) + 288 at test_inspector_socket_server.cc:593 I'm not sure about the exact cause for this but when using a standalone c program to simulate this it seems like when the ai_flags `AI_NUMERICSERV` is set, which is done in inspector_socket_server.cc line 394, the servname (the port in the FailsToBindToNodejsHost test) is expected to be a numeric port string to avoid looking it up in /etc/services. When the port is 0 as is it was before this commit the segment fault occurs but not if it is non-zero. PR-URL: nodejs/node#16255 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
CI run: https://ci.nodejs.org/job/node-test-commit-node-v8/32/
Error:
Commit: v8/v8@69aa868
The text was updated successfully, but these errors were encountered: