Sitelet https://github.com/nodejs/node/issues/4865
Skip to content

octane benchmark faults on ppc64le #4865

Description

@thilo-maurer

Running Octane 2.0 Benchmark (from https://www.npmjs.com/package/benchmark-octane) on Ubuntu 14.04.3 on ppc64le (POWER 8) faults with following messages. Looks the error is at the beginning of the RegExp benchmark.

    hostname     : pnode5
    node version : v0.10.25
      V8 version : 3.14.5.9
 platform & arch : linux ppc64

 config : { target_defaults: 
   { cflags: [],
     default_configuration: 'Release',
     defines: [],
     include_dirs: [],
     libraries: 
      [ '-lz',
        '-lcares',
        '-lv8',
        '-lssl',
        '-lcrypto' ] },
  variables: 
   { clang: 0,
     gcc_version: 48,
     host_arch: 'ppc64',
     node_byteorder: 'little',
     node_install_npm: false,
     node_prefix: '/usr',
     node_shared_cares: true,
     node_shared_http_parser: false,
     node_shared_libuv: false,
     node_shared_openssl: true,
     node_shared_v8: true,
     node_shared_zlib: true,
     node_tag: '',
     node_unsafe_optimizations: 0,
     node_use_dtrace: false,
     node_use_etw: false,
     node_use_openssl: true,
     node_use_perfctr: false,
     node_use_systemtap: false,
     python: '/usr/bin/python',
     target_arch: 'ppc64',
     v8_enable_gdbjit: 0,
     v8_no_strict_aliasing: 1,
     v8_use_snapshot: false } }

Richards            : 5821
DeltaBlue           : 7967
Crypto              : 4995
RayTrace            : 5737
EarleyBoyer         : 12089
Stacktrace (dead0000-dead0001) 0x5fe04141 0x5fe04101: 
==== Stack trace ============================================

Security context: 0x42106b71 <JS Object>#0#
    1: DefaultString [native runtime.js:646] (this=0x42107c19 <JS Object>#1#,a=0x5fe04141 <Map(elements=0)>#2#)
    2: NonStringToString(aka NonStringToString) [native runtime.js:562] (this=0x42104121 <undefined>,a=0x5fe04141 <Map(elements=0)>#2#)
    3: exec [native regexp.js:~168] (this=0x5170ae61 <JS RegExp>#3#,a=0x5fe04141 <Map(elements=0)>#2#)
    4: Exec [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:~74] (this=0x42106c91 <JS Global Object>#4#,re=0x5170ae61 <JS RegExp>#3#,string=0x5fe04141 <Map(elements=0)>#2#)
    5: runBlock0(aka runBlock0) [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:~133] (this=0)
    6: run [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:1788] (this=0x51704ac1 <a RegExpBenchmark>#5#)
    7: RegExpRun [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:53] (this=0x42106c91 <JS Global Object>#4#)
    8: Setup(aka RegExpSetup) [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:49] (this=0x3fff80564111 <a Benchmark>#6#)
    9: RunNextSetup [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/base.js:356] (this=0x42106c91 <JS Global Object>#4#)
   10: RunStep [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/base.js:389] (this=0x3fff80564171 <a BenchmarkSuite>#7#,runner=0x53bc5619 <an Object>#8#)
   11: RunStep [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/base.js:157] (this=0x42106c91 <JS Global Object>#4#)
   12: RunSuites [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/base.js:173] (this=0x4215a911 <JS Function BenchmarkSuite>#9#,runner=0x53bc5619 <an Object>#8#,skipBenchmarks=0x42104121 <undefined>)
   13: arguments adaptor frame: 1->2
   14: run [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane.js:112] (this=0x53bc3da1 <an Object>#10#)
   15: /* anonymous */ [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/run.js:3] (this=0x3fff8050d051 <an Object>#11#,exports=0x3fff8050d051 <an Object>#11#,require=0x3fff8050cf61 <JS Function require>#12#,module=0x3fff8050ce91 <a Module>#13#,__filename=0x3ba6cb29 <String[64]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/run.js>,__dirname=0x3fff8050d029 <String[57]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane>)
   17: _compile [module.js:456] (this=0x3fff8050ce91 <a Module>#13#,content=0x3ba6cc59 <String[56]\: var octane = require('./lib/octane.js');\n\noctane.run();\n>,filename=0x3ba6cb29 <String[64]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/run.js>)
   18: .js [module.js:474] (this=0x3fff8050ce79 <an Object>#14#,module=0x3fff8050ce91 <a Module>#13#,filename=0x3ba6cb29 <String[64]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/run.js>)
   19: load [module.js:356] (this=0x3fff8050ce91 <a Module>#13#,filename=0x3ba6cb29 <String[64]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/run.js>)
   20: _load [module.js:312] (this=0x3fff8050cf19 <JS Function Module>#15#,request=0x5e3305f1 <String[9]: ../run.js>,parent=0x3fff8050d089 <a Module>#16#,isMain=0x42104121 <undefined>)
   21: arguments adaptor frame: 2->3
   22: require [module.js:364] (this=0x3fff8050d089 <a Module>#16#,path=0x5e3305f1 <String[9]: ../run.js>)
   23: require [module.js:380] (this=0x42106c91 <JS Global Object>#4#,path=0x5e3305f1 <String[9]: ../run.js>)
   24: /* anonymous */ [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/bin/benchmark-octane2:3] (this=0x3fff8050d201 <an Object>#17#,exports=0x3fff8050d201 <an Object>#17#,require=0x3fff8050d111 <JS Function require>#18#,module=0x3fff8050d089 <a Module>#16#,__filename=0x3ba6ccc9 <String[79]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/bin/benchmark-octane2>,__dirname=0x3fff8050d1d9 <String[61]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/bin>)
   26: _compile [module.js:456] (this=0x3fff8050d089 <a Module>#16#,content=0x3ba6cdf9 <String[24]\: \n\nrequire('../run.js');\n>,filename=0x3ba6ccc9 <String[79]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/bin/benchmark-octane2>)
   27: .js [module.js:474] (this=0x3fff8050ce79 <an Object>#14#,module=0x3fff8050d089 <a Module>#16#,filename=0x3ba6ccc9 <String[79]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/bin/benchmark-octane2>)
   28: load [module.js:356] (this=0x3fff8050d089 <a Module>#16#,filename=0x3ba6ccc9 <String[79]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/bin/benchmark-octane2>)
   29: _load [module.js:312] (this=0x3fff8050cf19 <JS Function Module>#15#,request=0x3ba6ce71 <String[79]: /gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/bin/benchmark-octane2>,parent=0x42104101 <null>,isMain=0x42104141 <true>)
   30: runMain [module.js:497] (this=0x3fff8050cf19 <JS Function Module>#15#)
   31: startup [node.js:119] (this=0x42106c91 <JS Global Object>#4#)
   32: /* anonymous */ [node.js:902] (this=0x42106c91 <JS Global Object>#4#,process=0x3fff8050d3d1 <a process>#19#)

==== Details ================================================

[1]: DefaultString [native runtime.js:646] (this=0x42107c19 <JS Object>#1#,a=0x5fe04141 <Map(elements=0)>#2#) {
  // stack-allocated locals
  var b = 0x42104121 <undefined>
  var c = 0x42104121 <undefined>
  var d = 0x42104121 <undefined>
  var e = 0x42104121 <undefined>
  // expression stack (top to bottom)
  [05] : 0x5e304819 <String[8]: toString>
  [04] : 0x5fe04141 <Map(elements=0)>#2#
--------- s o u r c e   c o d e ---------
function DefaultString(a){?var b=a.toString;?if((%_ClassOf(b)==='Function')){?var c=%_CallFunction(a,b);?if(%IsPrimitive(c))return c;?}??var d=a.valueOf;?if((%_ClassOf(d)==='Function')){?var e=%_CallFunction(a,d);?if(%IsPrimitive(e))return e;?}??throw %MakeTypeError('cannot_convert_to_primitive',[]);?}
-----------------------------------------
}

[2]: NonStringToString(aka NonStringToString) [native runtime.js:562] (this=0x42104121 <undefined>,a=0x5fe04141 <Map(elements=0)>#2#) {
  // expression stack (top to bottom)
  [02] : 0x5fe04141 <Map(elements=0)>#2#
  [01] : 0x42107c19 <JS Object>#1#
  [00] : 0x42107c19 <JS Object>#1#
--------- s o u r c e   c o d e ---------
function NonStringToString(a){?if((typeof(a)==='number'))return %_NumberToString(a);?if((typeof(a)==='boolean'))return a?'true':'false';?if((typeof(a)==='undefined'))return'undefined';?return((a===null))?'null':%ToString(%DefaultString(a));?}
-----------------------------------------
}

[3]: exec [native regexp.js:~168] (this=0x5170ae61 <JS RegExp>#3#,a=0x5fe04141 <Map(elements=0)>#2#) {
// optimized frame
}
[4]: Exec [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:~74] (this=0x42106c91 <JS Global Object>#4#,re=0x5170ae61 <JS RegExp>#3#,string=0x5fe04141 <Map(elements=0)>#2#) {
// optimized frame
}
[5]: runBlock0(aka runBlock0) [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:~133] (this=0) {
// optimized frame
}
[6]: run [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:1788] (this=0x51704ac1 <a RegExpBenchmark>#5#) {
  // stack-allocated locals
  var i = 1
  var sum = 0
  // expression stack (top to bottom)
  [04] : 0
  [03] : 0x5170ad09 <JS Function runBlock0>#20#
  [02] : 0
--------- s o u r c e   c o d e ---------
function run() {?    for (var i = 0; i < 5; i++) {?      var sum = 0;?      sum += runBlock0();?      sum += runBlock1();?      sum += runBlock2();?      sum += runBlock3();?      sum += runBlock4();?      sum += runBlock5();?      sum += runBlock6();?      sum += runBlock7();?      sum += runBlock8();?      su...

-----------------------------------------
}

[7]: RegExpRun [/gpfs/home/tmaurer/src/node.js-benchmark/benchmark-octane/lib/octane/regexp.js:53] (this=0x42106c91 <JS Global Object>#4#) {
  // expression stack (top to bottom)
  [00] : 0x51704ac1 <a RegExpBenchmark>#5#
--------- s o u r c e   c o d e ---------
function RegExpRun() {?  regExpBenchmark.run();?}
----
Trace/breakpoint trap

Activity

  1. added
    v8 engineIssues and PRs related to the V8 dependency.
    on Jan 25, 2016
  2. bnoordhuis commented on Jan 26, 2016

    @bnoordhuis
    Member

    Is there a reason you're using v0.10.25? That's not even the latest v0.10 release, let alone the latest stable.

  3. gareth-ellis commented on Jan 27, 2016

    @gareth-ellis
    Member

    I've done a bit of digging and it seems that ubuntu delivers 0.10.25 via the package manager on ppcle. I went back and ran some old builds and found that the regex test in octane works in 0.10.31 and later, and as such in all 0.12 and 4 builds.

    So it seems this bug is fixed upstream

  4. bnoordhuis commented on Jan 27, 2016

    @bnoordhuis
    Member

    Thanks for the analysis, @gareth-ellis. I'll close the issue then.

    @thilo-maurer You may want to report this to Ubuntu, perhaps they can back-port the necessary fixes.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    invalidIssues and PRs that are invalid.v8 engineIssues and PRs related to the V8 dependency.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions