runc create hung when apply systemd cgroup config use godbus. We found the cause is
Object call CallWithContext method In object.go will wait for read <-o.createCall().Done channel.
|
func (o *Object) CallWithContext(ctx context.Context, method string, flags Flags, args ...interface{}) *Call { |
If Conn's send method have no data write the above channel, Object.CallWithContext also will wait forever. Finally, runc create hungs and cause k8s node PLEG notready.
|
if msg.Type == TypeMethodCall && msg.Flags&FlagNoReplyExpected == 0 { |
Maybe it's better to set ch <- call according to if condition even if msg is not expected.
runc createhung when apply systemd cgroup config use godbus. We found the cause isObjectcallCallWithContextmethod In object.go will wait for read <-o.createCall().Done channel.dbus/object.go
Line 38 in fc37d31
If Conn's
sendmethod have no data write the above channel, Object.CallWithContext also will wait forever. Finally,runc createhungs and cause k8s node PLEG notready.dbus/conn.go
Line 541 in fc37d31
Maybe it's better to set
ch <- callaccording toifcondition even ifmsgis not expected.