2015-05-19 15 views
6

Rozważmy następujące dwa programy:Dlaczego węzeł czasami zawiesza się podczas przydzielania klasy Int8Array?

// works.js 
var buffer = new ArrayBuffer(16777216); 
var HEAP8 = new Int8Array(buffer); 

i

// fails.js 
var HEAP8; 
var buffer = new ArrayBuffer(16777216); 
HEAP8 = new Int8Array(buffer); 

Run node następnie wprowadzić .load works.js. Wszystko wydaje się szczęśliwe. Teraz wyjdź z node.

Ponownie uruchom node i wpisz .load fails.js.

Na moim komputerze ładowanie fails.js interaktywnie prowadzi proces node do zużywania ponad 1 GB pamięci RAM i 100% procesora, a ostateczne polecenie blokuje interpretator na zawsze. works.js po prostu działa i wraca zgodnie z oczekiwaniami.

Czy jest jakiś ważny powód różnicy? A może powinienem napisać raport o błędzie?

Co ciekawe na tyle, bieganie albo skryptu bezpośrednio z wiersza poleceń działa prawidłowo:

node works.js # exits normally 
node fails.js # exits normally 

UPDATE: Używam węzeł 0.12.0 na OS X 10.9.5

+0

Otrzymałem taki sam wynik na OSX z iojs v2.2.1 –

Odpowiedz

1

Czy istnieje jakiś dobry powód różnicy? A może powinienem napisać raport o błędzie?

Wątpię, czy istnieje ku temu dobry powód, powinieneś file a bug.