From 37503cd77a1aba329b10bb9ccd34fb01e7449e39 Mon Sep 17 00:00:00 2001 From: Fedora GDB patches Date: Fri, 27 Oct 2017 21:07:50 +0200 Subject: gdb-follow-child-stale-parent.patch FileName: gdb-follow-child-stale-parent.patch ;; Fix regression by python on ia64 due to stale current frame. ;;=push+jan Problem occurs with python and its get_current_arch () as it selects selected_frame and current_frame while still inferior_ptid is valid for the original parent. But since this place it is already attached and later unwinders try to access it, breaking: -PASS: gdb.threads/watchpoint-fork.exp: child: singlethreaded: breakpoint after the first fork -PASS: gdb.threads/watchpoint-fork.exp: child: singlethreaded: watchpoint after the first fork -PASS: gdb.threads/watchpoint-fork.exp: child: singlethreaded: breakpoint after the second fork -PASS: gdb.threads/watchpoint-fork.exp: child: singlethreaded: watchpoint after the second fork -PASS: gdb.threads/watchpoint-fork.exp: child: singlethreaded: finish +FAIL: gdb.threads/watchpoint-fork.exp: child: singlethreaded: breakpoint after the first fork +FAIL: gdb.threads/watchpoint-fork.exp: child: singlethreaded: watchpoint after the first fork +FAIL: gdb.threads/watchpoint-fork.exp: child: singlethreaded: breakpoint after the second fork +FAIL: gdb.threads/watchpoint-fork.exp: child: singlethreaded: watchpoint after the second fork +FAIL: gdb.threads/watchpoint-fork.exp: child: singlethreaded: finish --- gdb/infrun.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gdb/infrun.c b/gdb/infrun.c index 8c2c424883..c20a02e600 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -749,6 +749,9 @@ follow_fork (void) } else { + /* Possibly referenced PARENT is no longer valid. */ + reinit_frame_cache (); + /* This pending follow fork event is now handled, one way or another. The previous selected thread may be gone from the lists by now, but if it is still around, need -- 2.14.3