Skip to content

Crash on translate #13

@tmerten

Description

@tmerten

I just tried to run vue translation manager on a bigger project and received a stack trace. (more info below)

./node_modules/.bin/vue-translation-manager translate

<--- Last few GCs --->

[17890:0x104001c00]     1688 ms: Mark-sweep 1192.5 (1214.3) -> 1192.5 (1198.3) MB, 13.9 / 0.0 ms  (average mu = 0.937, current mu = 0.002) last resort GC in old space requested
[17890:0x104001c00]     1700 ms: Mark-sweep 1192.5 (1198.3) -> 1192.5 (1198.3) MB, 11.8 / 0.0 ms  (average mu = 0.874, current mu = 0.002) last resort GC in old space requested


<--- JS stacktrace --->

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

    0: ExitFrame [pc: 0x2df284c4fc7d]
Security context: 0x22367c38c491 <JSObject>
    1: indexOf [0x2236aa524e39](this=0x2236e12b0c01 <Very long string[620757201]>,0x2236bf4a61e1 <String[2]: {{>)
    2: extractTemplateExpression [0x2236e817d731] [/Users/thorsten/src/development/frontend/node_modules/vue-translation-manager/index.js:78] [bytecode=0x2236bf4be529 offset=11](this=0x223671a045a1 <JSGlobal Object>,0x2236e12b0c01 <Very long stri...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

Writing Node.js report to file: report.20190321.123121.17890.001.json
Node.js report completed
 1: 0x100064183 node::Abort() [/usr/local/bin/node]
 2: 0x1000647f1 node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
 3: 0x10017d12f v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0x10017d0d0 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 5: 0x100439f30 v8::internal::Heap::UpdateSurvivalStatistics(int) [/usr/local/bin/node]
 6: 0x10044001a v8::internal::Heap::SetUp() [/usr/local/bin/node]
 7: 0x100420613 v8::internal::Factory::AllocateRawWithImmortalMap(int, v8::internal::PretenureFlag, v8::internal::Map*, v8::internal::AllocationAlignment) [/usr/local/bin/node]
 8: 0x100422175 v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/local/bin/node]
 9: 0x1004feeea v8::internal::String::SlowFlatten(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ConsString>, v8::internal::PretenureFlag) [/usr/local/bin/node]
10: 0x100519ede v8::internal::String::IndexOf(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>, int) [/usr/local/bin/node]
11: 0x10063bc91 v8::internal::Runtime_StringIndexOfUnchecked(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
12: 0x2df284c4fc7d
13: 0x2df284f2a9ce
Abort trap: 6

As the project is private I cannot paste/refer to the code, but a quick grep -R "\$t(" * | wc -l results in about 1200 calls (maybe missing some in plain .js files, but not much) with rather long keys currently (I wanted to setup vue translation manager to refactor this ;) ).

However, I was wondering if it makes sense to add an option to pass a path or a single .vue file to translate.
This way one would be able to translate only parts of the project (which is what I want to do most of the time).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions