Node: Node.js crash with a fatal error on Date#toLocaleString

Created on 24 Apr 2019  Â·  20Comments  Â·  Source: nodejs/node

  • Version: 12.0.0
  • Platform: Windows (Japanese)
  • Subsystem:

Node.js crash with a fatal error on a call of Date#toLocaleString.
I know that Node.js doesn't contain full ICU, but I didn't expect it to crash with a fatal error.

> node -e "new Date().toLocaleString()"

#
# Fatal error in , line 0
# Check failed: U_SUCCESS(status).
#
#
#
#FailureMessage Object: 000000F1A52FD440
V8 Engine confirmed-bug i18n-api

Most helpful comment

OK, so I verified that the open ICU PR https://github.com/unicode-org/icu/pull/632 applied as a floating patch against ICU 63.x and also upcoming 64.x resolves this. Once the ICU PR lands, I'll open a PR as a floating patch. (@ryzokuken it won't conflict with your PR)

All 20 comments

You need full icu support in order to use Intl-related functionality.

I fixed it using https://github.com/unicode-org/full-icu-npm and doing what it printed when i installed it.

Me too. Reverted to v 11.14.0.

cc @nodejs/i18n @nodejs/platform-windows

Same error here:
v 12.0.0
macos 10.14.4
If it means locale is Russian

Got error:

/* Connecting to MySQL database via db.authenticate() method of sequelize */


#
# Fatal error in , line 0
# Check failed: U_SUCCESS(status).
#
#
#
#FailureMessage Object: 0x7ffeefbfe020Illegal instruction: 4

aaargh.. Confirmed.

I'm going to say it's probably a v8 regression at this poin, probbaly in deps/v8/src//objects/js-date-time-format.cc

LC_ALL=ja node -e "new Date().toLocaleString()"

Problem doesn't appear in 8549ac09b2

Failing to create DateTimePatternGenerator for (say) “fr”. Something’s wrong.
It may be possible that the ’small-icu’ is too small and is missing something.

Fatal error in ../../deps/v8/src/objects/js-date-time-format.cc, line 1095

Check failed: U_SUCCESS(status).

Ooh, this may actually be due to https://unicode-org.atlassian.net/browse/ICU-20558 which we are discussing in ICU-TC at this very instant. If so it's not a v8 bug strictly but was a regression in ICU 63 (and 64)

OK so confirmed, IF it were possible to compile ICU 62 against v12/master's v8 (which it isn't with out HACK HACK HACK => https://github.com/srl295/node/commit/5972e3e5163a5901d10dd4d310675fd788d42d5e ) that this would not be seen.

So I can confirm this is an ICU 63 regression.

@srl295 Node 12 doesn't have V8 74 yet?

@ryzokuken 62/63 are ICU not v8 versions

OK, so I verified that the open ICU PR https://github.com/unicode-org/icu/pull/632 applied as a floating patch against ICU 63.x and also upcoming 64.x resolves this. Once the ICU PR lands, I'll open a PR as a floating patch. (@ryzokuken it won't conflict with your PR)

#
# Fatal error in , line 0
# Check failed: U_SUCCESS(status).
#
#
#
#FailureMessage Object: 000000FB603EDB50

Note that this does not repro with the following, because the issue has to do with the default locale.

node -p "new Intl.DateTimeFormat(['ja']).format(new Date())"

webpack --watch and tsc --watch threw the same error:

#
# Fatal error in , line 0
# Check failed: U_SUCCESS(status).
#
#
#
#FailureMessage Object: 0x7ffc98e77040fish: 'tsc --watch' terminated by signal SIGILL

Issues: #31111

no hotfix for this?

@bluelovers I'm not sure what you are asking. https://github.com/nodejs/node/pull/27415 is the PR that fixes this.

@srl295 sry, i mean a released hotfix like 12.0.x

@bluelovers it's set to be fast tracked, so dot version soon after it lands…?

PR landed. Proposing a release in https://github.com/nodejs/node/pull/27440 for 2019-04-29.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

stevenvachon picture stevenvachon  Â·  3Comments

seishun picture seishun  Â·  3Comments

dfahlander picture dfahlander  Â·  3Comments

cong88 picture cong88  Â·  3Comments

danielstaleiny picture danielstaleiny  Â·  3Comments