title: How to debug a deadlocked process written in golang
body: <p>I have a process written in golang that runs as a daemon.</p>
  
  <p>After a few days it stops producing output with no apparent reason.  I think it might be an internal deadlock.  If I do a <code>strace -p &lt;PID&gt;</code> I can see the line</p>
  
  <pre><code>futex(0x9aaba0, FUTEX_WAIT, 0, NULL
  </code></pre>
  
  <p>and apparently that call never ends.  I would like to use the already running process (since I don't know how/when to trigger the bug again) to debug the problem.</p>
  
  <p>How can I see what goroutines are running and where they?  How can I dump from the process whatever other information might be useful to debug the problem?</p>