1. 15 12月, 2020 3 次提交
  2. 11 12月, 2020 3 次提交
  3. 09 12月, 2020 2 次提交
  4. 05 12月, 2020 2 次提交
  5. 01 12月, 2020 2 次提交
  6. 18 11月, 2020 1 次提交
  7. 17 11月, 2020 5 次提交
  8. 13 11月, 2020 1 次提交
  9. 10 11月, 2020 1 次提交
    • A
      proc/*: remove proc.Thread.Blocked, refactor memory access (#2206) · 08433760
      Alessandro Arzilli 提交于
      On linux we can not read memory if the thread we use to do it is
      occupied doing certain system calls. The exact conditions when this
      happens have never been clear.
      
      This problem was worked around by using the Blocked method which
      recognized the most common circumstances where this would happen.
      
      However this is a hack: Blocked returning true doesn't mean that the
      problem will manifest and Blocked returning false doesn't necessarily
      mean the problem will not manifest. A side effect of this is issue
      #2151 where sometimes we can't read the memory of a thread and find its
      associated goroutine.
      
      This commit fixes this problem by always reading memory using a thread
      we know to be good for this, specifically the one returned by
      ContinueOnce. In particular the changes are as follows:
      
      1. Remove (ProcessInternal).CurrentThread and
      (ProcessInternal).SetCurrentThread, the "current thread" becomes a
      field of Target, CurrentThread becomes a (*Target) method and
      (*Target).SwitchThread basically just sets a field Target.
      
      2. The backends keep track of their own internal idea of what the
      current thread is, to use it to read memory, this is the thread they
      return from ContinueOnce as trapthread
      
      3. The current thread in the backend and the current thread in Target
      only ever get synchronized in two places: when the backend creates a
      Target object the currentThread field of Target is initialized with the
      backend's current thread and when (*Target).Restart gets called (when a
      recording is rewound the currentThread used by Target might not exist
      anymore).
      
      4. We remove the MemoryReadWriter interface embedded in Thread and
      instead add a Memory method to Process that returns a MemoryReadWriter.
      The  backends will return something here that will read memory using
      the current thread saved by the backend.
      
      5. The Thread.Blocked method is removed
      
      One possible problem with this change is processes that have threads
      with different memory maps. As far as I can determine this could happen
      on old versions of linux but this option was removed in linux 2.5.
      
      Fixes #2151
      08433760
  10. 04 11月, 2020 1 次提交
    • A
      proc/native: fix flakyness of TestStepConcurrentDirect on linux/386 (#2179) · e69d536e
      Alessandro Arzilli 提交于
      TestStepConcurrentDirect will occasionally fail (7% of the time on my
      setup) by either causing the target processs to execute an invalid
      instruction or (more infrequently) by switching to the wrong thread.
      
      Both of those are caused by receiving SIGTRAPs for threads hitting a
      breakpoint after it has been removed (the thread hits the breakpoint,
      we stop everything and remove the breakpoint and only after we receive
      the signal).
      
      Change native.(*nativeProcess).stop to handle SIGTRAPs that can't be
      attributed to a breakpoint, a hardcoded breakpoint in the program's
      text, or manual stops (and therefore are likely caused by phantom
      breakpoint hits).
      Co-authored-by: Na <a@kra>
      e69d536e
  11. 03 11月, 2020 2 次提交
  12. 30 10月, 2020 1 次提交
  13. 22 10月, 2020 3 次提交
  14. 20 10月, 2020 1 次提交
  15. 19 10月, 2020 1 次提交
    • C
      Doc: update KnownBugs and faq. (#2196) · 9b7bc638
      chainhelen 提交于
      1. Remove bug about unsupport systems, because we has pretty error msg.
      2. Add usage for remote debugging.
      
      Relate: #1883, #1829, #861, #1332.
      9b7bc638
  16. 13 10月, 2020 4 次提交
  17. 07 10月, 2020 1 次提交
    • S
      service/dap: add "panic" and "fatal error" as stopped reasons (#2186) · 5632cf92
      Suzy Mueller 提交于
      * service/dap: add "panic" and "fatal error" as stopped reasons
      
      The unrecovered panic and fatal throw breakpoints are not set by the
      user. We now check for these special breakpoints and send appropriate
      stopped reasons to the client.
      
      * Add getter for StopReason
      
      * Set threadID and stop reason correctly
      
      If there is no selected goroutine, no goroutine ID should be set in
      the stopped event.
      
      The stopped reason can be better determined using the process
      StopReason.
      
      * Update panic breakpoint on next test to work with Go 1.13 runtime
      
      When running panic.go with Go1.13, the next line that is stepped to
      after panic('boom') is the defer function in the runtime package. The
      unrecovered panic breakpoint is not hit until after several steps.
      
      The test now steps until the breakpoint is hit, or the program terminates
      without hitting the unrecovered panic breakpoint, in which case it fails.
      
      * Skip breakpoint on next test in < Go 1.14
      5632cf92
  18. 03 10月, 2020 1 次提交
  19. 29 9月, 2020 1 次提交
  20. 28 9月, 2020 1 次提交
  21. 24 9月, 2020 3 次提交
    • A
      proc/tests: keep track of tests skipped due to backend problems (#2178) · 84328ed8
      Alessandro Arzilli 提交于
      * proc/tests: keep track of tests skipped due to backend problems
      
      Mark tests skipped due to backend problems and add a script to keep
      track of them.
      
      * Travis-CI: add ignorechecksum option to chocolatey command
      
      Looks like a configuration problem on chocolatey's end.
      84328ed8
    • A
      proc: use argument position for addr only when injecting function calls (#2181) · 7e00666b
      Alessandro Arzilli 提交于
      * proc: use argument position for addr only when injecting function calls
      
      We can not, in general, use the argument position to determine the
      address of a formal parameter, it will not work in presence of
      optimizations or inlining. In those cases formal arguments could be
      stored in registers.
      
      Fixes #2176
      
      * Travis-CI: add ignorechecksum option to chocolatey command
      
      Looks like a configuration problem on chocolatey's end.
      Co-authored-by: Na <a@kra>
      7e00666b
    • A
      dwarf/line: ignore end_of_sequence entry if AllPCsBetween (#2180) · 2bd38fff
      Alessandro Arzilli 提交于
      * dwarf/line: ignore end_of_sequence entry if AllPCsBetween
      
      Go 1.15 (but possibly prior versions of Go too) has a tendency to use
      an address in the middle of an instruction for this entry, but if it
      was correct it would be after the last instruction of the function
      anyway.
      
      This problem manifests especially frequently as a target crash in
      TestStepConcurrentPtr on linux/arm64 (~6% of the runs).
      
      * Travis-CI: add ignorechecksum option to chocolatey command
      
      Looks like a configuration problem on chocolatey's end.
      Co-authored-by: Na <a@kra>
      2bd38fff