profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/vkurchatkin/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Vladimir Kurchatkin vkurchatkin Moscow

vkurchatkin/koa-connect 153

Use connect and express middleware in koa

vkurchatkin/function-origin 49

Get origin of a function in io.js and node.js

vkurchatkin/geojson-flow 9

GeoJSON type declarations for Flow

vkurchatkin/generator-foreach 5

forEach for generators

vkurchatkin/connect-compose 4

Compose connect middleware

vkurchatkin/iojs-ru 1

Перевод io.js на русский язык

vkurchatkin/jquery.couch 1

jquery.couch.js for bower

vkurchatkin/8bit.js 0

8Bit.js Audio Library - Write music using 8bit oscillation sounds.

pull request commentnodejs/node

worker: avoid potential deadlock on NearHeapLimit

CI: https://ci.nodejs.org/job/node-test-pull-request/37956/

santigimeno

comment created time in 31 minutes

push eventnodejs/node-v8

Daniel Bevenius

commit sha 67ea715209a36937dbe56408ce30429e7322783b

test: update OpenSSL 3.0.0-alpha15 error messages PR-URL: https://github.com/nodejs/node/pull/38451 Fixes: https://github.com/nodejs/node/issues/38373 Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Daniel Bevenius

commit sha 2ff93c8975508736bbc07b98cf84f47d68b47201

test: skip tests for openssl-3.0.0-alpha15 This commit skips some test when OpenSSL 3.0.0-alpha15 is used as there is an issue that causes them to fail. This is only a temp solution until there is new OpenSSL release. Fixes: https://github.com/nodejs/node/issues/38373 PR-URL: https://github.com/nodejs/node/pull/38451 Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Antoine du Hamel

commit sha c6dc9319f360788e1f77f9b579ddefe663aaf86e

lib: make `IterableWeakMap` safe to iterate PR-URL: https://github.com/nodejs/node/pull/38523 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Rich Trott

commit sha bed947b85445c809b253938323536960323a2cb6

debugger: rename inspector-cli test module to debugger PR-URL: https://github.com/nodejs/node/pull/38530 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>

view details

Juan José Arboleda

commit sha b373a2c4babc213b79b66f6ba36e8a951cae5ba8

Revert "worker: remove `ERR_CLOSED_MESSAGE_PORT`" This reverts commit 73370b45844fd64e9ca8f9270220e425f9ef8ab6. The unit test is preserved to make sure it does not break https://github.com/nodejs/node/issues/26463 again. PR-URL: https://github.com/nodejs/node/pull/38510 Fixes: https://github.com/nodejs/node/issues/38499 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Juan José Arboleda

commit sha 75073aba9d7a9bc90bd7c70369d66667565a7f4c

src: make workers messaging more resilient PR-URL: https://github.com/nodejs/node/pull/38510 Fixes: https://github.com/nodejs/node/issues/38499 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Rich Trott

commit sha d5f0c83d80fff458712c20fcfaa3106624401f0b

debugger: wrap lines longer than 80 chars Wrap lines more than 80 chararcters long in inspect_repl.js so we can disable specific rules. PR-URL: https://github.com/nodejs/node/pull/38529 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Rich Trott

commit sha c42849fde4fcedb3dfcccd8d09e52ca76f9fd52b

debugger: avoid non-ASCII char in code file Avoid non-ASCII char in lib code as a single non-ASCII char forces all the chars to be stored inefficiently, bloating the binary size. This also brings the file closer to compatibility with our lint rules. PR-URL: https://github.com/nodejs/node/pull/38529 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Rich Trott

commit sha 7eb28e3176080afe515bec976d332431b2e2f47e

debugger: disable only the lint rules required by current file state PR-URL: https://github.com/nodejs/node/pull/38529 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Rongjian Zhang

commit sha 8231cc4d4228da9d62b5362c0aff975cc53d6f05

fs: use `assert` in `fsCall` argument checking In the user perspective, it's not an arguemnt type error. Replace it with an `assert` expression. PR-URL: https://github.com/nodejs/node/pull/38519 Refs: https://coverage.nodejs.org/coverage-68e6673224365120/lib/internal/fs/promises.js.html#L268 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Rongjian Zhang

commit sha 2465062c45bb73025ecf06f475339bcf6e783de2

test: improve fs coverage PR-URL: https://github.com/nodejs/node/pull/38517 Refs: https://coverage.nodejs.org/coverage-68e6673224365120/lib/fs.js.html#L330 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com>

view details

Stephen Belanger

commit sha 50dd62ed96e745a087c9289a76721e5f5e0fecbb

deps: V8: backport c0fceaa0669b Original commit message: Reland "[api] JSFunction PromiseHook for v8::Context" This is a reland of d5457f5fb7ea05ca05a697599ffa50d35c1ae3c7 after a speculative revert. Additionally it fixes an issue with throwing promise hooks. Original change's description: > [api] JSFunction PromiseHook for v8::Context > > This will enable Node.js to get much better performance from async_hooks > as currently PromiseHook delegates to C++ for the hook function and then > Node.js delegates it right back to JavaScript, introducing several > unnecessary barrier hops in code that gets called very, very frequently > in modern, promise-heavy applications. > > This API mirrors the form of the original C++ function based PromiseHook > API, however it is intentionally separate to allow it to use JSFunctions > triggered within generated code to, as much as possible, avoid entering > runtime functions entirely. > > Because PromiseHook has internal use also, beyond just the Node.js use, > I have opted to leave the existing API intact and keep this separate to > avoid conflicting with any possible behaviour expectations of other API > users. > > The design ideas for this new API stemmed from discussion with some V8 > team members at a previous Node.js Diagnostics Summit hosted by Google > in Munich, and the relevant documentation of the discussion can be found > here: https://docs.google.com/document/d/1g8OrG5lMIUhRn1zbkutgY83MiTSMx-0NHDs8Bf-nXxM/edit#heading=h.w1bavzz80l1e > > A summary of the reasons for why this new design is important can be > found here: https://docs.google.com/document/d/1vtgoT4_kjgOr-Bl605HR2T6_SC-C8uWzYaOPDK5pmRo/edit?usp=sharing > > Bug: v8:11025 > Change-Id: I0b403b00c37d3020b5af07b654b860659d3a7697 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2759188 > Reviewed-by: Marja Hölttä <marja@chromium.org> > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Commit-Queue: Camillo Bruni <cbruni@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73858} Bug: v8:11025 Bug: chromium:1197475 Change-Id: I73a71e97d9c3dff89a2b092c3fe4adff81ede8ef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2823917 Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74071} Refs: https://github.com/v8/v8/commit/c0fceaa0669b39136c9e780f278e2596d71b4e8a PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha 774874d2d79340189d482f4af88d802462f7707d

deps: V8: cherry-pick 272445f10927 Original commit message: [runtime] Fix promise hooks promiseCapability can be undefined. Bug: v8:11025 Bug: chromium:1201113 Change-Id: I9da8764820cee0db1f0c38ed2fff0e3afeb9a80e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2844649 Reviewed-by: Marja Hölttä <marja@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74117} Refs: https://github.com/v8/v8/commit/272445f109273dcdf81d37b1f91f146cfd78ec41 PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha 53f86d52b6ae7c348c479ab71d71f171522d4419

deps: V8: cherry-pick 5f4413194480 Original commit message: [promises] Change context promise hooks to Callable The previously added perf-context Promise-hooks take a v8::Function as arguments. However, the builtin code was only accepting JSFunctions which causes cast errors. Drive-by-fix: Directly pass nativeContext in more places. Bug: chromium:1201465 Change-Id: Ic8bed11253a1f18a84e71eb9ea809b1ec1c3f428 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2850162 Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74223} Refs: https://github.com/v8/v8/commit/5f44131944800f16c4dc6768acb67561e3746384 PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha 041579800bc7ef8c88e516346e91cfe3bd21c8d5

deps: V8: cherry-pick 4c074516397b Original commit message: [promises] Fix slow path when context promise hooks are present Bug: chromium:1201936 Change-Id: I1ee545e33587ddf4a5c7e1cbd64b53d36c75a146 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2850936 Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74267} Refs: https://github.com/v8/v8/commit/4c074516397b89c5cfe9de9857018484f73445ef PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha c8e4020a212cd1ce6692d069eb39d59f40424aa5

deps: V8: cherry-pick fa4cb172cde2 Original commit message: [runtime] Fix Promise.all context promise hooks We have to take the slow path in Promise.all if context promise hooks are set. The fast-path doesn't create intermediate promises by default. Bug: chromium:1204132, v8:11025 Change-Id: Ide92de00a4f6df05e0ddbc8814f6673bd667f426 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2866771 Reviewed-by: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74326} Refs: https://github.com/v8/v8/commit/fa4cb172cde256a1e71d675d81fbb4b85d1e5f66 PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha f37c26b8a2e10d0a53a60a2fad5b0133ad33308a

async_hooks: use new v8::Context PromiseHook API PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Node.js GitHub Bot

commit sha ad4ad703786e53925e3f9b147cff0f04ab17ac51

deps: update V8 to 9.2.171

view details

Node.js GitHub Bot

commit sha b4d99162860fd3bbc9ec5d38f42ee03c5e791184

build: reset embedder string to "-node.0"

view details

Node.js GitHub Bot

commit sha e41475157427d8349a7a7dfbc62352aa962ce30e

src: update NODE_MODULE_VERSION to 94 Major V8 updates are usually API/ABI incompatible with previous versions. This commit adapts NODE_MODULE_VERSION for V8 9.2. Refs: https://github.com/nodejs/CTC/blob/master/meetings/2016-09-28.md

view details

push time in an hour

issue commentnodejs/node

Crash in typescript using nodejs 16 on ppcle

ok I've tried building with -O0 (default for debug unoptimized build), -Og , and -O2 for BUILDTYPE=Debug it does SIGTRAP

Core was generated by `/usr/bin/node ../../../../qtwebengine-5.15.2_p20210421/src/3rdparty/chromium/th'.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0  0x00000001042114ac in v8::base::OS::Abort () at ../deps/v8/src/base/platform/platform-posix.cc:502
502         V8_IMMEDIATE_CRASH();
[Current thread is 1 (Thread 0x7fffa1b99010 (LWP 8434))]
(gdb) bt
#0  0x00000001042114ac in v8::base::OS::Abort () at ../deps/v8/src/base/platform/platform-posix.cc:502
#1  0x00000001062d62a0 in V8_Fatal (file=0x106b6ce60 "../deps/v8/src/deoptimizer/deoptimizer.cc", line=<optimized out>,
    format=format@entry=0x1089dccd0 "Debug check failed: %s.") at ../deps/v8/src/base/logging.cc:167
#2  0x00000001062d62e0 in v8::base::(anonymous namespace)::DefaultDcheckHandler (file=<optimized out>, line=<optimized out>,
    message=<optimized out>) at ../deps/v8/src/base/logging.cc:57
#3  0x00000001062d6328 in V8_Dcheck (file=<optimized out>, line=<optimized out>, message=<optimized out>)
    at ../deps/v8/src/base/logging.cc:180
#4  0x00000001048916a4 in v8::internal::Deoptimizer::Deoptimizer (this=0x141d1c380, isolate=<optimized out>, function=...,
    kind=<optimized out>, deopt_exit_index=<optimized out>, from=<optimized out>, fp_to_sp_delta=<optimized out>)
    at ../deps/v8/src/deoptimizer/deoptimizer.cc:574
#5  0x0000000104891964 in v8::internal::Deoptimizer::New (raw_function=<optimized out>, kind=<optimized out>,
    deopt_exit_index=<optimized out>, from=69196732299540, fp_to_sp_delta=<optimized out>, isolate=0x141c6fb40)
    at ../deps/v8/src/deoptimizer/deoptimizer.cc:195
#6  0x000000010563b238 in Builtins_DeoptimizationEntry_Soft () at ../deps/v8/src/builtins/builtins-internal-gen.cc:1107






(gdb) bt full
#0  0x00000001042114ac in v8::base::OS::Abort () at ../deps/v8/src/base/platform/platform-posix.cc:502
No locals.
#1  0x00000001062d62a0 in V8_Fatal (file=0x106b6ce60 "../deps/v8/src/deoptimizer/deoptimizer.cc", line=<optimized out>, format=format@entry=0x1089dccd0 "Debug check failed: %s.") at ../deps/v8/src/base/logging.cc:167
        arguments = 0x7fffcbeb1308 "\200)4B\001"
        message = {static kStartMarker = <optimized out>, static kEndMarker = <optimized out>, static kMessageBufferSize = <optimized out>, start_marker_ = 3737837072, message_ = "Debug check failed: 0 == offset % kNonLazyDeoptExitSize (0 vs. 8).", '\000' <repeats 445 times>,
          end_marker_ = 3737837073}
#2  0x00000001062d62e0 in v8::base::(anonymous namespace)::DefaultDcheckHandler (file=<optimized out>, line=<optimized out>, message=<optimized out>) at ../deps/v8/src/base/logging.cc:57
No locals.
#3  0x00000001062d6328 in V8_Dcheck (file=<optimized out>, line=<optimized out>, message=<optimized out>) at ../deps/v8/src/base/logging.cc:180
No locals.
#4  0x00000001048916a4 in v8::internal::Deoptimizer::Deoptimizer (this=0x141d1c380, isolate=<optimized out>, function=..., kind=<optimized out>, deopt_exit_index=<optimized out>, from=<optimized out>, fp_to_sp_delta=<optimized out>)
    at ../deps/v8/src/deoptimizer/deoptimizer.cc:574
        _msg = 0x142351f00
        offset = <optimized out>
        deopt_start = <optimized out>
        lazy_deopt_start = 69196732299592
        eager_with_resume_deopt_start = <optimized out>
        deopt_data = {<v8::internal::FixedArray> = {<v8::internal::TorqueGeneratedFixedArray<v8::internal::FixedArray, v8::internal::FixedArrayBase>> = {<v8::internal::FixedArrayBase> = {<v8::internal::TorqueGeneratedFixedArrayBase<v8::internal::FixedArrayBase, v8::internal::HeapObject>> = {<v8::internal::HeapObject> = {<v8::internal::Object> = {<v8::internal::TaggedImpl<(v8::internal::HeapObjectReferenceType)1, unsigned long>> = {static kIsFull = <optimized out>, static kCanBeWeak = false, ptr_ = 35165796512481},
                      static kHeaderSize = 0}, <No data fields>}, static kStartOfStrongFieldsOffset = <optimized out>, static kLengthOffset = 8, static kLengthOffsetEnd = 15, static kEndOfStrongFieldsOffset = <optimized out>, static kStartOfWeakFieldsOffset = <optimized out>,
                  static kEndOfWeakFieldsOffset = <optimized out>, static kHeaderSize = 16}, static kMaxSize = 1073741816}, static kStartOfStrongFieldsOffset = <optimized out>, static kHeaderSize = 16, static kObjectsOffset = <optimized out>,
              static kObjectsOffsetEnd = <optimized out>, static kEndOfStrongFieldsOffset = <optimized out>, static kStartOfWeakFieldsOffset = <optimized out>, static kEndOfWeakFieldsOffset = <optimized out>}, static kMaxLength = 134217725, static kMaxRegularLength = 32766,
            static kObjectsOffset = 16}, static kTranslationByteArrayIndex = 0, static kInlinedFunctionCountIndex = 1, static kLiteralArrayIndex = 2, static kOsrBytecodeOffsetIndex = 3, static kOsrPcOffsetIndex = 4, static kOptimizationIdIndex = 5,
          static kSharedFunctionInfoIndex = 6, static kInliningPositionsIndex = 7, static kDeoptExitStartIndex = 8, static kEagerSoftAndBailoutDeoptCountIndex = 9, static kLazyDeoptCountIndex = 10, static kFirstDeoptEntryIndex = 11, static kBytecodeOffsetRawOffset = 0,
          static kTranslationIndexOffset = 1, static kPcOffset = 2, static kDeoptEntrySize = 3, static kNotInlinedIndex = -1}
        eager_soft_and_bailout_deopt_count = 253
        lazy_deopt_count = <optimized out>
        size = <optimized out>
        parameter_count = <optimized out>
        size = <optimized out>
        parameter_count = <optimized out>
        _msg = <optimized out>
        scope = {static kCheckHandleThreshold = 30720, isolate_ = <optimized out>, prev_next_ = <optimized out>, prev_limit_ = <optimized out>}
        deopt_data = {<v8::internal::FixedArray> = {<v8::internal::TorqueGeneratedFixedArray<v8::internal::FixedArray, v8::internal::FixedArrayBase>> = {<v8::internal::FixedArrayBase> = {<v8::internal::TorqueGeneratedFixedArrayBase<v8::internal::FixedArrayBase, v8::internal::HeapObject>> = {<v8::internal::HeapObject> = {<v8::internal::Object> = {<v8::internal::TaggedImpl<(v8::internal::HeapObjectReferenceType)1, unsigned long>> = {static kIsFull = <optimized out>, static kCanBeWeak = false, ptr_ = <optimized out>},
                      static kHeaderSize = 0}, <No data fields>}, static kStartOfStrongFieldsOffset = <optimized out>, static kLengthOffset = 8, static kLengthOffsetEnd = 15, static kEndOfStrongFieldsOffset = <optimized out>, static kStartOfWeakFieldsOffset = <optimized out>,
                  static kEndOfWeakFieldsOffset = <optimized out>, static kHeaderSize = 16}, static kMaxSize = 1073741816}, static kStartOfStrongFieldsOffset = <optimized out>, static kHeaderSize = 16, static kObjectsOffset = <optimized out>,
              static kObjectsOffsetEnd = <optimized out>, static kEndOfStrongFieldsOffset = <optimized out>, static kStartOfWeakFieldsOffset = <optimized out>, static kEndOfWeakFieldsOffset = <optimized out>}, static kMaxLength = 134217725, static kMaxRegularLength = 32766,
            static kObjectsOffset = 16}, static kTranslationByteArrayIndex = 0, static kInlinedFunctionCountIndex = 1, static kLiteralArrayIndex = 2, static kOsrBytecodeOffsetIndex = 3, static kOsrPcOffsetIndex = 4, static kOptimizationIdIndex = 5,
          static kSharedFunctionInfoIndex = 6, static kInliningPositionsIndex = 7, static kDeoptExitStartIndex = 8, static kEagerSoftAndBailoutDeoptCountIndex = 9, static kLazyDeoptCountIndex = 10, static kFirstDeoptEntryIndex = 11, static kBytecodeOffsetRawOffset = 0,
          static kTranslationIndexOffset = 1, static kPcOffset = 2, static kDeoptEntrySize = 3, static kNotInlinedIndex = -1}
        deopt_start = <optimized out>
        eager_soft_and_bailout_deopt_count = <optimized out>
        lazy_deopt_start = <optimized out>
        lazy_deopt_count = <optimized out>
        eager_with_resume_deopt_start = <optimized out>
        _msg = <optimized out>
        _msg = <optimized out>
        _msg = <optimized out>
        offset = <optimized out>
        _msg = <optimized out>
        offset = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        _msg = <optimized out>
        offset = <optimized out>
        _msg = <optimized out>
#5  0x0000000104891964 in v8::internal::Deoptimizer::New (raw_function=<optimized out>, kind=<optimized out>, deopt_exit_index=<optimized out>, from=69196732299540, fp_to_sp_delta=<optimized out>, isolate=0x141c6fb40) at ../deps/v8/src/deoptimizer/deoptimizer.cc:195
        function = {<v8::internal::JSFunctionOrBoundFunction> = {<v8::internal::TorqueGeneratedJSFunctionOrBoundFunction<v8::internal::JSFunctionOrBoundFunction, v8::internal::JSObject>> = {<v8::internal::JSObject> = {<v8::internal::TorqueGeneratedJSObject<v8::internal::JSObject, v8::internal::JSReceiver>> = {<v8::internal::JSReceiver> = {<v8::internal::HeapObject> = {<v8::internal::Object> = {<v8::internal::TaggedImpl<(v8::internal::HeapObjectReferenceType)1, unsigned long>> = {static kIsFull = <optimized out>, static kCanBeWeak = false,
                          ptr_ = 2082690347097}, static kHeaderSize = 0}, <No data fields>}, static kHashMask = 2147482624}, static kStartOfStrongFieldsOffset = v8::internal::JSReceiver::kStartOfStrongFieldsOffset, static kElementsOffset = 16, static kElementsOffsetEnd = 23,
                  static kEndOfStrongFieldsOffset = v8::internal::JSReceiver::kEndOfStrongFieldsOffset, static kStartOfWeakFieldsOffset = v8::internal::JSReceiver::kEndOfStrongFieldsOffset, static kEndOfWeakFieldsOffset = v8::internal::JSReceiver::kEndOfStrongFieldsOffset,
                  static kHeaderSize = 24}, static kMinAddedElementsCapacity = 16, static kMaxElementCount = 4294967295, static kMaxGap = 1024, static kMaxUncheckedFastElementsLength = 5000, static kMaxUncheckedOldFastElementsLength = 500,
                static kInitialGlobalObjectUnusedPropertiesCount = 4, static kMaxInstanceSize = 2040, static kFieldsAdded = 3, static kMaxInObjectProperties = 252, static kMaxFirstInobjectPropertyOffset = 127, static kMaxEmbedderFields = 12},
              static kStartOfWeakFieldsOffset = v8::internal::JSReceiver::kEndOfStrongFieldsOffset, static kEndOfWeakFieldsOffset = v8::internal::JSReceiver::kEndOfStrongFieldsOffset, static kStartOfStrongFieldsOffset = v8::internal::JSReceiver::kStartOfStrongFieldsOffset,
              static kEndOfStrongFieldsOffset = v8::internal::JSReceiver::kEndOfStrongFieldsOffset, static kHeaderSize = 24}, <No data fields>}, static kLengthDescriptorIndex = 0, static kNameDescriptorIndex = 1, static kMinDescriptorsForFastBind = 2,
          static kSharedFunctionInfoOffset = 24, static kContextOffset = 32, static kFeedbackCellOffset = 40, static kCodeOffset = 48, static kPrototypeOrInitialMapOffset = 56, static kHeaderSize = 24, static kSizeWithoutPrototype = 56, static kSizeWithPrototype = 64}
        deoptimizer = <optimized out>
#6  0x000000010563b238 in Builtins_DeoptimizationEntry_Soft () at ../deps/v8/src/builtins/builtins-internal-gen.cc:1107
No locals.

so far here's the backtrace for Release build with flags overriden to -O2 -ggdb -fno-omit-frame-pointer

Core was generated by `/usr/bin/node ../../../../qtwebengine-5.15.2_p20210421/src/3rdparty/chromium/th'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000000013bb29178 in v8::internal::Object::ReadField<unsigned char, 0> (offset=1612733462, this=0x7fffcc053e28)
    at ../deps/v8/src/objects/objects.h:649
649     ../deps/v8/src/objects/objects.h: No such file or directory.
[Current thread is 1 (Thread 0x7fff80089010 (LWP 7124))]
(gdb) bt
#0  0x000000013bb29178 in v8::internal::Object::ReadField<unsigned char, 0> (offset=1612733462, this=0x7fffcc053e28)
    at ../deps/v8/src/objects/objects.h:649
#1  v8::internal::ByteArray::get (index=1612733447, this=0x7fffcc053e28) at ../deps/v8/src/objects/fixed-array-inl.h:554
#2  v8::internal::TranslationArrayIterator::Next (this=0x7fffcc053e10) at ../deps/v8/src/deoptimizer/translation-array.cc:64
#3  0x000000013bb287b4 in v8::internal::TranslatedState::Init (this=0x143257900, isolate=<optimized out>,
    input_frame_pointer=<optimized out>, stack_frame_pointer=<optimized out>, iterator=<optimized out>, literal_array=...,
    registers=<optimized out>, trace_file=<optimized out>, formal_parameter_count=3, actual_argument_count=3)
    at ../deps/v8/src/deoptimizer/translated-state.cc:1315
#4  0x000000013bb1d9b8 in v8::internal::Deoptimizer::DoComputeOutputFrames (this=0x143257880)
    at ../deps/v8/src/deoptimizer/deoptimizer.cc:889
#5  0x000000013c44b8bc in Builtins_DeoptimizationEntry_Lazy ()








(gdb) bt full
#0  0x000000013bb29178 in v8::internal::Object::ReadField<unsigned char, 0> (offset=1612733462, this=0x7fffcc053e28)
    at ../deps/v8/src/objects/objects.h:649
        v8_pointer_compression_unaligned = false
        v8_pointer_compression_unaligned = <optimized out>
#1  v8::internal::ByteArray::get (index=1612733447, this=0x7fffcc053e28) at ../deps/v8/src/objects/fixed-array-inl.h:554
No locals.
#2  v8::internal::TranslationArrayIterator::Next (this=0x7fffcc053e10) at ../deps/v8/src/deoptimizer/translation-array.cc:64
        next = <optimized out>
        i = 0
        bits = 0
        is_negative = <optimized out>
        result = <optimized out>
#3  0x000000013bb287b4 in v8::internal::TranslatedState::Init (this=0x143257900, isolate=<optimized out>,
    input_frame_pointer=<optimized out>, stack_frame_pointer=<optimized out>, iterator=<optimized out>, literal_array=...,
    registers=<optimized out>, trace_file=<optimized out>, formal_parameter_count=3, actual_argument_count=3)
    at ../deps/v8/src/deoptimizer/translated-state.cc:1315
        opcode = <optimized out>
        count = <optimized out>
        update_feedback_count = <optimized out>
        nested_counts = std::stack wrapping: std::deque with 800736050 elements = {-872071344, 32767, -1877716216, 16018, 1652552377,
          9632, -710525751, 9713, -872071416, 32767, 1126529152, 1, -452450919, 6541, -710525751, 9713, -872071240, 32767, -219972639,
          4549, 1, 0, -219960135, 4549, -219972639, 4549, -1877792416, 16018, -872071232, 32767, -1877794572, 16018, -452450919, 6541,
          -710525751, 9713, -1877682752, 16018, -872071224, 32767, -1877685556, 16018, -219972639, 4549, -710812119, 9713, -452450455,
          6541, 2, 0, -219953863, 4549, -219972639, 4549, -1877671960, 16018, -872071136, 32767, -1877673056, 16018, -452450919, 6541,
          -710525751, 9713, 0, 0, 0, 0, -219972639, 4549, -219953863, 4549, 1, 0, -219960263, 4549, -219972639, 4549, -1877689560, 16018,
--Type <RET> for more, q to quit, c to continue without paging--
          -872071048, 32767, -1877690152, 16018, -452450919, 6541, -710547719, 9713, -452450919, 6541, -452450919, 6541, -213896015,
          6969, 3, 0, -220177007, 4549, -213896015, 6969, -1877612872, 16018, -872070928, 32767, -1877616280, 16018, -452450919, 6541,
          -219953863, 4549, -219960263, 4549, -710547719, 9713, 406791897, 5196, 1, 0, 0, 1, 0, 0, -213896015, 6969, 3, 0, -213747239,
          6969, -213896015, 6969, -1877712128, 16018, -872070816, 32767, -1877716216, 16018, 1652552377, 9632, -710812119, 9713,
          -219953863, 4549, -219960263, 4549, 1557668153, 6257, 1011109664, 1, -872070808, 32767, -219972639, 4549, 1, 0, -219960135,
          4549, -219972639, 4549, -1877662280, 16018, -872070632, 32767, -1877669852, 16018, -452450919, 6541, -710812119, 9713,
          43104233, 12685, 2491401, 507, 0, 0, -452450455, 6541, -452450919, 6541, -452450919, 6541, -452450919, 6541, -452450919, 6541,
          -452450919, 6541, 721453881, 11287, 45, 0, -219972639, 4549, -710878559, 9713, -1315907375, 592, -710878559, 9713, 2, 0...}
#4  0x000000013bb1d9b8 in v8::internal::Deoptimizer::DoComputeOutputFrames (this=0x143257880)
    at ../deps/v8/src/deoptimizer/deoptimizer.cc:889
        timer = {start_ticks_ = {<v8::base::time_internal::TimeBase<v8::base::TimeTicks>> = {<v8::base::TimeConstants> = {
                static kHoursPerDay = 24, static kMillisecondsPerSecond = 1000, static kMillisecondsPerDay = 86400000,
                static kMicrosecondsPerMillisecond = 1000, static kMicrosecondsPerSecond = 1000000,
                static kMicrosecondsPerMinute = 60000000, static kMicrosecondsPerHour = 3600000000,
                static kMicrosecondsPerDay = 86400000000, static kMicrosecondsPerWeek = 604800000000,
                static kNanosecondsPerMicrosecond = 1000, static kNanosecondsPerSecond = 1000000000},
              us_ = <optimized out>}, <No data fields>}}
        input_data = {<v8::internal::FixedArray> = {<v8::internal::TorqueGeneratedFixedArray<v8::internal::FixedArray, v8::internal::FixedArrayBase>> = {<v8::internal::FixedArrayBase> = {<v8::internal::TorqueGeneratedFixedArrayBase<v8::internal::FixedArrayBase, v8::internal::HeapObject>> = {<v8::internal::HeapObject> = {<v8::internal::Object> = {<v8::internal::TaggedImpl<(v8::internal::HeapObjectReferenceType)1, unsigned long>> = {static kIsFull = <optimized out>, static kCanBeWeak = false, ptr_ = <optimized out>},
                      static kHeaderSize = 0}, <No data fields>}, static kStartOfStrongFieldsOffset = <optimized out>,
                  static kLengthOffset = 8, static kLengthOffsetEnd = 15, static kEndOfStrongFieldsOffset = <optimized out>,
                  static kStartOfWeakFieldsOffset = <optimized out>, static kEndOfWeakFieldsOffset = <optimized out>,
                  static kHeaderSize = 16}, static kMaxSize = 1073741816}, static kStartOfStrongFieldsOffset = <optimized out>,
--Type <RET> for more, q to quit, c to continue without paging--
              static kHeaderSize = 16, static kObjectsOffset = <optimized out>, static kObjectsOffsetEnd = <optimized out>,
              static kEndOfStrongFieldsOffset = <optimized out>, static kStartOfWeakFieldsOffset = <optimized out>,
              static kEndOfWeakFieldsOffset = <optimized out>}, static kMaxLength = 134217725, static kMaxRegularLength = 32766,
            static kObjectsOffset = 16}, static kTranslationByteArrayIndex = 0, static kInlinedFunctionCountIndex = 1,
          static kLiteralArrayIndex = 2, static kOsrBytecodeOffsetIndex = 3, static kOsrPcOffsetIndex = 4,
          static kOptimizationIdIndex = 5, static kSharedFunctionInfoIndex = 6, static kInliningPositionsIndex = 7,
          static kDeoptExitStartIndex = 8, static kEagerSoftAndBailoutDeoptCountIndex = 9, static kLazyDeoptCountIndex = 10,
          static kFirstDeoptEntryIndex = 11, static kBytecodeOffsetRawOffset = 0, static kTranslationIndexOffset = 1,
          static kPcOffset = 2, static kDeoptEntrySize = 3, static kNotInlinedIndex = -1}
        stack_guard = 0x14327fb38
        bytecode_offset = {static kNoneId = -1, static kFirstBuiltinContinuationId = 1, id_ = <optimized out>}
        translations = {<v8::internal::TorqueGeneratedByteArray<v8::internal::ByteArray, v8::internal::FixedArrayBase>> = {<v8::internal::FixedArrayBase> = {<v8::internal::TorqueGeneratedFixedArrayBase<v8::internal::FixedArrayBase, v8::internal::HeapObject>> = {<v8::internal::HeapObject> = {<v8::internal::Object> = {<v8::internal::TaggedImpl<(v8::internal::HeapObjectReferenceType)1, unsigned long>> = {
                      static kIsFull = <optimized out>, static kCanBeWeak = false, ptr_ = 2177550646105},
                    static kHeaderSize = 0}, <No data fields>}, static kStartOfStrongFieldsOffset = <optimized out>,
                static kLengthOffset = 8, static kLengthOffsetEnd = 15, static kEndOfStrongFieldsOffset = <optimized out>,
                static kStartOfWeakFieldsOffset = <optimized out>, static kEndOfWeakFieldsOffset = <optimized out>,
                static kHeaderSize = 16}, static kMaxSize = 1073741816}, static kHeaderSize = 16, static kBytesOffset = <optimized out>,
            static kBytesOffsetEnd = <optimized out>, static kStartOfWeakFieldsOffset = <optimized out>,
            static kEndOfWeakFieldsOffset = <optimized out>, static kStartOfStrongFieldsOffset = <optimized out>,
            static kEndOfStrongFieldsOffset = <optimized out>}, static kAlignedSize = 16, static kMaxLength = 1073741800}
        translation_index = 1612733446
        trace_file = 0x0
        state_iterator = {uncompressed_contents_ = std::vector of length 0, capacity 0,
--Type <RET> for more, q to quit, c to continue without paging--
          buffer_ = {<v8::internal::TorqueGeneratedByteArray<v8::internal::ByteArray, v8::internal::FixedArrayBase>> = {<v8::internal::FixedArrayBase> = {<v8::internal::TorqueGeneratedFixedArrayBase<v8::internal::FixedArrayBase, v8::internal::HeapObject>> = {<v8::internal::HeapObject> = {<v8::internal::Object> = {<v8::internal::TaggedImpl<(v8::internal::HeapObjectReferenceType)1, unsigned long>> = {
                        static kIsFull = <optimized out>, static kCanBeWeak = false, ptr_ = 2177550646105},
                      static kHeaderSize = 0}, <No data fields>}, static kStartOfStrongFieldsOffset = <optimized out>,
                  static kLengthOffset = 8, static kLengthOffsetEnd = 15, static kEndOfStrongFieldsOffset = <optimized out>,
                  static kStartOfWeakFieldsOffset = <optimized out>, static kEndOfWeakFieldsOffset = <optimized out>,
                  static kHeaderSize = 16}, static kMaxSize = 1073741816}, static kHeaderSize = 16,
              static kBytesOffset = <optimized out>, static kBytesOffsetEnd = <optimized out>,
              static kStartOfWeakFieldsOffset = <optimized out>, static kEndOfWeakFieldsOffset = <optimized out>,
              static kStartOfStrongFieldsOffset = <optimized out>, static kEndOfStrongFieldsOffset = <optimized out>},
            static kAlignedSize = 16, static kMaxLength = 1073741800}, index_ = 1612733447}
        count = <optimized out>
        frame_index = <optimized out>
        total_output_frame_size = <optimized out>
        topmost = <optimized out>
#5  0x000000013c44b8bc in Builtins_DeoptimizationEntry_Lazy ()
No symbol table info available.

Flarna

comment created time in 2 hours

pull request commentnodejs/node

build: fix Makefile conditions

$ cat Makefile ifdef JOBS PARALLEL_ARGS = -j $(JOBS) else PARALLEL_ARGS = -J endif

.PHONY: all all: $(info PARALLEL_ARGS is "$(PARALLEL_ARGS)") @true

This one works file for me either... but not the Node.js one.

Thanks for you information! @lpinca I'll try to look into it further

pd4d10

comment created time in 3 hours

pull request commentnodejs/node

build: fix Makefile conditions

Oh, that's weird. I tested the built-in make and the GNU make (by brew install make) at macOS, and both do not work.

> make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0
> gmake --version
GNU Make 4.3
Built for x86_64-apple-darwin20.1.0
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
pd4d10

comment created time in 3 hours

pull request commentnodejs/node

build: fix Makefile conditions

It seems to work fine as is:

$ make --version
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ cat Makefile
ifdef JOBS
        PARALLEL_ARGS = -j $(JOBS)
else
        PARALLEL_ARGS = -J
endif

.PHONY: all
all:
        $(info PARALLEL_ARGS is "$(PARALLEL_ARGS)") @true
$ JOBS=1 make
PARALLEL_ARGS is "-j 1"
pd4d10

comment created time in 3 hours

issue commentnodejs/node

Crash in typescript using nodejs 16 on ppcle

I can't reproduce with debug build of node (with #38571 applied)

Flarna

comment created time in 3 hours

issue commentnodejs/help

Assertion failed: new_time >= loop->time, file c:\ws\deps\uv\src\win\core.c, line 309

Clock synchronization, obviously, shouldn't help in most cases. I've build 14.4.0 version with this patch, it works. Maybe it'll help someone. Simply, download node.zip and replace node.exe in folder, where NodeJS 14.4.0 is install

I want 10.16.3 version for this version it is not working

beyondwatts

comment created time in 4 hours

issue commentnodejs/node

Crash in typescript using nodejs 16 on ppcle

can confirm segfault while building qtwebengine/chromium typescript parts on ppc64le

Flarna

comment created time in 4 hours

issue openednodejs/help

Syntax of set NODE_SKIP_PLATFORM_CHECK

  • Node.js Version: 16.1
  • OS: Win 7-64b

Hi,

I need to test on 16.1 .0 on Win7. What is the syntax set var in node. I keep getting the NODE_SKIP_PLATFORM_CHECK warning that blocks me from doing anything, including node -v.

I've tried the following:

npm config set NODE_SKIP_PLATFORM_CHECK 1 
npm config set NODE_SKIP_PLATFORM_CHECK "1 "
npm config set NODE_SKIP_PLATFORM_CHECK "true"

npm set NODE_SKIP_PLATFORM_CHECK 1 
npm set NODE_SKIP_PLATFORM_CHECK "1"
npm set NODE_SKIP_PLATFORM_CHECK "true" 

Thanks

created time in 5 hours

issue commentnodejs/node

Building on Windows "Failed to find a suitable Visual Studio installation"

Hi, I saw that #38500 has landed. Has the issue been resolved?

aaroncool9

comment created time in 5 hours

PR opened nodejs/node

build: fix Makefile conditions

Fixes: https://github.com/nodejs/node/issues/38578

<!-- Before submitting a pull request, please read https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md.

Commit message formatting guidelines: https://github.com/nodejs/node/blob/HEAD/doc/guides/contributing/pull-requests.md#commit-message-guidelines

For code changes:

  1. Include tests for any bug fixes or new features.
  2. Update documentation if relevant.
  3. Ensure that make -j4 test (UNIX), or vcbuild test (Windows) passes.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. -->

+13 -13

0 comment

1 changed file

pr created time in 5 hours

issue openednodejs/node

Some conditions in Makefile do not work

Because the line which starts with tab and the one without tab mean different in Makefile.

For more information, see Recipe-Syntax

It seems to be introduced in this PR: https://github.com/nodejs/node/pull/28881

created time in 5 hours

push eventfacebook/flow

Mike Vitousek

commit sha 7a7b76e9dc93490fa0bc3b2cd90eb87dd5c321e3

Fix havocing variables when written to before declaration Summary: This diff fixes an issue with havocing where the `closure_writes` field of a variable isn't populated until `initialized_value_entry` is executed, which happens only at declarations with initialization. This causes writes before the declaration to be missed, and it means that variables that don't get initialized at their declarations will never have `closure_writes` which means they'll always be havoced, even if it's not necessary. This diff changes constlike promotion (the process that populates the `closure_writes` field) to occur during variable binding instead. Changelog: Fixed an issue with refinement invalidation for variables without initializers or that are written to before they're declared. You may see both new errors from improved invalidations, and some unnecessary invalidations will be removed. Reviewed By: panagosg7 Differential Revision: D28202139 fbshipit-source-id: 632cfb9edfb0ca25d8eb468d482c50bf1762862b

view details

push time in 7 hours

pull request commentnodejs/node

[v14.x backport] async_hooks: use new v8::Context PromiseHook API

CI: https://ci.nodejs.org/job/node-test-pull-request/37955/

Qard

comment created time in 7 hours

PR opened nodejs/node

Reviewers
[v14.x backport] async_hooks: use new v8::Context PromiseHook API async_hooks async_wrap c++ lib / src performance semver-minor v8 engine

This is a backport of #36394 to v14. There are some notable differences due to the older V8 version not having the newer ContextSlot enum with type-safe slots, but other than that is basically identical.

+863 -180

0 comment

33 changed files

pr created time in 7 hours

pull request commentnodejs/node

node-api: fix shutdown crashes

a different set of tests, in which we can facilitate both node-api c interface and node c++ interface,

@legendecas I had been working on a new test in test/js-native-api/test_finalization, copying code from the other tests to try to trigger the case. I think from an addon we can run both node-api code as well as node internals. In the extreme case the test.js file might just call one native method on the addon.

Is that what you had in mind or something else ?

Yes.

I believe there is no such constraints that we have to use single addon in one test right? In that case we can build two target, one in node-api and one with node internals.

mhdawson

comment created time in 9 hours

issue openednodejs/help

well i dont want to install someoe help

i had tired to see it and install it but its hard for me so pls help me

created time in 9 hours

issue closednodejs/node

vm.compileFunction is crashing the node process with unknown error

  • Version: 10.15.3
  • Platform: Windows 10
  • Subsystem: vm

<!-- Please provide more details below this comment. --> The following simple script crashes the node process with no apparent reason:

const vm = require('vm');
console.log(process.version);
vm.compileFunction('return', ['ab'.replace('b', 'b'.repeat(12)).split('').join('')]);
console.log('compiled ok 1');
vm.compileFunction('return', ['ab'.replace('b', 'b'.repeat(11))]);
console.log('compiled ok 2');
try {
    vm.compileFunction('return', ['ab'.replace('b', 'b'.repeat(12))]); // crash here
    console.log('compiled ok 3');
} catch (e) { // no exception was caught
    console.error(e);
}

Output:

v10.15.3
compiled ok 1
compiled ok 2

closed time in 9 hours

kalinkrustev

issue commentnodejs/node

vm.compileFunction is crashing the node process with unknown error

I'll proceed to close this issue, this seems to be fixed on Fermiun (LTS), and Dubnium is sadly no longer maintained.

kalinkrustev

comment created time in 9 hours

pull request commentnodejs/node

node-api: fix shutdown crashes

Removed the check for the env teardown, no failures in about 450 runs.

Next removed the Ref/UnRef in CallFinalizer in node-api.cc, 1 crash within the first 300 runs without it. So it is needed.

Next adding back in the Ref/UnRef in CallFinalizer and commenting it out in the Buffer Finalizer section too see.

mhdawson

comment created time in 9 hours

PR closed nodejs/node

Reviewers
async_hooks: use new v8::Context PromiseHook API async_hooks async_wrap author ready c++ diag-agenda lib / src performance semver-minor v8 engine

I've been working on an alternative to the existing PromiseHook API in V8 using split JSFunctions per event type rather than the old way which routes everything through a single C++ function even though it's just going right back to JS in the end. The old way has many, many costly boundary jumps and deopts in many cases, so we really need a better way to track promise lifecycle events. 😅

The corresponding Chromium Review is here: ~https://chromium-review.googlesource.com/c/v8/v8/+/2466783~ https://chromium-review.googlesource.com/c/v8/v8/+/2759188

As the change has not yet landed in V8, I'm opening this as a draft PR just to show my progress and give people something to look at. I've got some nice benchmarks to share too!

Before:

❯ ./node-master benchmark/async_hooks/promises.js
async_hooks/promises.js asyncHooks="enabled" n=1000000: 271,514.4761845998
async_hooks/promises.js asyncHooks="enabledWithDestroy" n=1000000: 187,109.67499761964
async_hooks/promises.js asyncHooks="enabledWithInitOnly" n=1000000: 315,364.83307747904
async_hooks/promises.js asyncHooks="disabled" n=1000000: 1,668,525.7547478643

After:

❯ ./node benchmark/async_hooks/promises.js       
async_hooks/promises.js asyncHooks="enabled" n=1000000: 1,250,448.989340235
async_hooks/promises.js asyncHooks="enabledWithDestroy" n=1000000: 194,382.33020796857
async_hooks/promises.js asyncHooks="enabledWithInitOnly" n=1000000: 1,071,082.1953050198
async_hooks/promises.js asyncHooks="disabled" n=1000000: 1,673,424.8290965108

It's getting about 3-4x better performance. Not quite on-par with disabled yet, but getting close. There is still much that can be done to improve those numbers though.

The current changes do not allow the optimizer to do its magic in certain cases so I'm hoping to dig a bit more into getting those cases to optimize too. For reference though, the existing PromiseHook API bails out too, so this is quite a bit faster already. I'm also investigating moving the PromiseWrap used when there's a destroy hook to using this model and wrapping from JS instead, which I think should still be an overall performance improvement despite the hop back to native for the initial wrap.

cc @nodejs/diagnostics @nodejs/v8

Checklist
  • [x] make -j4 test (UNIX), or vcbuild test (Windows) passes
  • [x] tests and/or benchmarks are included
  • [x] commit message follows commit guidelines
+878 -185

33 comments

34 changed files

Qard

pr closed time in 11 hours

pull request commentnodejs/node

async_hooks: use new v8::Context PromiseHook API

Landed in 50dd62ed96e745a087c9289a76721e5f5e0fecbb, 774874d2d79340189d482f4af88d802462f7707d, 53f86d52b6ae7c348c479ab71d71f171522d4419, 041579800bc7ef8c88e516346e91cfe3bd21c8d5, c8e4020a212cd1ce6692d069eb39d59f40424aa5, and f37c26b8a2e10d0a53a60a2fad5b0133ad33308a.

Qard

comment created time in 11 hours

push eventnodejs/node

Stephen Belanger

commit sha 50dd62ed96e745a087c9289a76721e5f5e0fecbb

deps: V8: backport c0fceaa0669b Original commit message: Reland "[api] JSFunction PromiseHook for v8::Context" This is a reland of d5457f5fb7ea05ca05a697599ffa50d35c1ae3c7 after a speculative revert. Additionally it fixes an issue with throwing promise hooks. Original change's description: > [api] JSFunction PromiseHook for v8::Context > > This will enable Node.js to get much better performance from async_hooks > as currently PromiseHook delegates to C++ for the hook function and then > Node.js delegates it right back to JavaScript, introducing several > unnecessary barrier hops in code that gets called very, very frequently > in modern, promise-heavy applications. > > This API mirrors the form of the original C++ function based PromiseHook > API, however it is intentionally separate to allow it to use JSFunctions > triggered within generated code to, as much as possible, avoid entering > runtime functions entirely. > > Because PromiseHook has internal use also, beyond just the Node.js use, > I have opted to leave the existing API intact and keep this separate to > avoid conflicting with any possible behaviour expectations of other API > users. > > The design ideas for this new API stemmed from discussion with some V8 > team members at a previous Node.js Diagnostics Summit hosted by Google > in Munich, and the relevant documentation of the discussion can be found > here: https://docs.google.com/document/d/1g8OrG5lMIUhRn1zbkutgY83MiTSMx-0NHDs8Bf-nXxM/edit#heading=h.w1bavzz80l1e > > A summary of the reasons for why this new design is important can be > found here: https://docs.google.com/document/d/1vtgoT4_kjgOr-Bl605HR2T6_SC-C8uWzYaOPDK5pmRo/edit?usp=sharing > > Bug: v8:11025 > Change-Id: I0b403b00c37d3020b5af07b654b860659d3a7697 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2759188 > Reviewed-by: Marja Hölttä <marja@chromium.org> > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Commit-Queue: Camillo Bruni <cbruni@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73858} Bug: v8:11025 Bug: chromium:1197475 Change-Id: I73a71e97d9c3dff89a2b092c3fe4adff81ede8ef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2823917 Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74071} Refs: https://github.com/v8/v8/commit/c0fceaa0669b39136c9e780f278e2596d71b4e8a PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha 774874d2d79340189d482f4af88d802462f7707d

deps: V8: cherry-pick 272445f10927 Original commit message: [runtime] Fix promise hooks promiseCapability can be undefined. Bug: v8:11025 Bug: chromium:1201113 Change-Id: I9da8764820cee0db1f0c38ed2fff0e3afeb9a80e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2844649 Reviewed-by: Marja Hölttä <marja@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74117} Refs: https://github.com/v8/v8/commit/272445f109273dcdf81d37b1f91f146cfd78ec41 PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha 53f86d52b6ae7c348c479ab71d71f171522d4419

deps: V8: cherry-pick 5f4413194480 Original commit message: [promises] Change context promise hooks to Callable The previously added perf-context Promise-hooks take a v8::Function as arguments. However, the builtin code was only accepting JSFunctions which causes cast errors. Drive-by-fix: Directly pass nativeContext in more places. Bug: chromium:1201465 Change-Id: Ic8bed11253a1f18a84e71eb9ea809b1ec1c3f428 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2850162 Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74223} Refs: https://github.com/v8/v8/commit/5f44131944800f16c4dc6768acb67561e3746384 PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha 041579800bc7ef8c88e516346e91cfe3bd21c8d5

deps: V8: cherry-pick 4c074516397b Original commit message: [promises] Fix slow path when context promise hooks are present Bug: chromium:1201936 Change-Id: I1ee545e33587ddf4a5c7e1cbd64b53d36c75a146 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2850936 Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74267} Refs: https://github.com/v8/v8/commit/4c074516397b89c5cfe9de9857018484f73445ef PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha c8e4020a212cd1ce6692d069eb39d59f40424aa5

deps: V8: cherry-pick fa4cb172cde2 Original commit message: [runtime] Fix Promise.all context promise hooks We have to take the slow path in Promise.all if context promise hooks are set. The fast-path doesn't create intermediate promises by default. Bug: chromium:1204132, v8:11025 Change-Id: Ide92de00a4f6df05e0ddbc8814f6673bd667f426 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2866771 Reviewed-by: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74326} Refs: https://github.com/v8/v8/commit/fa4cb172cde256a1e71d675d81fbb4b85d1e5f66 PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

Stephen Belanger

commit sha f37c26b8a2e10d0a53a60a2fad5b0133ad33308a

async_hooks: use new v8::Context PromiseHook API PR-URL: https://github.com/nodejs/node/pull/36394 Reviewed-By: Bryan English <bryan@bryanenglish.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: James M Snell <jasnell@gmail.com>

view details

push time in 11 hours

Pull request review commentnodejs/node

Update cares_wrap.cc

 #endif  #if defined(__OpenBSD__)+# define AI_ALL 0 # define AI_V4MAPPED 0

Obviously, this was this way before, but I'm wondering why we're not doing

// OpenBSD does not define these
#ifndef AI_ALL
#define AI_ALL 0
#endif
#ifndef AI_V4MAPPED
#define AI_V4MAPPED 0

which seems just a bit more future-proof (because OpenBSD might add support at some point) and flexible (because what if there's other OSes that also don't have these)?

VlkrS

comment created time in 11 hours

pull request commentnodejs/node

async_hooks: use new v8::Context PromiseHook API

Maybe edit the commit message and remove the quoted section? Or rewrite it?

Other option is most likely to just push the commits without the help of node-core-utils

Qard

comment created time in 11 hours

MemberEvent

pull request commentnodejs/node

deps: patch V8 to 9.0.257.25

CI: https://ci.nodejs.org/job/node-test-pull-request/37954/

targos

comment created time in 11 hours

pull request commentnodejs/node

build: add missing torque output sources

CI: https://ci.nodejs.org/job/node-test-pull-request/37953/

richardlau

comment created time in 11 hours

pull request commentnodejs/node

async_hooks: use new v8::Context PromiseHook API

git node land is complaining about the line length in the commit message for https://github.com/nodejs/node/pull/36394/commits/b13e57f66f78a8a4696d23f0548ade619aa714be. Is there a way to shut it up?

Qard

comment created time in 11 hours