Closed
Description
-
Version:
Happens on 4.x, 6.x and 7.x. -
Platform:
Alpine Linux 3.4 -
Subsystem:
v8
There's an issue open for docker-node here and it has a backtrace from gdb
.
Running this script reproduces the crash:
#!/usr/bin/env node
'use strict';
const Ajv = require('ajv');
const validator = new Ajv({ allErrors: true, extendedRefs: false });
const STRING_KEY = {
id: '/StringKey',
type: 'string',
maxLength: 10000,
};
validator.addSchema(STRING_KEY);
let schema = {
type: 'object',
properties: {},
};
const NUM_COLUMNS = parseInt(process.argv[2] || '81');
console.log(`Testing with ${NUM_COLUMNS} columns`);
let c;
for (c=0; c<NUM_COLUMNS; c++) {
schema.properties[`s${c}`] = { $ref: '/StringKey'};
}
console.log('schema:', schema);
const validate = validator.compile(schema);
let value = {};
for (c=0; c<NUM_COLUMNS; c++) {
const cS = `s${c}`;
value[cS] = '';
}
console.log('value:', value);
const NUM_ROWS = parseInt(process.argv[3] || '394');
console.log(`Testing with ${NUM_ROWS} rows`);
let r;
for (r=0; r<NUM_ROWS; r++) {
validate(value);
}
console.log('Done');
I used this Dockerfile to run the test (also crashes when using FROM node:4.8.0-alpine
and FROM node:7.7.3-alpine
:
FROM node:6.10.0-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN yarn add ajv
COPY test_ajv.js /usr/src/app
CMD [ "node", "test_ajv.js" ]
And ran these commands:
docker build -t test_ajv .
docker run --rm -it test_ajv sh
node test_ajv.js