Skip to content

zlib: memory leak with gunzipSync #1479

@targos

Description

@targos

I was running a script to read sequentially a lot of gzipped files, and print on stdout the result of a computation for each file.
After about 16'000 files, the process just stopped and Killed was printed on the terminal.

I guess that the memory used by the process increases until the kernel decides to kill it.

I could reduce the code to this testcase:

'use strict';

var zlib = require('zlib');

var data = 'abcdefghijklmnopqrstuvwxyz';
var gzipped = zlib.gzipSync(data);

while (true) {
    var contents = zlib.gunzipSync(gzipped);
    process.stdout.write(contents.toString() + '\n');
}
> node test.js > /dev/null
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
[1]    15363 abort (core dumped)  node test.js > /dev/null

This is what I see with top command just before the process disappears:

> top
15363 mzasso    20   0 10,240g 3,716g  11776 R 111,0 24,2   0:53.59 node

NB: a similar code, that would just write data in the while loop keeps a stable memory consumption

Metadata

Metadata

Assignees

No one assigned

    Labels

    zlibIssues and PRs related to the zlib subsystem.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions