-
Notifications
You must be signed in to change notification settings - Fork 13.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Flaky stderr of child processes with libgreen #12827
Comments
Brain dump of what I know so far The basic bug is that often when using libuv, our child subprocesses I haven't been able to minimize it in just libuv C code yet. Some key things I've noticed
After investigation with strace on linux, I've deduced the following
I'm not super familiar with epoll, but it looked like the parent was I'm not 100% certain if that code is relevant to this, but I did find If it helps, I was able to get this strace output: There's a whole lot of stuff there. I modified the child process to Things that I managed to piece together. You'll see a bunch of write()
[1] - https://gist.github.com/anonymous/9751326#file--L1 The first longer gist has a bunch of other successful children, the |
This update brings a few months of changes, but primarily a fix for the following situation. When creating a handle to stdin, libuv used to set the stdin handle to nonblocking mode. This would end up affect this stdin handle across all processes that shared it, which mean that stdin become nonblocking for everyone using the same stdin. On linux, this also affected *stdout* because stdin/stdout roughly point at the same thing. This problem became apparent when running the test suite manually on a local computer. The stdtest suite (running with libgreen) would set stdout to nonblocking mode (as described above), and then the next test suite would always fail for a printing failure (because stdout was returning EAGAIN). This has been fixed upstream, joyent/libuv@342e8c, and this update pulls in this fix. This also brings us in line with a recently upstreamed libuv patch. Closes #12827 Closes #13336 Closes #13355
internal: Construct fewer `AstIdMap`s in lowering
`lint_groups_priority`: ignore lints & groups at the same level Fixes rust-lang#12270 changelog: none
These two programs replicate the flakiness which I've seen on bors for the past few months. This flakiness can also be seen on travis.
This test only fails on linux, not on OSX. It also only fails once every 2000 child processes or so.
It's key that within one instance of
foo
many instances ofbar
are run in parallel. I'm not quite sure why just yet.The text was updated successfully, but these errors were encountered: