-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
[WIP] Try to fix FreeBSD ccall failure #28201
Conversation
ref #28191 |
@@ -24,7 +24,13 @@ else | |||
UV_FLAGS := --disable-shared $(UV_MFLAGS) | |||
endif | |||
|
|||
$(BUILDDIR)/$(LIBUV_SRC_DIR)/build-configured: $(SRCCACHE)/$(LIBUV_SRC_DIR)/source-extracted | |||
$(SRCCACHE)/$(LIBUV_SRC_DIR)/libuv-unix-signal.patch-applied: $(SRCCACHE)/$(LIBUV_SRC_DIR)/source-extracted |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we do not accept patch files for libuv, please commit the upstream (which we control, and thus can merge easily)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, this PR is just a try.
I can re-send the patch to the upstream repo if it works.
do { | ||
r = write(uv__signal_lock_pipefd[1], &data, sizeof data); | ||
- } while (r < 0 && errno == EINTR); | ||
+ } while (r < 0 && (errno == EINTR || errno == EAGAIN)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
on EAGAIN, this is a likely deadlock about to happen :/
I should some day file a bug report on libuv that this code needs to be redesigned, since I've run into this failure mode before (it's not actually particularly unlikely to trigger).
Do you have access to |
well, sorry that the new build wiped the core file.... |
ha, I got the core file now, and one of the workers is detached from buildbot master. |
|
GDB shew me ENOMEM
|
I Quote from tuning(7), it says the exhaustion is not fatal.
|
So.. can I just make it retry if |
Very likely the test for kernel misbehaviors when eating up all kernel pipe memory ("# test for proper handling of FD exhaustion") 😜. We should probably move this tests (and any others like it) into a separate file ("stress.jl") and run them at the end on worker 1, so they don't interfere with other tests however.
This is a kernel bug. This function is documented to never return ENOMEM. |
If we've uncovered a FreeBSD kernel bug, would someone (@iblis17?) be willing to submit a FreeBSD bug report with steps to reproduce? |
I'm trying to contructing a MWE in C... I will send it to the mailing list freebsd-hackers@ later. |
Awesome. You rock! |
The process got aborted(
ProcessSignaled(6)
).I also found a core file on my CI worker.
So, I guess the core dump happened under pressure, and the libuv init failed.