-
Notifications
You must be signed in to change notification settings - Fork 8
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
100% CPU usage just after starting erbium #41
Comments
Hrm. Weird. erbium has a subsystem called "netinfo" that caches networking information from netlink and keeps that cache up to date as new messages come from the kernel. Other parts of erbium then consult netinfo when they need to know the state of the machine. At startup erbium's netinfo asks the kernel to dump the current state from the kernel (going through a little state machine where it asks for each different type of information one at a time), and erbium's startup blocks waiting for the dump to complete before erbium continues it's startup and opens it's listening ports. I suspect that this is stuck there, unable to complete the initialisation for some reason, possibly because it's never receiving the "end of table" message, or it's an infinite loop somewhere trying to parse one of the messages (although I don't see any obvious infinite loops in the code). The backtrace says netinfo is attempting to parse a "newlink" message which means a new interface is seen, or an existing interface is changing it's properties. You should be able to see what's going on by setting "RUST_LOG=trace" or "RUST_LOG=info,netinfo=trace", it should log a bunch of "Found new interface"... messages, possibly with some weird changes between them? erbium doesn't ever change the network interface state, so this can't be a bug of the form of erbium noticing a change, then immediately doing something which causes the network inteface state to change again (and I suspect we're still during startup, so the rest of erbium isn't initialised yet). I thought I'd fixed this yesterday, but, uh, nope. My fix means it's now sitting there waiting for an event that never comes. Urgh. |
Okay, I think this is fixed in 52c81e9 can you see if this helps you? |
Just after I start erbium 1.0.4 on debian, I get the version number in the logs. After that, erbium just uses 100% of one core and spins indefinitely.
Threads:
Backtrace from the thread that appears to be spinning:
The text was updated successfully, but these errors were encountered: