Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

node 9.6.+ crashes with custom importer test #2293

Closed
@saper

Description

@saper
Member
  • NPM version (npm -v):
    5.7.1
  • Node version (node -v):
    v9.8.0
    (also v9.7.1, v9.6.1)
  • Node Process (node -p process.versions):
{ http_parser: '2.7.0',
  node: '9.8.0',
  v8: '6.2.414.46-node.21',
  uv: '1.19.2',
  zlib: '1.2.8',
  ares: '1.12.0',
  modules: '59',
  nghttp2: '1.29.0',
  napi: '2',
  openssl: '1.0.2n',
  icu: '60.2',
  unicode: '10.0',
  cldr: '32.0.1',
  tz: '2017c' }
  • Node Platform (node -p process.platform):
    freebsd
  • Node architecture (node -p process.arch):
    ia32
    (also 64-bit)
  • node-sass version (node -p "require('node-sass').info"):
# node -p "require( './' ) .info"
node-sass       4.8.2   (Wrapper)       [JavaScript]
libsass         3.5.1   (Sass Compiler) [C/C++]
  • npm node-sass versions (npm ls node-sass):
# npm ls node-sass
node-sass@4.8.2 /wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2
`-- (empty)

Observing node crashing during npm test. Node version 8 seems to be fine.

Full log:

https://gist.github.com/60940e4411e6ee3959872f513264c268

    .renderSync(importer)
Stacktrace:
   magic1=bbbbbbbb magic2=bbbbbbbb ptr1=0x2c4050b1 ptr2=0x0 ptr3=0x0 ptr4=0x0 ptr5=0x0 ptr6=0x0 ptr7=0x0 ptr8=0x0


==== JS stack trace =========================================

Security context: 0x2c415fdd <JSObject>#0#
    1: renderSync [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/lib/index.js:425] [bytecode=0x2bed1b1d offset=204](this=0x31ea3401 <Object map = 0x5d63bb51>#1#,opts=0x33f96881 <Object map = 0x5d65154d>#2#)
    2: /* anonymous */ [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/test/api.js:1551] [bytecode=0x2becdd19 offset=32](this=0x31ea4585 <Context map = 0x5d646839>#3#,done=0x33f9685d <JSFunction (sfi = 0x529de921)>#4#)
    3: callFnAsync(aka callFnAsync) [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/node_modules/mocha/lib/runnable.js:371] [bytecode=0x529de995 offset=23](this=0x3a48417d <undefined>,fn=0x31ea9681 <JSFunction (sfi = 0x2becd2f5)>#5#)
    4: run [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/node_modules/mocha/lib/runnable.js:318] [bytecode=0x529dbc3d offset=141](this=0x31ea4f51 <Test map = 0x5d6562d1>#6#,fn=0x33f9649d <JSFunction (sfi = 0x529dd261)>#7#)
    5: runTest [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/node_modules/mocha/lib/runner.js:443] [bytecode=0x529dd599 offset=106](this=0x2d73acf1 <Runner map = 0x5d652c55>#8#,fn=0x33f9649d <JSFunction (sfi = 0x529dd261)>#7#)
    6: /* anonymous */(aka /* anonymous */) [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/node_modules/mocha/lib/runner.js:549] [bytecode=0x529dd2ed offset=128](this=0x3a48417d <undefined>,err=0x3a48417d <undefined>,errSuite=0x3a48417d <undefined>)
    7: arguments adaptor frame: 0->2
    8: next(aka next) [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/node_modules/mocha/lib/runner.js:361] [bytecode=0x529db5a9 offset=27](this=0x3a48417d <undefined>,suite=0x3a48417d <undefined>)
    9: /* anonymous */(aka /* anonymous */) [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/node_modules/mocha/lib/runner.js:371] [bytecode=0x529db6d9 offset=55](this=0x3a48417d <undefined>,err=0x3a48417d <undefined>)
   10: arguments adaptor frame: 0->1
   11: next(aka next) [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/node_modules/mocha/lib/runner.js:295] [bytecode=0x529d9dc9 offset=32](this=0x3a48417d <undefined>,i=0)
   12: _onImmediate [/wrkdirs/usr/ports/textproc/node-sass/work/node-sass-4.8.2/node_modules/mocha/lib/runner.js:339] [bytecode=0x529d9bc1 offset=8](this=0x33f963b5 <Immediate map = 0x5d6626c1>#9#)
   13: runCallback(aka runCallback) [timers.js:763] [bytecode=0x529d9a5d offset=49](this=0x3a48417d <undefined>,timer=0x33f963b5 <Immediate map = 0x5d6626c1>#9#)
   14: tryOnImmediate(aka tryOnImmediate) [timers.js:734] [bytecode=0x529d980d offset=11](this=0x3a48417d <undefined>,immediate=0x33f963b5 <Immediate map = 0x5d6626c1>#9#,oldTail=0x33f963b5 <Immediate map = 0x5d6626c1>#9#,count=1,refCount=1)
   15: processImmediate [timers.js:716] [bytecode=0x529d94e5 offset=139](this=0x43104161 <process map = 0x5d6081a1>#10#)

Activity

self-assigned this
on Mar 16, 2018
changed the title [-]node 9.6.+ crashes with custom importer test[/-] [+]node 9.6.+ crashes with custom async importer test[/+] on Mar 16, 2018
changed the title [-]node 9.6.+ crashes with custom async importer test[/-] [+]node 9.6.+ crashes with custom importer test[/+] on Mar 16, 2018
changed the title [-]node 9.6.+ crashes with custom importer test[/-] [+]node 9.6.+ crashes with custom importer test [FreeBSD][/+] on Mar 16, 2018
saper

saper commented on Mar 16, 2018

@saper
MemberAuthor

Could not reproduce on Fedora 25 with node v9.6.1

saper

saper commented on Mar 16, 2018

@saper
MemberAuthor

C++ stack trace:

(gdb) bt
#0  v8::base::OS::Abort () at ../deps/v8/src/base/platform/platform-posix.cc:248
#1  0x0000000000cd3f4e in v8::internal::Isolate::PushCodeObjectsAndDie (this=<optimized out>, magic1=3735929054, ptr1=0x3ecb58083b19, ptr2=0x0, ptr3=0x0, ptr4=0x0, ptr5=0x8, ptr6=<optimized out>,
    ptr7=<optimized out>, ptr8=0x246, magic2=<optimized out>) at ../deps/v8/src/isolate.cc:366
#2  0x0000000000cd3e1a in v8::internal::Isolate::PushStackTraceAndDie (this=0x804c3f000, magic1=<optimized out>, ptr1=0x3ecb58083b19, ptr2=0x0, ptr3=0x0, ptr4=0x0, ptr5=0x0, ptr6=0x0, ptr7=0x0,
    ptr8=0x0, magic2=3149642683) at ../deps/v8/src/isolate.cc:335
#3  0x0000000000cd3d0b in v8::internal::Isolate::PushStackTraceAndDie (this=0x0, magic1=<error reading variable: Value out of range.>, ptr1=0x0, ptr2=0x1, magic2=<optimized out>)
    at ../deps/v8/src/isolate.cc:314
#4  0x0000000000d026eb in v8::internal::LookupIterator::GetRootForNonJSReceiver (isolate=<optimized out>, index=<optimized out>, receiver=..., isolate=<optimized out>, receiver=...,
    index=<optimized out>) at ../deps/v8/src/lookup.cc:226
#5  0x000000000094418b in v8::internal::LookupIterator::GetRoot (index=4294967295, isolate=<optimized out>, receiver=...) at ../deps/v8/src/lookup.h:370
#6  v8::internal::LookupIterator::LookupIterator (this=<optimized out>, isolate=<optimized out>, receiver=..., name=..., configuration=<optimized out>) at ../deps/v8/src/lookup.h:53
#7  v8::internal::LookupIterator::LookupIterator (this=0x7fffffffa3f0, configuration=v8::internal::LookupIterator::PROTOTYPE_CHAIN, receiver=..., name=...) at ../deps/v8/src/lookup.h:49
#8  0x0000000000d01e3c in v8::internal::LookupIterator::PropertyOrElement (isolate=<optimized out>, success=<optimized out>, configuration=<optimized out>, receiver=..., key=...)
    at ../deps/v8/src/lookup.cc:73
#9  0x0000000000e8a55e in v8::internal::Runtime::GetObjectProperty (isolate=0x804c3f000, is_found_out=0x0, object=..., key=...) at ../deps/v8/src/runtime/runtime-object.cc:31
#10 0x00000000008ca7da in v8::Object::Get (this=0x804d396a8, context=..., key=...) at ../deps/v8/src/api.cc:4603
#11 0x0000000807cbccdf in Nan::Get (obj=..., key=...) at ../node_modules/nan/nan_maybe_43_inl.h:152
#12 CustomImporterBridge::get_importer_entry (this=<optimized out>, object=...) at ../src/custom_importer_bridge.cpp:76
#13 0x0000000807cbcb5f in CustomImporterBridge::post_process_return_value (this=0x804c785c0, returned_value=...) at ../src/custom_importer_bridge.cpp:51
#14 0x0000000807cba714 in CallbackBridge<Sass_Import**, void*>::operator() (this=0x804c785c0, argv=...) at ../src/callback_bridge.h:109
#15 0x0000000807cb7d34 in sass_importer (cur_path=<optimized out>, cb=<optimized out>, comp=<optimized out>) at ../src/binding.cpp:19
#16 0x0000000807d0215a in Sass::Context::call_loader (this=0x806c44400, load_path=..., ctx_path=0x804c1b4b0 "stdin", pstate=..., imp=0x804c1c840, importers=..., only_one=<optimized out>)
    at context.cpp:427
#17 0x0000000807dcb8b3 in Sass::Context::call_importers (this=0x806c44400, load_path=..., ctx_path=0x0, pstate=..., imp=0xfffff8003d1c64b0) at ./context.hpp:33
#18 0x0000000807da171c in Sass::Parser::parse_import (this=0x7fffffffbfc8) at parser.cpp:375
#19 0x0000000807d9bc42 in Sass::Parser::parse_block_node (this=0x7fffffffbfc8, is_root=<optimized out>) at parser.cpp:248
#20 0x0000000807d9a342 in Sass::Parser::parse_block_nodes (this=0x7fffffffbfc8, is_root=<optimized out>) at parser.cpp:196
#21 0x0000000807d9993d in Sass::Parser::parse (this=0x7fffffffbfc8) at parser.cpp:122
#22 0x0000000807d002b2 in Sass::Context::register_resource (this=0x806c44400, inc=..., res=..., prstate=<optimized out>) at context.cpp:323
#23 0x0000000807d04284 in Sass::Data_Context::parse (this=0x806c44400) at context.cpp:627
#24 0x0000000807cc6d97 in Sass::sass_parse_block (this=0x804e35298, compiler=0x804e35280, rhs=...) at sass_context.cpp:238
#25 sass_compiler_parse (compiler=0x804e35280) at sass_context.cpp:487
#26 0x0000000807cc6b2a in sass_compile_context (c_ctx=0x804d24500, cpp_ctx=0x0) at sass_context.cpp:375
#27 0x0000000807cb9e9c in render_sync (info=...) at ../src/binding.cpp:290
#28 0x0000000807cba419 in Nan::imp::FunctionCallbackWrapper (info=...) at ../node_modules/nan/nan_callbacks_12_inl.h:174
#29 0x00000000008e9010 in v8::internal::FunctionCallbackArguments::Call (this=0x7fffffffc758, f=0x807cba390 <Nan::imp::FunctionCallbackWrapper(v8::FunctionCallbackInfo<v8::Value> const&)>)
    at ../deps/v8/src/api-arguments.cc:25
#30 0x0000000000946217 in v8::internal::(anonymous namespace)::HandleApiCallHelper<false> (isolate=0x804c3f000, args=..., function=..., new_target=..., fun_data=..., receiver=...)
    at ../deps/v8/src/builtins/builtins-api.cc:112
#31 0x0000000000945894 in v8::internal::Builtin_Impl_HandleApiCall (isolate=0x804c3f000, args=...) at ../deps/v8/src/builtins/builtins-api.cc:142

Looks like crash occurs when trying to get "map" attribute of the importer entry:

Sass_Import* CustomImporterBridge::get_importer_entry(const v8::Local<v8::Object>& object) const {
auto returned_file = Nan::Get(object, Nan::New<v8::String>("file").ToLocalChecked());
auto returned_contents = Nan::Get(object, Nan::New<v8::String>("contents").ToLocalChecked()).ToLocalChecked();
auto returned_map = Nan::Get(object, Nan::New<v8::String>("map").ToLocalChecked());

What is interesting is that returned_map here should be a Maybe<>.

xzyfer

xzyfer commented on Mar 17, 2018

@xzyfer
Contributor

I've reproduced this with LibSass 3.5.2 on Node 9.8.0 on Windows

https://ci.appveyor.com/project/sass/node-sass/build/2743/job/ek6q44qn4ekmgoj9

xzyfer

xzyfer commented on Mar 17, 2018

@xzyfer
Contributor

Interesting, rebuilding a previously passing build (also 9.6.0) resulted in a failure. Using LibSass 3.5.1.

2 remaining items

xzyfer

xzyfer commented on Mar 17, 2018

@xzyfer
Contributor

Able to reproduce this with nan@2.10.0 on OSX. I've filed an issues upstream nodejs/nan#755.

saper

saper commented on Mar 17, 2018

@saper
MemberAuthor

I am also considering a possibility that we have always had a bug in our code which just got uncovered.

changed the title [-]node 9.6.+ crashes with custom importer test [FreeBSD][/-] [+]node 9.6.+ crashes with custom importer test[/+] on Mar 17, 2018
saper

saper commented on Mar 17, 2018

@saper
MemberAuthor

Thank you @kkoopa - it seems to work better now!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @saper@xzyfer

      Issue actions

        node 9.6.+ crashes with custom importer test · Issue #2293 · sass/node-sass