Hello @guelfey, the dbus is very useful, but I found a potential bug when I used it.
blocking position:
In the test function TestSessionBus, after using the newConn, there is no newConn.Close() to awaken the <-conn.ctx.Done(). So the goroutine will block at the <-conn.ctx.Done(). We can call newConn.Close() to fix the bug probably.
|
newConn, err := SessionBus() |
|
if err != nil { |
|
t.Error(err) |
|
} |
|
if newConn == oldConn { |
|
t.Fatal("Should get a new connection") |
|
} |
you could reproduce the bug using goleak in the func TestSessionBus like this

Hello @guelfey, the dbus is very useful, but I found a potential bug when I used it.
blocking position:
dbus/conn.go
Line 302 in 7623695
In the test function TestSessionBus, after using the newConn, there is no newConn.Close() to awaken the <-conn.ctx.Done(). So the goroutine will block at the <-conn.ctx.Done(). We can call newConn.Close() to fix the bug probably.
dbus/conn_test.go
Lines 26 to 32 in 7623695
you could reproduce the bug using goleak in the func TestSessionBus like this