logoalt Hacker News

Show HN: Deadlog – almost drop-in mutex for debugging Go deadlocks

12 pointsby dirteater_today at 5:44 PM1 commentview on HN

I've done this same println debugging thing so many times, along with some sed/awk stuff to figure out which call was causing the issue. Now it's a small Go package.

With some `runtime.Callers` I can usually find the spot by just swapping the existing Mutex or RWMutex for this one.

Sometimes I switch the

  mu.Lock()
  defer mu.Unlock()
with the LockFunc/RLockFunc to get more detail

  defer mu.LockFunc()()
I almost always initialize it with `deadlog.New(deadlog.WithTrace(1))` and that's plenty.

Not the most polished library, but it's not supposed to land in any commit, just a temporary debugging aid. I find it useful.


Comments

fractorialtoday at 8:21 PM

Cool utility! I would be remiss if I didn’t mention synctest [1] which is quite excellent for not only async time testing but also catching subtle concurrency bugs.

[1] https://go.dev/blog/synctest