-
Notifications
You must be signed in to change notification settings - Fork 29.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
investigate flaky buffer-free-callback addon test on AIX in CI #31061
Comments
this is weird, even the C++ debug variables (filename and line number) seem to have been corrupted! |
Is the |
@gireeshpunathil Strange the find/grep didn’t find node/deps/v8/src/objects/backing-store.cc Line 581 in 5707ed2
|
Ah looking again you ran |
Also seen on a test build for the new AIX machines in the CI (nodejs/build#2110 (comment)): https://ci.nodejs.org/job/node-test-commit-aix/27426/nodes=aix71-ppc64/testReport/junit/(root)/test/addons_buffer_free_callback_test/ |
thanks @richardlau ! so this would mean that we try to insert duplicate entries (of backing_stores) into the map. Don't know what that means. There is a trace point in the neighborhood that might give more clues and that gets enabled with cc @nodejs/v8 |
Cc @addaleax and @thangktran as they’ve been doing some work recently to adapt Node.js to the changes V8 have made to backing store management. |
@richardlau i submitted #31053 recently that might fix this problem. |
@gireeshpunathil it's due to a behaviour change in V8 |
Stress test on |
85 failures in 1000 runs so it doesn’t look like #31053 fixes this 😞. |
Attempting to bisect. 1000 runs against 2dff8dd (commit before 4f523c2) had no failures: https://ci.nodejs.org/job/node-stress-single-test/32/nodes=aix61-ppc64/ Started 1000 runs against 4f523c2: https://ci.nodejs.org/job/node-stress-single-test/33/nodes=aix61-ppc64/ |
Still running but 15 failures out of 100 runs so it looks like 4f523c2 is the cause and is not fixed by any of the follow up fixes (#30946, #31053). |
I think the flag is only available in debug builds: node/deps/v8/src/flags/flag-definitions.h Line 893 in 2bdeb88
|
This can easily be made reproducible by removing the The reason that this fails is that the test allocates multiple For fixing this, it should be enough to either move away from a static buffer for the underlying memory, or to modify the @thangktran Are you interested in opening a PR for this? |
@addaleax sure i'd love to. I'm on it. |
fwiw, consistent reproduce - on any platform: $ cat test/addons/buffer-free-callback/foo.js const common = require('../../common')
const binding = require(`./build/${common.buildType}/binding`)
let buf1 = binding.alloc(64, 1, 0)
let buf2 = binding.alloc(64, 1, 0)
the only missing puzzle now is, why the C++ assertion check is failing to get the file name and line number. @addaleax - do you know? |
V8 is intentionally omitting these from non-debug builds, see node/deps/v8/src/base/logging.cc Lines 152 to 158 in db109e8
That being said, here’s a PR that would enable stack trace printing for V8 check failures, which should already help a ton: #31079 |
Are we calling this out anywhere as a notable change? If the behaviour change is breaking for one of our addon tests it’s potentially breaking for addons out in the wild. |
@richardlau It’s definitely breaking addons in the wild, not just potentially. 😕 I can try to make sure we include it in the 14.0.0 changelog. |
to avoid problem with the new behaviour of new V8 BackingStore API. By changing the offset, the base address of each test case will be different. Fixes: nodejs#31061
To avoid problem with the behavior of new V8 BackingStore API, change the offset. The base address of each test case will be different. Fixes: #31061 PR-URL: #31171 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Rich Trott <[email protected]>
To avoid problem with the behavior of new V8 BackingStore API, change the offset. The base address of each test case will be different. Fixes: #31061 PR-URL: #31171 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Rich Trott <[email protected]>
To avoid problem with the behavior of new V8 BackingStore API, change the offset. The base address of each test case will be different. Fixes: #31061 PR-URL: #31171 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Rich Trott <[email protected]>
To avoid problem with the behavior of new V8 BackingStore API, change the offset. The base address of each test case will be different. Fixes: #31061 PR-URL: #31171 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: David Carlier <[email protected]> Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Rich Trott <[email protected]>
https://ci.nodejs.org/job/node-test-commit-aix/27470/nodes=aix61-ppc64/console
test-osuosl-aix61-ppc64_be-2
This was on a node-daily-master run, not a CI for a PR or anything like that.
@nodejs/platform-aix
The text was updated successfully, but these errors were encountered: