google / gvisor

Application Kernel for Containers
https://gvisor.dev
Apache License 2.0
15.86k stars 1.3k forks source link

[checklocks]: source file and line number sometimes not printed #11203

Open kahing opened 21 hours ago

kahing commented 21 hours ago

Description

sometimes I see:

-: return with unexpected locks held (locks: &({param:f}.mu) exclusively)

notice the usual file name and line number is replaced by -.

Steps to reproduce

go: downloading gvisor.dev/gvisor v0.0.0-20241120231458-0add1d20fa0c

I haven't been able to extract a simple repro (the fact that I can't tell where the error is happening makes it harder). I happen to believe these are false positive as well but it's hard to prove without knowing what it's unhappy about :-)

runsc version

docker version (if using docker)

uname

No response

kubectl (if using Kubernetes)

repo state (if built from source)

No response

runsc debug logs (if available)

kahing commented 20 hours ago

ok I found an instance where I can reproduce both the location - issue and I believe to be a false positive:

func (f *F) uselessFunc() {
    f.mu.Lock()
    defer f.mu.Unlock()

    //defer func() {
    //}()
}

If I uncomment the defer, I get an extra -: return with unexpected locks held (locks: &({param:f}.mu) exclusively). Seems only applies if the defer is an anonymous function.