You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The iojs.exe process in question is running one of http and https servers.
The problem seems to occur if a separate iojs process is running, and is subsequently terminated, e.g. manually by pressing Ctrl+C within a Command Prompt window, then the aforementioned process would terminate as well, whether it is running in the background or in (a separate) Command Prompt window.
When the iojs process terminates unexpected, most of the time there isn't any output to stdin or stderr - so far only once have I see the following output:
Assertion failed: (req_.data) == (this), file c:\workspace\iojs+release\nodes\iojs-win2008r2-release-x64\src\req-wrap-inl.h, line 29
I have encountered this issue on io.js 1.7.1 and 1.8.1 - I have not tried any earlier versions.
In addition, as I first suspected this issue might have something to do with https, I ran other iojs processes to continuously hit the first process via https. It ran fine after churning through ~50GB of data in both occasions (takes about 3 hours), then only when I press Ctrl+C on the tester process would I get the original process to terminate.
I tried running the tester process on a separate PC over the network, and cannot reproduce this problem so far.
Under normal circumstances, the https process would run in the background forever, and every now and then some scheduled iojs process would run to perform some http requests to external resources (NOT to the background https process), and they are expected to exit gracefully.
I suspect there might be occasions when those schedule processes terminate in an erroneous condition, and triggers this random termination behaviour on the https process.
If I were to run 3 tester processes simultaneously on the same machine as the https process, quitting one of them would trigger this issue.
However, the other 2 tester processes would continue to run, albeit not being able to connect to anything obviously, as the https process has (unexpectedly) terminated.
@Fishrock123 any other combination of tests you would like me to try?
I will try and see if I can narrow something down over the weekend - but without any console output, I find a bit hard to even give an educated guess atm.
Just a wild guess, but could you remove the node.exe hardlink and rename iojs.exe to node.exe and check if it still occurs?
I once had a similar issue on Linux with a node process backgrounded through the shell, and launching another node would terminate the first. Launching the second process with iojs did not kill it.
@silverwind on Windows, iojs.exe and node.exe looks like two byte-by-byte identical files (as opposed to hardlinks)
Anyway, I tried removing node.exe, then renaming iojs.exe to node.exe, then run the tests:
// leave this one running
// https server that does fs.createReadStream(...).pipe(response)
> node .
// run for ~5 mins, then Ctrl+C
// hits first server with 10 simultaneous, continuous https requests
// ~400req/s, ~20MB/s
> node test.js
Problem still persists (in that the first process sometimes terminates, and when it does it may print an assertion error).
Assertion failed: (req_.data) == (this), file c:\workspace\iojs+release\nodes\iojs-win2008r2-release-x64\src\req-wrap-inl.h, line 29
@indutny I cherrypicked your commit, rebuilt and the server is still crashing but due to an other error HEAP[iojs.exe]: HEAP: Free Heap block 000000C5AD74CA50 modified at 000000C5AD74CA98 after it was freed
I think @saghul intends to include the original fix for libuv/libuv#339 in libuv 1.5.0 (#1563 (comment)), maybe it' best to wait on that before applying more 'hacks'. 😉
Activity
Fishrock123 commentedon Apr 23, 2015
@alexlamsl can you give us any other info? io.js and windows versions? Memory usage?
alexlamsl commentedon Apr 23, 2015
Sorry @Fishrock123 - mistyped
TABthenEnterand submitted a mostly empty comment above (=.=")alexlamsl commentedon Apr 23, 2015
When the
iojsprocess terminates unexpected, most of the time there isn't any output tostdinorstderr- so far only once have I see the following output:I have encountered this issue on io.js 1.7.1 and 1.8.1 - I have not tried any earlier versions.
Fishrock123 commentedon Apr 23, 2015
@alexlamsl does it happen if you have any two iojs processes running and quite one, or only when one is running http?
alexlamsl commentedon Apr 23, 2015
In addition, as I first suspected this issue might have something to do with
https, I ran otheriojsprocesses to continuously hit the first process viahttps. It ran fine after churning through ~50GB of data in both occasions (takes about 3 hours), then only when I pressCtrl+Con the tester process would I get the original process to terminate.I tried running the tester process on a separate PC over the network, and cannot reproduce this problem so far.
alexlamsl commentedon Apr 23, 2015
Under normal circumstances, the
httpsprocess would run in the background forever, and every now and then some schedulediojsprocess would run to perform somehttprequests to external resources (NOT to the backgroundhttpsprocess), and they are expected to exit gracefully.I suspect there might be occasions when those schedule processes terminate in an erroneous condition, and triggers this random termination behaviour on the
httpsprocess.alexlamsl commentedon Apr 23, 2015
Running just
iojs(the prompt mode?) and pressCtrl+Ctwice to quite does not trigger thehttpsprocess to terminate.alexlamsl commentedon Apr 23, 2015
Something else that is probably irrelevant as well - when I listen to
clientErrorevents in an attempt to debug, I get these every now and then:alexlamsl commentedon Apr 23, 2015
Memory usage is around 60~250MB, on a machine that has 64GB, running Windows Server 2012 R2
alexlamsl commentedon Apr 23, 2015
If I were to run 3 tester processes simultaneously on the same machine as the
httpsprocess, quitting one of them would trigger this issue.However, the other 2 tester processes would continue to run, albeit not being able to connect to anything obviously, as the
httpsprocess has (unexpectedly) terminated.alexlamsl commentedon Apr 23, 2015
I just tried forceful termination of
iojsprocesses which I spawn and does not usehttp- does not reproduce this issue.alexlamsl commentedon Apr 23, 2015
@Fishrock123 any other combination of tests you would like me to try?
I will try and see if I can narrow something down over the weekend - but without any console output, I find a bit hard to even give an educated guess atm.
silverwind commentedon Apr 24, 2015
Just a wild guess, but could you remove the
node.exehardlink and renameiojs.exetonode.exeand check if it still occurs?I once had a similar issue on Linux with a
nodeprocess backgrounded through the shell, and launching anothernodewould terminate the first. Launching the second process withiojsdid not kill it.alexlamsl commentedon Apr 25, 2015
@silverwind on Windows,
iojs.exeandnode.exelooks like two byte-by-byte identical files (as opposed to hardlinks)Anyway, I tried removing
node.exe, then renamingiojs.exetonode.exe, then run the tests:Problem still persists (in that the first process sometimes terminates, and when it does it may print an assertion error).
49 remaining items
mathiask88 commentedon May 5, 2015
@indutny I cherrypicked your commit, rebuilt and the server is still crashing but due to an other error
HEAP[iojs.exe]: HEAP: Free Heap block 000000C5AD74CA50 modified at 000000C5AD74CA98 after it was freedsilverwind commentedon May 5, 2015
@mathiask88 you were using the patch for latest libuv master, https://github.com/proxy/gist.github.com/saghul/52677dba652ab8e78051 is for the version io.js uses (#1563).
indutny commentedon May 5, 2015
Will try figure it out today on io.js level. I think that df28a73 should work after some tweaking.
mathiask88 commentedon May 5, 2015
@silverwind Ah, ok thanks. Then I did everything right ;) However with the libuv patch this problem seems to be gone.
silverwind commentedon May 5, 2015
I think @saghul intends to include the original fix for libuv/libuv#339 in libuv 1.5.0 (#1563 (comment)), maybe it' best to wait on that before applying more 'hacks'. 😉
silverwind commentedon May 5, 2015
And it landed: libuv/libuv@f880023.
deps: update libuv to 1.5.0
bnoordhuis commentedon May 6, 2015
Should be fixed by 04cc03b. Closing, holler if I should reopen it.
silverwind commentedon May 6, 2015
I verified my test case again, seems to be fixed for real this time.
alexlamsl commentedon May 8, 2015
Verified on
iojs 2.0.1. Thanks everyone!stream_base: dispatch reqs in the stream impl
deps: update libuv to 1.5.0
reverofevil commentedon Jan 19, 2016
@silverwind Nah, you didn't.
Node 5.0.0
alexlamsl commentedon Jan 19, 2016
@polkovnikov-ph I believe you are hitting a different bug - may be file a new issue to track it?