Commit Graph

110 Commits

Author SHA1 Message Date
Derek Parker
afa3a9cc6c Remove timeoutWait due to improved scheduler handling 2014-11-26 20:45:29 -06:00
Derek Parker
16392ce609 Improve handling of Go runtime scheduler 2014-11-26 20:35:53 -06:00
Derek Parker
04097af74d Avoid carrying closure around with goroutine 2014-11-25 09:22:34 -06:00
Derek Parker
36d3ecd6e1 Update documentation 2014-11-24 18:19:40 -06:00
Derek Parker
3b2b17938b Improve support for goroutine context switching
Remove any assumption that a wait syscall on a thread id after a
continue will return. Any time we continue a thread, wait for activity
from any thread, because the scheduler may well have switched contexts
on us due to syscall entrace, channel op, etc...

There are several more things to be done here including:

* Potential tracking of goroutine id as we jump around to thread
  contexts.
* Potential of selectively choosing threads to operate on based on the
  internal M data structures, ensuring that our M has an active G.

This commit partially fixes #23 and #24, however there are still some
random hangs that happen and need to be ironed out.
2014-11-24 17:57:52 -06:00
Derek Parker
c4eadc386b Cleanup stopTheWorld arity 2014-11-23 10:44:28 -06:00
Derek Parker
8be3ffc774 Refactor: wrap syscall.Wait4
Wrap syscall.Wait4 and cleanup a few coordination issues.

There are still some issues here where background threads are left
sleeping. This could potentially cause weird issues. There are a few
more things I have planned to cleanup thread coordination issues.
2014-11-22 18:57:26 -06:00
Derek Parker
582833a125 minor cleanup 2014-11-21 17:10:13 -06:00
Derek Parker
32fdfd8a2d lower timeout wait 2014-11-21 17:02:43 -06:00
Derek Parker
aa4f08e18f check tgkill error 2014-11-21 17:01:14 -06:00
Derek Parker
fe24276b15 Use correct tgid for kill in timeoutWait 2014-11-21 15:44:08 -06:00
Derek Parker
6fd1fbabad Cleanup trapWait, include TODO for timeoutWait fix 2014-11-20 17:15:42 -06:00
Michael Gehring
6d32a94cd7 Set stderr on launched processes 2014-11-14 13:52:21 -06:00
Derek Parker
29d0cd0bde Cleanup ignored waitstatus 2014-11-13 19:08:20 -06:00
Michael Gehring
425117a3d6 Stop target process immediately after execve. 2014-11-13 18:52:13 -06:00
Derek Parker
cb5785324d Acknowledge runtime.breakpoint 2014-11-09 18:25:42 -06:00
Derek Parker
d2ebf4dc83 Add some documentation 2014-11-08 07:30:22 -06:00
Derek Parker
665ff49181 Add command to print every thread status 2014-11-07 23:55:25 -06:00
Derek Parker
6b2ee09163 Improve overall thread coordination 2014-11-07 23:45:54 -06:00
Derek Parker
4483b17bd6 Synchronize threads better when breakpoint is hit 2014-11-02 12:49:21 -06:00
Derek Parker
f26839d078 Refactor: cleanup path through addThread 2014-10-27 18:10:45 -05:00
Derek Parker
256b386136 Cleanup AttachThread 2014-10-27 17:55:55 -05:00
Derek Parker
f280ba2a3b minor syntax cleanup 2014-10-27 17:50:47 -05:00
Derek Parker
54788de89b remove silly function 2014-10-27 17:50:19 -05:00
Derek Parker
27a042eab5 cleanup wait function 2014-10-27 17:47:43 -05:00
Derek Parker
d30a104177 cleanup extra newline 2014-10-27 07:33:19 -05:00
Derek Parker
6af32b40e6 cleanup go vet errors 2014-10-25 12:44:35 -05:00
Derek Parker
c625f09a17 Promote breakpoints back up to process 2014-10-25 09:17:05 -05:00
Derek Parker
4c95bf7302 (Mostly) working multithreaded tracing implementation
Areas that need improving:

* Code cleanup
* Promote breakpoints back out of thread context
* Fix potential bug in "Next" implementation, when thread contexts
  switch
2014-10-25 08:59:22 -05:00
Derek Parker
099efeeb9d Allow evaluation of function params 2014-10-17 14:14:55 -05:00
Derek Parker
5331dad93d Rename project 2014-10-15 09:28:22 -05:00
Derek Parker
6b80a726af Remove DWARF .debug_line parser / util funcs 2014-10-15 08:31:01 -05:00
Derek Parker
1760022895 Refactor Next implementation 2014-10-14 09:52:16 -05:00
Derek Parker
58c1f54578 Improve Next implementation
Fix bug involving detecting whether or not we have stepped into another
function when we plan on return from the function we are currently in.
2014-10-13 19:04:38 -05:00
Derek Parker
be7f34ee0c Cleanup: Return err directly if cannot set breakpoint 2014-10-13 08:56:42 -05:00
Derek Parker
248766300d Remove silly function 2014-10-13 08:27:25 -05:00
Derek Parker
dc8c9cc2a4 Optimize Next implementation
Once the program detects that we have stepped into another function,
we simply calculate the return address and then set a breakpoint and
continue to that location, avoiding numerous syscalls.
2014-10-13 08:24:59 -05:00
Derek Parker
09e352bdf7 Refactor: Move Cover method to FDE 2014-10-11 00:52:05 -05:00
Derek Parker
dfacf0770d Fix wrong location bug for Next impl 2014-10-10 21:00:07 -05:00
Derek Parker
5da86a3e31 cleanup 2014-10-09 17:15:10 -05:00
Derek Parker
6a71009954 Fix Next impl
Needs some refactoring and some optimization, but fixes several bugs.
2014-10-09 14:19:10 -05:00
Derek Parker
10a1447ae1 Implement support for pointers to structs 2014-10-07 16:22:26 -05:00
Derek Parker
f0e0d0b8fd Implement support for struct evaluation 2014-10-07 14:32:22 -05:00
Derek Parker
c9cbaea291 Optimize Next implementation
Now that I'm using the step strategy, I put in an optimization where if
stepping into another function, simply find the return address, put a
breakpoint there, and then continue.
2014-10-07 13:57:03 -05:00
Derek Parker
2231c0e7f3 Add reminder for "Next" optimization 2014-10-07 10:33:13 -05:00
Derek Parker
6363ce106a Add comments for PC reset code 2014-10-07 07:58:21 -05:00
Derek Parker
5c301dd9b1 Improve 'in current fn' check for Next impl 2014-10-07 07:57:11 -05:00
Derek Parker
2ce7352aa4 Simplify temp breakpoint cleanup 2014-10-04 18:13:20 -05:00
Derek Parker
f8a65c41c5 Improve next impl -- needs refactoring 2014-10-04 00:52:40 -05:00
Derek Parker
a712a86074 cleanup formatting 2014-09-30 08:49:30 -05:00