emscripten-core/emscripten

MEMFS crashes when writing large file

Open

#13.028 geöffnet am 13. Dez. 2020

Auf GitHub ansehen
 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)C++ (3.519 Forks)batch import
good first bughelp wantedwontfix

Repository-Metriken

Stars
 (27.361 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 19T 10h) (147 gemergte PRs in 30 T)

Beschreibung

Minimal example

// test.c
#include <stdio.h>

int main() {
  FILE *fp = fopen("/tmp/test.txt", "w");
  fseek(fp, 2147483647, SEEK_SET);
  fputs("a", fp);
  fclose(fp);
  return 0;
}

Compiled with emcc with no options.

Actual behavior

Running this on firefox gives

RangeError: invalid array length

while running on Chromium gives

RangeError: Array buffer allocation failed

This happens when MEMFS tries to create a TypedArray that is too large.

Expected behavior

This should be treated as MEMFS running out of disk space and return appropriate errors to wasm.

See also #11381

Contributor Guide