mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
gvisor/ptrace: grub initial thread registers only once
PiperOrigin-RevId: 255465635
This commit is contained in:
@@ -155,6 +155,7 @@ func newSubprocess(create func() (*thread, error)) (*subprocess, error) {
|
||||
errChan <- err
|
||||
return
|
||||
}
|
||||
firstThread.grabInitRegs()
|
||||
|
||||
// Ready to handle requests.
|
||||
errChan <- nil
|
||||
@@ -179,6 +180,7 @@ func newSubprocess(create func() (*thread, error)) (*subprocess, error) {
|
||||
|
||||
// Detach the thread.
|
||||
t.detach()
|
||||
t.initRegs = firstThread.initRegs
|
||||
|
||||
// Return the thread.
|
||||
r <- t
|
||||
@@ -269,7 +271,9 @@ func (t *thread) attach() {
|
||||
|
||||
// Initialize options.
|
||||
t.init()
|
||||
}
|
||||
|
||||
func (t *thread) grabInitRegs() {
|
||||
// Grab registers.
|
||||
//
|
||||
// Note that we adjust the current register RIP value to be just before
|
||||
|
||||
@@ -235,6 +235,7 @@ func attachedThread(flags uintptr, defaultAction linux.BPFAction) (*thread, erro
|
||||
return nil, fmt.Errorf("wait failed: expected SIGSTOP, got %v", sig)
|
||||
}
|
||||
t.attach()
|
||||
t.grabInitRegs()
|
||||
|
||||
return t, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user